sklearn中对随机森林进行调参

一、闲言碎语

具体的方法可参考我的这篇文章python+sklearn进行交叉验证(使用交叉验证对数据划分,模型评估和参数估计,使用决策树举例)
方法都是相同的,不同的是要调哪些参数,我在这里主要介绍一下随机森林中的主要的参数。
分割线

二、参数问题

随机森林就是多颗决策树,那么调参可以分为两类:

  1. 随机森林框架参数
    n_estimators:
    也就是弱学习器的最大迭代次数,或者说最大的弱学习器的个数。
    oob_score:
    即是否采用袋外样本来评估模型的好坏。默认识False。个人推荐设置为True,因为袋外分数反应了一个模型拟合后的泛化能力。
    criterion:
    即CART树做划分时对特征的评价标准。分类模型和回归模型的损失函数是不一样的。分类RF对应的CART分类树默认是基尼系数gini,另一个可选择的标准是信息增益。回归RF对应的CART回归树默认是均方差mse,另一个可以选择的标准是绝对值差mae。一般来说选择默认的标准就已经很好的。
  2. 随机森林决策树参数
    决策树参数中最重要的包括最大特征数max_features, 最大深度max_depth, 内部节点再划分所需最小样本数min_samples_split和叶子节点最少样本数min_samples_leaf(这里写的比我开头介绍的那篇文章多一个参数,由于之前写的那篇文章比较早,所以可能考虑的少,不过再进行考虑max_features之后,发现还是默认的效果最好)

参数的重要性
首先看下面这张图(来源:知乎):
main_parameter
在这里面主要看最右侧的影响程度,按这个顺序调参即可,还有一个参数oob_score,其实可以放到倒数第二个执行。

看是不是过拟合,有一个方法:可以在训练集上进行训练模型之后,可以对训练集进行测试,一般未调参之前,都会达到1.0的精度,显然是过拟合。在经过调参之后,精度会下降,说明消除掉过拟合了,可以看下表train那一列。

三、结论

conclusion

可以看出,使用随机森林的时候,精度达到了最高的0.8325。到目前为止,除了上表提到的决策树,神经网络,逻辑回归,随机森林,以及集成方法(使用了神经网络,逻辑回归,随机森林)之外


集成方法部分代码如下:

clf1 = tree.DecisionTreeClassifier(criterion="entropy", max_depth=9, min_samples_leaf=7, min_samples_split=2)
clf2 = MLPClassifier(hidden_layer_sizes=(12, 9), activation='tanh', max_iter=3000, solver='adam', random_state=42, learning_rate='constant', alpha=0.0001, batch_size=200, tol=0.00001, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
clf3 = RandomForestClassifier(n_estimators=101, criterion='gini', oob_score=False, max_features='auto', max_depth=15, random_state=42, min_samples_leaf=2, min_samples_split=2)

eclf1 = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('mlp', clf3)], voting='soft', weights=[1, 2, 2], flatten_transform=True)

cv = StratifiedShuffleSplit(n_splits=10, test_size=0.1, random_state=42)
score = cross_val_score(eclf1, x, y, cv=cv).mean()
print(score)

(接上段),还使用了支持向量机SVM, Adaboost, Native_Bayes, KNN,一共9种机器学习算法,之所以这四个没有进行调参,是因为他们的精度真的很低,即使调参,效果也不会很好,所以主要对decision_tree, neural_network, logistic, random_dorest, vote这五种方法进行调参,也就是上表的五种方法。可以说,在现有的数据集上精度可能已经很难提升了,0.8325成为了最好的结果,要想提升我看只能从数据入手了,不过因为一些原因,数据收集是个难点,就看之后会有什么进展吧,结束!

四、参考文献

  1. https://zhuanlan.zhihu.com/p/126288078
  2. https://blog.csdn.net/geduo_feng/article/details/79558572
posted @ 2020-12-06 20:37  小Aer  阅读(834)  评论(0编辑  收藏  举报