关于数据挖掘:R语言高维数据的主成分pca-tSNE算法降维与可视化分析案例报告附代码数据

原文链接:http://tecdat.cn/?p=6592

咱们被要求在本周提供一个报告,该报告将联合pca, t-SNE算法等数值办法

升高维度有两个次要用例:数据摸索和机器学习。它对于数据摸索很有用,因为维数缩小到几个维度(例如2或3维)容许可视化样本

而后能够应用这种可视化来从数据取得见解(例如,检测聚类并辨认异样值)。对于机器学习,降维是有用的,因为在拟合过程中应用较少的特色时,模型通常会更好地概括。

在这篇文章中,咱们将钻研降维技术:

  • 主成分剖析(PCA): 最风行的降维办法
  • 核PCA:PCA的一种变体,容许非线性
  • t-SNE t散布随机邻域嵌入: 非线性降维技术

这些办法之间的要害区别在于PCA输入旋转矩阵,能够利用于任何其余矩阵以转换数据。 

加载数据集

  咱们能够通过以下形式加载数据集:

 
df <- read.csv(textConnection(f), header=T)
# 抉择变量
features <- c("Body", "Sweetness", "Smoky",
            "Medicinal", "Tobacco", "Honey",
            "Spicy", "Winey", "Nutty",
            "Malty", "Fruity", "Floral")
feat.df <- df[, c("Distillery", features)]

对于后果的假如

在咱们开始缩小数据的维度之前,咱们应该思考数据。

因为来自邻近酿酒厂的威士忌应用相似的蒸馏技术和资源,他们的威士忌也有相似之处。
为了验证这一假如,咱们将测试来自不同地区的酿酒厂之间威士忌特色的均匀表白是否不同。为此,咱们将进行MANOVA测试:

##           Df Pillai approx F num Df den Df    Pr(>F)    
## Region     5 1.2582   2.0455     60    365 3.352e-05 ***
## Residuals 80                                            
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

测验统计量在5%程度上是显着的,因而咱们能够回绝零假如(区域对特色没有影响)。

酿酒厂的地理位置

因为区域对威士忌起着重要作用,咱们将通过绘制其纬度和经度来摸索数据集中的酿酒厂所在的地位。以下苏格兰威士忌地区存在:

 

 

PCA

应用PCA可视化威士忌数据集:

 

 

在第二个图中,咱们将绘制酿酒厂的标签,以便咱们能够更具体地解释类别。

 


点击题目查阅往期内容

R语言主成分PCA、因子分析、聚类对地区经济钻研剖析重庆市经济指标

左右滑动查看更多

01

02

03

04

总的来说,主成分仿佛反映了以下特色:

  • PC1示意滋味强度: 如烟熏味,药用味(如Laphroaig或Lagavulin)与温和滋味(如Auchentoshan或Aberlour)
  • PC2示意滋味复杂性: 即滋味特色(例如Glenfiddich或Auchentoshan)与更具特色的滋味特色(例如Glendronach或Macallan)

 

##   Cluster Campbeltown Highlands Islands Islay Lowlands Speyside
## 1       1           2        17       2     2        0       19
## 2       2           0         8       2     1        3       22
## 3       3           0         2       2     4        0        0

对类别的正当解释如下:

  • 群集1: 复合威士忌,次要来自Highlands / Speyside
  • 群集2: 平衡的威士忌,次要来自斯佩塞德和洼地
  • 群集3: 烟熏威士忌,次要来自艾莱岛

可视化有两个乏味的察看后果:

  • Oban和Clynelish是惟一一个相似于艾莱岛酿酒厂口味的洼地酿酒厂。
  • Highland和Speyside威士忌次要在一个方面不同。在一个极其是平滑,平衡的威士忌,如Glenfiddich。在另一个极其是具备更有特色的滋味,如麦卡伦。

这蕴含了咱们对PCA的可视化钻研。咱们将在本文开端钻研应用PCA进行预测。

核PCA

内核PCA(KPCA)是PCA的扩大,它利用了内核函数,这些函数在反对向量机上是家喻户晓的。通过将数据映射到再现内核Hilbert空间,即便它们不是线性可分的,也能够拆散数据。

 

在R中应用KPCA

要执行KPCA,咱们应用包中的kpca函数kernlab

应用此核,能够按如下形式缩小维数:

 

检索到新维度后,咱们当初能够在转换后的空间中可视化数据:

 

就可视化而言,后果比咱们应用惯例PCR取得的后果略微毛糙一些。尽管如此,来自艾莱岛的威士忌拆散得很好,咱们能够看到斯佩塞特威士忌的集群,而洼地威士忌则散布较广。

 

T-SNE

t-SNE已成为一种十分风行的数据可视化办法。

 

应用t-SNE可视化数据

在这里,咱们将威士忌数据集的维度升高到两个维度:

与PCA相比,簇的拆散更加清晰,特地是对于簇1和簇2。

对于t-SNE,咱们必须进行解释:

  • V1示意滋味复杂性。这里的异样值是右侧的烟熏艾莱威士忌(例如Lagavulin)和左侧简单的洼地威士忌(例如麦卡伦)。
  • V2示意烟熏/药用滋味。

应用PCA进行监督学习

PCA是独立实现的,这一点至关重要。因而,须要遵循以下办法:

  1. 在测试数据集上执行PCA并在转换后的数据上训练模型。
  2. 将训练数据中的学习PCA变换利用于测试数据集,并评估模型在变换数据上的性能。

为此,咱们将应用ķ最近邻模型。此外,因为所有的变量是在特色空间[0,4]。咱们必须优化k,因而咱们还预留了用于确定此参数的验证集。

PCA转换

首先,咱们编写一些函数来验证预测的性能。

get.accuracy <- <strong>function</strong>(preds, labels) {
    correct.idx <- which(preds == labels)
    accuracy <- length(correct.idx) / length(labels)
    return (accuracy)
}
 

在上面的代码中,咱们将对训练数据执行PCA并钻研解释的方差以抉择适合的维数

##         [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## N_dim      1    2    3    4    5    6    7    8    9    10    11    12
## Cum_Var   22   41   52   63   72   79   85   90   94    97    99   100

因为有足够百分比的方差用3维能够解释,咱们将应用该值来设置训练,测试和验证数据集。

当初咱们曾经将训练,验证和测试集转换为PCA空间,咱们能够应用k最近街坊。

## [1] "PCA+KNN accuracy for k = 9 is: 0.571"

让咱们钻研一下应用PCA的模型是否优于基于原始数据的模型:

## [1] "KNN accuracy for k = 7 is: 0.524"

 

 # 威士忌特色的方差
print(diag(var(data))) 
##      Body Sweetness     Smoky Medicinal   Tobacco     Honey     Spicy 
## 0.8656635 0.5145007 0.7458276 0.9801642 0.1039672 0.7279070 0.6157319 
##     Winey     Nutty     Malty    Fruity    Floral 
## 0.8700410 0.6752394 0.3957592 0.6075239 0.7310534

当初咱们只能依据他们的口味确定苏格兰威士忌的六个区域,但问题是咱们是否仍能取得更好的体现。咱们晓得很难预测数据集中代表性有余的苏格兰地区。那么,如果咱们局限于更少的地区,会产生什么?

  • 岛威士忌与艾莱岛威士忌组合在一起
  • Lowland / Campbeltown威士忌与Highland威士忌组合在一起

通过这种形式,问题缩小到三个区域:Island / Islay威士忌,Highland / Lowland / Campbeltown威士忌和Speyside威士忌。再次进行剖析:

## [1] "PCA+KNN accuracy for k = 13 is: 0.619"

咱们能够得出61.9%的准确度,咱们能够得出结论,将咱们样品较少的威士忌区域分组的确是值得的。

KPCA用于监督学习

利用KPCA进行预测并不像利用PCA那样简略。在PCA中,特征向量是在输出空间中计算的,但在KPCA中,特征向量来自核希尔伯特空间。因而,当咱们不晓得所应用的显式映射函数ϕ,不可能简略地转换新数据点。

 

# 留神:这会高估实际效果
accuracy <- get.accuracy(preds.kpca, df$Region[samp.test])

 

摘要

咱们看到了如何应用PCA,KPCA和t-SNE来升高数据集的维数。PCA是一种实用于可视化和监督学习的办法。KPCA是一种非线性降维技术。t-SNE是一种最新的非线性办法,善于可视化数据,但不足PCA的可解释性和稳健性。

这可能表明以下两点之一:

  1. 尝试新的的威士忌仍有很大的后劲。
  2. 有很多种滋味的组合是可能的,并且很好地联合在一起。

我偏向于抉择第二种抉择。为什么?在PCA图中,右下角是没有样本所在的最大区域。看着凑近这个区域的威士忌,咱们发现那些是y轴上的Macallan和x轴上的Lagavulin。麦卡伦以其简单的口味而闻名,Lagavulin以其烟熏味而闻名。

位于二维PCA空间右下方的威士忌将同时具备两种个性:它既简单又烟熏。我猜这种具备两种个性的威士忌对于口感来说太好了。

 

 

 


点击文末 “浏览原文”

获取全文残缺代码数据资料。

本文选自《R语言高维数据的主成分pca、 t-SNE算法降维与可视化剖析案例报告》。

点击题目查阅往期内容

数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林剖析心脏病数据并高维可视化
R语言逻辑回归logistic模型剖析泰坦尼克titanic数据集预测生还状况R语言是否对二分连续变量执行逻辑回归
R语言用lme4多层次(混合效应)狭义线性模型(GLM),逻辑回归剖析教育留级考察数据
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化剖析
R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林剖析心脏病患者
R语言逻辑回归(Logistic回归)模型分类预测病人冠心病危险
R语言用部分加权回归(Lowess)对logistic逻辑回归诊断和残差剖析R语言用主成分PCA、 逻辑回归、决策树、随机森林剖析心脏病数据并高维可视化
R语言用线性模型进行臭氧预测:加权泊松回归,一般最小二乘,加权负二项式模型,多重插补缺失值R语言Bootstrap的岭回归和自适应LASSO回归可视化
R语言中回归和分类模型抉择的性能指标
R语言多元工夫序列滚动预测:ARIMA、回归、ARIMAX模型剖析
R语言用lme4多层次(混合效应)狭义线性模型(GLM),逻辑回归剖析教育留级考察数据
R语言计量经济学:虚构变量(哑变量)在线性回归模型中的利用
R语言 线性混合效应模型实战案例
R语言混合效应逻辑回归(mixed effects logistic)模型剖析肺癌数据
R语言如何用潜类别混合效应模型(LCMM)剖析抑郁症状
R语言基于copula的贝叶斯分层混合模型的诊断准确性钻研
R语言建设和可视化混合效应模型mixed effect model
R语言LME4混合效应模型钻研老师的受欢迎水平
R语言 线性混合效应模型实战案例
R语言用Rshiny摸索lme4狭义线性混合模型(GLMM)和线性混合模型(LMM)
R语言基于copula的贝叶斯分层混合模型的诊断准确性钻研
R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题
基于R语言的lmer混合线性回归模型
R语言用WinBUGS 软件对学术能力测验建设档次(分层)贝叶斯模型
R语言分层线性模型案例
R语言用WinBUGS 软件对学术能力测验(SAT)建设分层模型
应用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM
R语言用WinBUGS 软件对学术能力测验建设档次(分层)贝叶斯模型
SPSS中的多层(等级)线性模型Multilevel linear models钻研整容手术数据
用SPSS预计HLM多层(档次)线性模型模型R语言高维数据的主成分pca、 t-SNE算法降维与可视化剖析案例报告
R语言惩办logistic逻辑回归(LASSO,岭回归)高维变量抉择的分类模型案例
R语言有RStan的多维验证性因子分析(CFA)
主成分剖析(PCA)原理及R语言实现及剖析实例
R语言无监督学习:PCA主成分剖析可视化
R语言应用Metropolis- Hasting抽样算法进行逻辑回归
R语言多元Logistic逻辑回归 利用案例
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归利用剖析
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
R语言基于树的办法:决策树,随机森林,Bagging,加强树
spss modeler用决策树神经网络预测ST的股票
R语言中自编基尼系数的CART回归决策树的实现
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
matlab应用分位数随机森林(QRF)回归树检测异样值
基于随机森林、svm、CNN机器学习的风控欺诈辨认模型
R语言惩办logistic逻辑回归(LASSO,岭回归)高维变量抉择的分类模型案例
R语言用规范最小二乘OLS,狭义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分