机器学习的R和PCA解释



我正在Coursera上学习实用机器学习,我对其中一个作业感到困惑。我想非常清楚,我不是张贴,因为我希望有人给我答案-我只是想帮助了解正在发生的事情。

我们正在学习PCA和预处理。我的理解是,PCA就是试图将多个共线性变量合并成一个因素,而PCA算法试图在使用最少数量的变量时找到这些变量的最佳线性组合。例如,如果我有5个高度相关的变量,PCA可能会发现仅仅使用其中的4个以某种组合来解释最大的方差。然后,当你进行训练时,它应用任何变量和系数的组合是一个单一的预测器而不是单个变量(对吗)?

我难以理解的是幕后发生的事情。例如,在讲座中,数据集中有58个变量(第58个是DV),我们试图使用PCA进行预测。我试图理解代码的作用和它创建的对象类型,这是我可以使用一些帮助的地方。下面是代码和我的注释,我认为解释发生了什么——有人能纠正我吗?这些都在讲座中,但是解释不是很清楚。

  1. 遍历所有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%方差的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

    最新更新