决策树定义
维基百科:
统计学,数据挖掘和机器学习中的决策树训练,使用决策树作为预测模型来预测样本的类标。也称为分类树或回归树。叶子节点表示类标,内部节点表示某个属性。
在决策分析中,一棵决策树可以明确地表达决策的过程。在数据挖掘中,一棵决策树表达的是数据而不是决策。
sklearn:
决策树DT是一种用于分类和回归的非参数监督学习方法。目标是创建一个模型,该模型通过学习从数据特征推断出的简单决策规则来预测目标变量的值。
为什么出现(为什么需要这个技术)
- 解决什么问题
目标是创建一个模型用来预测样本的目标值;
避免的问题:
从数据中找到最佳节点和最佳分枝;以及如何让决策树停止增长,防止过拟合问题。
为什么学习它
- 解决工作问题?
- 提高效率?
- 知识储备?
怎么做
决策树训练过程为:根据一个指标,分裂训练集为几个子集。然后不断的根据不同的指标进行重复递归,即递归分隔。当一个训练子集的类标都相同时递归停止。该类决策树自顶向下归纳是贪心算法的一种,也是目前为止最为常用的一种训练方法。
关于指标的定义
决策树的每一步分裂,尽量选择最好的属性进行分裂,最好的定义就是使得子节点中的训练集尽可能的纯,不断的算法使用的不同的指标来定义最好。
常见的分类指标如:基尼不纯度指标,信息增益,
决策树的种类:
分类:输出是样本的类标
回归:输出是一个实数,如房子价格,病人在医院的时间等
常见决策树算法
ID3
C4.5
CART
优缺点各是什么
优点:
易于理解和解释,只需要很少的数据,即可以处理数值型数据也可以处理类别型数据,使用白箱模型;可以通过测试集来验证模型的性能,强健的控制,可以很好的处理大规模数据;能够处理多输出问题;
缺点:
一个最优的决策时是一个完全NP问题,而是实际应用时,决策树的训练是采用启发式搜索算法,比如贪心算法,来达到局部最优,因此是没有办法达到一个最优的决策树,这是一矛盾的点;决策树会根据训练集创建过度复杂的决策树,导致无法预测训练集以外的数据,这种现象为过拟合问题,需要根据剪枝来避免该类问题;有些问题是决策树所无法解决的,比如:异或问题;对于类别型数据,信息增益会有一定的编制。
相关概念:
决策树剪枝
ID3算法
C4.5算法
CART算法
sklearn中的决策树
sklearn中决策树实现的是CART算法,调优过的算法,既可以做分类,又可以做回归。
使用不用的类实现:分类决策树的类对应的是DecisionTreeClassifier,而回归决策树的类对应的是DecisionTreeRegressor。
以及决策树的可视化,在该博客中可以看到相关教程,或者自行搜索
实际的Demo参考官方文档
大部分都在tree这个模块下,包含五个类,不包含集成算法。
建模编码流程:
1。导入所需要的的库
2。导入相关数据
3。建立评估模型对象
4。训练模型(优化模型)
5。保存模型
6。使用模型
代码如下:
from sklearn import tree #导入指定模块
clf = tree.DecisionTreeClassifier() #实例化
clf = clf.fit(X_train , y_train) #用训练的数据训练模型
result = clf.score(X_test , y_test) #导入测试集,为模型打分。
clf.predict(data) # 使用训练后的模型预测
参考:
飘哥:机器学习sklearn系列之决策树zhuanlan.zhihu.com