使用 caret 包进行交叉验证的最终模型
final model in cross-validation using caret package
我使用 Caret 包中的随机森林方法对我的数据进行了交叉验证,R 说最终模型是使用 mtry=34 构建的,这是否意味着在最终的随机森林(由交叉验证产生)中我的数据集中参数的34个变量被用于树的分裂?
> output
Random Forest
375 samples
592 predictors
2 classes: 'alzheimer', 'control'
No pre-processing
Resampling: Cross-Validated (3 fold)
Summary of sample sizes: 250, 250, 250
Resampling results across tuning parameters:
mtry Accuracy Kappa
2 0.6826667 0.3565541
34 0.7600000 0.5194246
591 0.7173333 0.4343563
Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mtry = 34.
随机森林的文档:
mtry: Number of variables randomly sampled as candidates at each
split.
在这种情况下,最终模型考虑了树中每个拆分的 34 个随机变量。
由于您已经使用 caret
包构建了随机森林,一个技巧是使用 $finalModel
来获取最终模型的摘要,即使用选择的模型预定义参数(默认值:OOB 精度)。
现在回答你的问题:
从下图中,您可以看到随机森林在每次拆分时从 34 个(我的示例是 31,但您明白了)变量中随机选择。根据您的问题,这 而不是 与仅使用 34 个变量来种植每棵树相混淆。事实上,所有的变量都是在一个足够大的随机森林中使用的;只有在每个节点上,从 34 个变量池中挑选一个变量以减少模型的方差。这使得每棵树彼此更加独立,因此,对大量树进行平均的收益更加显着。
每棵树的生长过程如下(粗体强调,并假设您使用caret
的randomForest
实现或直接来自 randomForest
):
- 对于 N x M 维度的数据集(N 表示观察值,M 表示变量数),从原始数据中替换 N 的样本(~三分之二),并将这个新样本用作训练集遗漏的观察结果(~三分之一)用作测试集
- 一个数字
m
(小于M
)是指定的,这样在每个节点分裂时,m
变量从M
和 m
中的最佳候选者(通过信息增益衡量)用于拆分节点 。 m
是森林生长过程中的常数
- 每棵树都在没有预修剪或 post 修剪的情况下尽可能长得最大
很抱歉迟了 2 个月才回答,但我认为这是一个很好的问题,如果没有对 mtry
参数的真正作用进行更详细的解释,那就太可惜了。它经常被误解,所以我想我会在这里添加一个答案!
我使用 Caret 包中的随机森林方法对我的数据进行了交叉验证,R 说最终模型是使用 mtry=34 构建的,这是否意味着在最终的随机森林(由交叉验证产生)中我的数据集中参数的34个变量被用于树的分裂?
> output
Random Forest
375 samples
592 predictors
2 classes: 'alzheimer', 'control'
No pre-processing
Resampling: Cross-Validated (3 fold)
Summary of sample sizes: 250, 250, 250
Resampling results across tuning parameters:
mtry Accuracy Kappa
2 0.6826667 0.3565541
34 0.7600000 0.5194246
591 0.7173333 0.4343563
Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mtry = 34.
随机森林的文档:
mtry: Number of variables randomly sampled as candidates at each split.
在这种情况下,最终模型考虑了树中每个拆分的 34 个随机变量。
由于您已经使用 caret
包构建了随机森林,一个技巧是使用 $finalModel
来获取最终模型的摘要,即使用选择的模型预定义参数(默认值:OOB 精度)。
现在回答你的问题:
从下图中,您可以看到随机森林在每次拆分时从 34 个(我的示例是 31,但您明白了)变量中随机选择。根据您的问题,这 而不是 与仅使用 34 个变量来种植每棵树相混淆。事实上,所有的变量都是在一个足够大的随机森林中使用的;只有在每个节点上,从 34 个变量池中挑选一个变量以减少模型的方差。这使得每棵树彼此更加独立,因此,对大量树进行平均的收益更加显着。
每棵树的生长过程如下(粗体强调,并假设您使用caret
的randomForest
实现或直接来自 randomForest
):
- 对于 N x M 维度的数据集(N 表示观察值,M 表示变量数),从原始数据中替换 N 的样本(~三分之二),并将这个新样本用作训练集遗漏的观察结果(~三分之一)用作测试集
- 一个数字
m
(小于M
)是指定的,这样在每个节点分裂时,m
变量从M
和m
中的最佳候选者(通过信息增益衡量)用于拆分节点 。m
是森林生长过程中的常数 - 每棵树都在没有预修剪或 post 修剪的情况下尽可能长得最大
很抱歉迟了 2 个月才回答,但我认为这是一个很好的问题,如果没有对 mtry
参数的真正作用进行更详细的解释,那就太可惜了。它经常被误解,所以我想我会在这里添加一个答案!