我正在Coursera上学习实用机器学习,我对其中一个作业感到困惑。我想非常清楚,我不是张贴,因为我希望有人给我答案-我只是想帮助了解正在发生的事情。
我们正在学习PCA和预处理。我的理解是,PCA就是试图将多个共线性变量合并成一个因素,而PCA算法试图在使用最少数量的变量时找到这些变量的最佳线性组合。例如,如果我有5个高度相关的变量,PCA可能会发现仅仅使用其中的4个以某种组合来解释最大的方差。然后,当你进行训练时,它应用任何变量和系数的组合是一个单一的预测器而不是单个变量(对吗)?
我难以理解的是幕后发生的事情。例如,在讲座中,数据集中有58个变量(第58个是DV),我们试图使用PCA进行预测。我试图理解代码的作用和它创建的对象类型,这是我可以使用一些帮助的地方。下面是代码和我的注释,我认为解释发生了什么——有人能纠正我吗?这些都在讲座中,但是解释不是很清楚。
- 遍历所有57个潜在的预测因子,并找到解释方差最大的2个预测因子的最佳集合。创建对象?????
preProc <- preProcess(log10(training[,-58]+1),method="pca",pcaComp=2)
- 我不知道这一行到底是做什么的
- 尝试在训练数据上拟合PCA模型来预测TYPE?
trainPC <- predict(preProc,log10(training[,-58]+1))
modelFit <- train(training$type ~ .,method="glm",data=trainPC)
我正试着把这些"知识"应用到一个测验问题中,下面会解释。我不想要答案,只需要解释代码在做什么。
实际测试问题
使用命令加载阿尔茨海默病数据:
library(caret)
library(AppliedPredictiveModeling)
set.seed(3433)
data(AlzheimerDisease)
adData = data.frame(diagnosis,predictors)
inTrain = createDataPartition(adData$diagnosis, p = 3/4)[[1]]
training = adData[ inTrain,]
testing = adData[-inTrain,]
创建一个仅由变量名以IL开头的预测器和诊断组成的训练数据集。建立两个预测模型,一个使用预测因子本身,另一个使用主成分解释预测因子中80%方差的PCA。在train函数中使用method="glm"。测试集中每种方法的准确率是多少?哪个更准确?
您可以在这里阅读有关插入符号的详细信息:https://cran.r-project.org/web/packages/caret/caret.pdf
1)不完全是,你正在创建PCA预处理模型,它现在存储在preProc中,它将所有57个不同的预测因子组合成2个具有一定权重的预测因子(每个新特征是原始特征的不同线性组合),保持尽可能多的方差。
2)现在你正在应用前一步计算的转换到你的特征,trainPC现在只包含2个特征。
3)是的,此时你正在拟合"glm"广义线性模型,它本身可能是分类或回归任务(不像前一步那样转换特征,但你仍然可以像前一步那样使用预测来预测值)。https://topepo.github.io/caret/Generalized_Linear_Model.html