【发布时间】:2019-07-20 04:42:22
【问题描述】:
我有一个名为 Data 的数据集,具有 30 个缩放和居中的特征和 1 个列名为 OUTCOME 的结果,引用了 70 万条记录,以 data.table 格式存储。我计算了它的 PCA,并观察到它的前 8 个分量占方差的 95%。我想在h2o 中训练一个随机森林,所以我就是这样做的:
Data.pca=prcomp(Data,retx=TRUE) # compute the PCA of Data
Data.rotated=as.data.table(Data.pca$x)[,c(1:8)] # keep only first 8 components
Data.dump=cbind(Data.rotated,subset(Data,select=c(OUTCOME))) # PCA dataset plus outcomes for training
这样我就有了一个数据集Data.dump,其中我有 8 个在 PCA 组件上旋转的特征,并且在每条记录中我都关联了它的结果。
第一个问题:这是理性的吗?还是我必须以某种方式置换结果向量?还是这两件事无关?
然后我将Data.dump 分成两组,Data.train 用于训练,Data.test 用于测试,全部为as.h2o。我将它们喂给随机森林:
rf=h2o.randomForest(training_frame=Data.train,x=1:8,y=9,stopping_rounds=2,
ntrees=200,score_each_iteration=T,seed=1000000)
rf.pred=as.data.table(h2o.predict(rf,Data.test))
发生的情况是 rf.pred 似乎与原始结果 Data.test$OUTCOME 不太相似。我也尝试训练一个神经网络,甚至没有收敛,导致 R 崩溃。
第二个问题:是不是因为我在 PCA 治疗中犯了一些错误?还是因为我错误地设置了随机森林?还是我只是在处理烦人的数据?
我不知道从哪里开始,因为我是数据科学的新手,但工作流程对我来说似乎是正确的。
非常感谢。
【问题讨论】:
标签: r random-forest pca h2o