我试图比较使用R和Python的随机森林模型的结果。我比较的模型性能的关键度量是AUC(ROC曲线下的面积)。原因是AUC值代表了预测值(即概率)的分布。我确实发现了R和Python在AUC值上的一些显著差异。关于R和Python之间的差异,我确实通读了一些关于堆栈溢出的相关问题和答案。但是,我觉得我的问题应该和那些不同。在
我试图在R和Python中保持一些关键的超参数不变。它们是:将R中的ntree设置为Python中的n_estimators
在Python中将R中的mtry设置为max_features
将R中的nodesize设置为Python中的min_samples_leaf
在R和Python中将类权重设置为默认值。在R中,默认值是NULL。在Python中,默认值是None。在
在R中设置samplesize等于训练数据中的总行数,这是Python中的默认设置。在
在Python中将R中的replace设置为bootstrap,即两者都是True,或者两者都是{}。在
该问题是一个两类分类问题,有86个预测因子。每个预测因子都是连续的或布尔的。在R中没有使用因子类型预测因子。训练数据中有2008个观察值,测试数据中有335个观察值。两组数据的有效率相同,为79.7%。在
结果如下:
R的模型1结果
training_auc=0.9249080,test_auc=0.6308934
R的模型2结果
training_auc=0.9245665,test_auc=0.6364838
Python中的模型1结果
training_auc=0.80515863,test_auc=0.62