决策树的应用场景

来源: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回答

liuyubobobo

2022-09-06

整体,对于“复杂的机器学习问题”(基本就意味着大多数我们现代的机器学习问题),决策树是没什么用的。原因很简单,决策树太“简单了”。


决策树的意义是:


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)

对于“复杂的机器学习问题”,决策树最重要的意义是:构成类似随机森林这样的集成学习方法。


继续加油!:)

1
3
黄义舜
回复
liuyubobobo
噢,这刚好也是我遇到的一个问题,我在玩泰坦尼克号竞赛的时候,集成学习整合了很多模型,似乎效果还没有单个的网格搜索之后的KNN算法好,原来是这个原因啊!
2022-09-09
共3条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5838 学习 · 2437 问题

查看课程