我想要得到比Weka更快的随机森林分类器,我首先尝试了C++ Shark实现(结果:几乎没有速度改进,放入正确的分类实例),然后测试了Python Scikit-learn。我读了很多网站和严重相比Scikit,WiseRF是Weka的执行文件...随机森林分类 - SciKit vs Weka预测100个特征
我第一次尝试后与100根之木:
Training time: Weka ~ 170s VS Scikit ~ 31s
Prediction results on the same test set: Weka ~ 90% correctly classified VS Scikit score ~ 45% !!!
=> Scikit RF跑得快,但很分类这个第一次尝试很糟糕。我调整了Scikit RandomForestClassifier的参数,并设法得到接近70%的分数,但scikit的速度几乎下降到Weka性能(bootstrap = False,min_samples_leaf = 3,min_samples_split = 1,criterion ='entropy' ,max_features = 40,max_depth = 6)。我确实有许多缺失的值,scikit并没有将它们直接处理,所以我尝试了许多不同的策略(Imputer的所有策略,跳过缺失值的实例,替换为0或极端值)并达到75%。
因此在这个阶段,Scikit RandomForestClassifier的执行效率为75%(相比于weka的90%),并在78s中建立模型(使用6核心vs 170s,而Weka只有1个核心)。我对这些结果感到非常惊讶。我测试了ExtraTrees,在速度方面表现非常好,但仍达到75%的正确分类平均值。
你有什么想法我失踪?我的数据:〜100个特征,〜100 000个实例,缺失值,分类预测(价格预测)。
这是回归还是分类问题?直观的价格预测听起来像一个回归,但你正在谈论的东西,如“90%正确分类”。你使用什么样的评分指标? – ogrisel
这是一个分类问题,因为价格来自费率列表。评分指标使用简单:总分类正确/总实例。我真的不明白Random Forest在Weka上的准确性如何更好?我的第一个猜测是,Weka处理缺失值比任何Scikit缺失值策略更好,但我也尝试跳过任何缺少值的实例,但我只达到77%(仍远离weka的90%)。 – doxav
@ogrisel任何想法?谢谢 – doxav