如何解决用于特征选择和使用 R
首先,我知道使用 PCA 进行特征选择并不是一种真正的方法,但是,我发现了一些使用 PCA 进行特征选择的文章,我想模仿它们。我在了解这些文章背后的真正逻辑时遇到了一些麻烦。在这里你可以找到下面这些文章的链接;
https://personal.utdallas.edu/~jiezhang/Journals/JIE_2017_AE_short_term_wind_forecasting.pdf https://doi.org/10.1016/j.neucom.2014.09.090
让我们假设我有五个不同的变量(特征)来预测结果。这些是风速、温度、湿度、压力和风向。
dat.sample = data.frame(windspeed = rnorm(100,mean = 10,sd = 2),temp = rnorm(100,mean = 20,humid = rnorm(100,mean = 80,sd = 5),press = rnorm(100,mean = 950,sd = 10),winddir = rnorm(100,mean = 180,sd = 5))
现在让我们对数据进行缩放和居中,以确保每个变量的标准偏差为 1,平均值为 0。
library(caret)
preproc = preProcess(dat.sample,method = c("center","scale"))
dat.sample.cs = predict(preproc,dat.sample)
#Ensuring the standart deviation is 1 and mean 0 before proceeding with PCA.
apply(dat.sample.cs,2,function(x) {c(sd(x),round(mean(x),3))})
PCA 应用于缩放和居中的数据,使用基本 R 函数 prcomp。应用主成分分析后,为了得到每个主成分(PC)的特征值以及每个变量对每个主成分的贡献,使用了 factoextra 库。
library(factoextra)
get_eigenvalue(pca)
eigenvalue variance.percent cumulative.variance.percent
Dim.1 1.2263264 24.52653 24.52653
Dim.2 1.1581302 23.16260 47.68913
Dim.3 0.9905302 19.81060 67.49974
Dim.4 0.8372833 16.74567 84.24540
Dim.5 0.7877299 15.75460 100.00000
发现虽然 PC1 代表整个 PC 总方差的 24.5%,但也可以看到其他方差百分比。现在,我想看看每个变量对每个 PC 的贡献。
pca.var = get_pca_var(pca)
(contrib = pca.var$contrib)
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
windspeed 5.2483398 0.71103782 91.6450906 1.535375 0.8601568
temp 39.4126852 8.99578568 0.9641489 8.337931 42.2894495
humid 43.0894490 0.03033891 1.1556426 42.025891 13.6986782
press 0.1220664 55.14999755 0.2033069 14.220377 30.3042517
winddir 12.1274594 35.11284004 6.0318111 33.880426 12.8474639
现在,很明显,虽然对 PC1 的最大贡献来自湿度;压力、风速、湿度和温度分别是从 PC2 到 PC5 贡献最大的变量(贡献与特征的重要性直接相关)。我的问题来了;
-
假设第一台PC足以表示数据;如何使用这些信息进行特征选择?是否可以使用对选定的前 n 个(此处选择 n 为 4 个)PC 中的每个 PC 贡献最大的第一个变量?例如,在上面的例子中,是否应该选择湿度、压力、风速和湿度特征?这也意味着只有 3 个变量,因为湿度选择了两次。
-
我怎样才能像上面引用的文章那样获得每个变量的总贡献。既然我们获得了每台个人电脑的每个功能的重要性,我如何获得每个功能的总贡献?是否可以对整个 PC 或选定 PC(在本例中为 1:4)的每个特征进行加权平均?权重将是每台 PC 的方差百分比。总之;我想得到一个像这篇文章中的表格,它可以在下面看到。
这张表中让我困惑的是表的名称。它指出;主成分的贡献率。在这里,每个特征都被称为主成分。我不知道他们是使用了 PC1 的贡献还是整个 PC 的贡献,也不清楚他们在文章中是如何计算这个表的。在这里你可以找到文章中用于特征选择的PCA方法的相关部分。
我错过了什么吗?我怎样才能得到一张这样的桌子?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。