R和PCA机器学习的解释

时间:2015-08-12 14:25:39

标签: r machine-learning pca r-caret

我正在使用Coursera上的实用机器学习,我对其中一项任务感到困惑。我想非常清楚我没有发帖,因为我希望有人给我答案 - 我只是想要帮助了解发生了什么。

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

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

  1. 浏览所有57个潜在的预测因子,找到解释最多方差的2个预测因子的最佳组合。创建一个对象?????
  2. preProc <- preProcess(log10(training[,-58]+1),method="pca",pcaComp=2)

    1. 我不知道这条线真正做了什么
    2. trainPC <- predict(preProc,log10(training[,-58]+1))

      1. 尝试将PCA模型拟合到训练数据上以预测TYPE?
      2. modelFit <- train(training$type ~ .,method="glm",data=trainPC)

        我正在尝试应用这个&#34;知识&#34;测验问题,如下所述。 我不想要答案,只是解释代码的作用。

        实际测验问题

        使用以下命令加载阿尔茨海默病的数据:

        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开头的变量名称的预测变量和诊断组成。构建两个预测模型,一个使用预测变量,一个使用PCA,主成分解释预测变量的80%。使用方法=&#34; glm&#34;在火车功能。测试集中每种方法的准确度是多少?哪个更准确?

1 个答案:

答案 0 :(得分:1)

您可以在此处详细阅读插入符号: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

相关问题