class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)
我正在使用一个随机森林模型,样本数为9,属性约7000个。这些样本中有3个类别是我的分类器能够识别的。
我知道这远非理想条件,但我试图找出哪些属性在特征预测中最为重要。调整哪些参数可以优化特征重要性呢?
我尝试了不同的n_estimators
,注意到“重要特征”的数量(即feature_importances_
数组中的非零值)显著增加了。
我已经阅读了文档,但如果有人有这方面的经验,我希望了解哪些参数最值得调整,并简要解释原因。
回答:
根据我的经验,使用sklearn的RandomForestClassifier时,有三个值得探索的特征,按重要性排序如下:
-
n_estimators
-
max_features
-
criterion
n_estimators
实际上不值得优化。您提供的估计器越多,效果就越好。通常500或1000就足够了。
max_features
值得尝试许多不同的值。它可能对随机森林的行为有很大影响,因为它决定了随机森林中每棵树在每次分裂时考虑的特征数量。
criterion
可能有一点影响,但通常默认值就足够了。如果您有时间,不妨尝试一下。
在尝试这些参数时,请务必使用sklearn的网格搜索(最好是GridSearchCV,但您的数据集太小了)。
不过,如果我正确理解了您的问题,您只有9个样本和3个类别?推测每个类别有3个样本?在如此少量的数据下,除非它们是好的、具有代表性的记录,否则您的随机森林很可能会过拟合。