我正在尝试使用插入符号包中的train()fx在60个变量和~20,000个观察点上构建分类模型 . 我正在使用随机森林方法并且在我的训练集上返回0.999准确度,但是当我使用模型进行预测时,它将每个测试观察分类为同一类(即,20个观察中的每一个被归类为“1”) 5种可能的结果) . 我确定这是错误的(测试集是针对Coursera测验,因此我没有发布确切的代码)但我不确定发生了什么 .
我的问题是,当我调用最终的fit模型(fit $ finalModel)时,它表示它总共生成了500棵树(默认和预期), however the number of variables tried at each split is 35. 我知道将进行分类,为每个分割选择的标准观察数是正方形总预测数的根(因此,应该是sqrt(60)= 7.7,称之为8) . 这可能是问题吗?
我对我的模型或数据清理是否有问题感到困惑 .
set.seed(10000)
fitControl <- trainControl(method = "cv", number = 5)
fit <- train(y ~ ., data = training, method = "rf", trControl = fitControl)
fit $ finalModel
Call:
randomForest(x = x, y = y, mtry = param$mtry)
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 41
OOB estimate of error rate: 0.01%
1 回答
如果学生未能删除NA值超过50%的自变量,则使用Random Forest作为Coursera的约翰霍普金斯实用机器学习课程的最终项目将为测验的所有20个测试用例生成相同的预测 .
SOLUTION: 从模型中删除具有高比例缺失值的变量 .