决策树的应用场景
来源:12-6 决策树解决回归问题
黄义舜
2022-09-05
在使用决策树进行回归问题时,我发现X_test准确率并不高,后面我使用了交叉验证也得出同样的结论,准确率不高(平均0.7),在进行了归一化,网格搜索【‘max_depth’ ‘min_samples_split’‘min_samples_leaf’】找到最好的参数之后,准确率还是不高(0.77)。
所以我就绘制一下学习曲线
我得出以下几点结论
(这图片我省略了前20个准确率数据(train_score)因为波动很大)
(网格搜索时从5个数据开始的)
- 从前几个波动很大,可以看出来决策树对于数据的变动也很敏感。
- 决策树似乎不适合用于这个数据集合
- 提高数据总量m确实能缓慢增长准确率
- 在train曲线升高之后test曲线缓慢的下降,发生了过拟合,这一点不知道是不是因为决策树本身容易发生过拟合
我的问题是:我以后遇到什么情况,或者那种类型的数据,应该考虑使用决策树方法来解决,(我总觉得决策树横平竖直,算的又慢,有点笨)
1回答
-
整体,对于“复杂的机器学习问题”(基本就意味着大多数我们现代的机器学习问题),决策树是没什么用的。原因很简单,决策树太“简单了”。
决策树的意义是:
1)
首先,非常重要的,决策树模型是“可解释的”。通过决策树,可以看到一个样本分到某个类别的过程(因为这个特征大于多少,那个特征小于多少,等等等等)。这对于统计分析,是非常重要的。
2)
和第一点相关的,使用 decision tree 可以计算出一个特征的“重要程度”,因此 decision tree 可以作为一个“特征选择”的工具。注意,特征选择和 PCA 降维不同。虽然特征选择也降低了维度,但非常重要的,也保持了语义信息。
sklearn 的 feature_importances_ 可以返回这个特征重要程度的信息:https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.feature_importances_
这个算法我在课程中没有介绍,如果对其实现细节感兴趣,可以看类似这样教程:https://sefiks.com/2020/04/06/feature-importance-in-decision-trees/
3)
对于“复杂的机器学习问题”,决策树最重要的意义是:构成类似随机森林这样的集成学习方法。
继续加油!:)
132022-09-09
相似问题