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

5次阅读

共计 5359 个字符,预计需要花费 14 分钟才能阅读完成。

原文链接: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 分

正文完
 0