【发布时间】:2015-11-05 05:31:18
【问题描述】:
我正在参加 Coursera 上的实用机器学习,但我对其中一项作业感到困惑。我想非常清楚,我不是因为我希望有人给我答案而发帖 - 我只是希望帮助了解正在发生的事情。
我们正在学习 PCA 和预处理。我的理解是,PCA 就是试图将多个共线性变量合并为一个因子,并且 PCA 算法试图在使用最少数量的变量的同时找到这些变量的最佳线性组合。例如,如果我有 5 个高度相关的变量,PCA 可能会发现仅在某个组合中使用其中的 4 个可以解释最大的差异。然后,当您进行训练时,它会应用任何变量和系数的组合作为单个预测变量而不是单个变量(对吗)?
我难以理解的是幕后发生的事情。例如,在一次讲座中,数据集中有 58 个变量(第 58 个是 DV),我们正在尝试使用 PCA 进行预测。我试图了解代码的作用以及它正在创建什么样的对象,这是我可以使用一些帮助的地方。下面是我认为解释正在发生的事情的代码和我的注释——有人可以纠正我吗?讲座里都有,但是讲解的不是很清楚。
- 遍历所有 57 个潜在预测变量,并找到解释最大方差的 2 个预测变量的最佳集合。创建一个对象??????
preProc <- preProcess(log10(training[,-58]+1),method="pca",pcaComp=2)
- 我不知道这条线的真正作用
trainPC <- predict(preProc,log10(training[,-58]+1))
- 尝试在训练数据上拟合 PCA 模型以预测 TYPE?
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% 的方差。在 train 函数中使用 method="glm"。测试集中每种方法的准确率是多少?哪个更准确?
【问题讨论】:
-
您是否尝试过查看帮助? (
?preProcess、?predict、?train、?createDataPartition)R 文档并不总是最容易理解的,但它可以为您提供一个起点。 -
我还没有,它不是关于现在理解编程,而是更多关于理解 PCA 的概念以及它在创建的对象方面“发生”了什么以及它们如何一起应用。
-
你会发现PCA and k-fold cross-validation in caret package in R上的这篇文章很有用。
标签: r machine-learning pca r-caret