决策树(DTS)是一种用来进行分类和回归的非参数监督学习方法。它是通过数据特征来学习到简单的决策规则,构造一个模型来预测目标变量的值。
例如在下面的例子中,决策树从数据中学习到一系列if-then-else的决策规则来近似一个正弦曲线。树的层次越深,决策规则和模型越复杂。
决策树的优势:
- 简单,便于理解和解释,可以可视化。
- 很少的数据准备工作,其他方法往往需要对数据进行规范化、创建虚拟变量、移除空值。但需要注意的是决策树不支持缺失值。
- 使用决策树预测数据的计算量与训练树的数据点的数量成对数关系。
-
可以同时处理数值类型和类别类型的数据。其他方法在分析数据时通常只能指定一种类型的变量。更多信息可参考algorithms。
- 可以处理多路输出问题。
- 决策树使用白盒模型,如果模型中给定的情况是可见的,那么他的条件可以很容易的使用布尔逻辑解释。相反,在黑盒模型中(例如人工神经网络),结果可能非常难于解释。
- 可以通过统计测试验证一个模型,这使它能够验证模型的的可靠性。
- 即使它的假设和数据生成的真实模型相违背,效果依然不错。
决策树的劣势:
-
决策树学习时可能会创建一个过于复杂的树,不能有效的推广,这个称为过拟合。需要通过修剪(目前还不支持),设置叶子节点需要的最小样本数目,设置最大深度等机制来避免过拟合。
- 决策树可能会不稳定,因为数据的很小变化就肯能导致生成一个完全不同的树。这个问题可以通过在一个整体里使用决策树来缓解。
- 学习到一个最优的决策树的问题是一个NP完全问题。
1.10.5.使用小贴士
- 在特征维度数量很大的数据上决策树容易过拟合。因为在高维空间小量样本获得的树很容易过拟合,所以使用一个正确的样本数目和特征数目的比例很重要。
- 先使用特征降维(PCA, ICA, or Feature selection),使决策树能够更好的找到具有区分性的特征。
- 训练的时候使用export函数可视化树。先使用max_depth=3作为树的初始深度来感觉下树是怎么拟合你的数据的,然后增加深度。
1.10.6.三种算法:ID3,C4.5,C5.0和CART
有哪些不同的决策树算法?它们之间有什么不同?在scikit-learn中实现了那个算法?
………………
CART(分类和回归树)和C4.5很像,不同的是它支持数值类型的变量(回归),并且不计算规则集。CART使用特征和阈值产生每个节点的最大信息增益来构建二叉树。
scikit-learn中使用的是CART算法的一个优化版本。
(未完结)
相关文章
- scikit-learn学习笔记(六)Decision Trees(决策树)
- scikit-learn学习之决策树算法
- scikit-learn学习1.10. 决策树(Decision Trees)
- 第六章——决策树(Decision Trees)
- Python机器学习算法库scikit-learn学习之决策树实现方法详解
- scikit-learn工具学习 - random,mgrid,np.r_ ,np.c_, scatter, axis, pcolormesh, contour, decision_function
- scikit-learn工具学习 - random,mgrid,np.r_ ,np.c_, scatter, axis, pcolormesh, contour, decision_function
- <机器学习笔记-05 >决策树 & 随机森林
- 【Python学习系列十】Python机器学习库scikit-learn实现Decision Trees案例
- 【Scikit-Learn 中文文档】决策树 - 监督学习 - 用户指南 | ApacheCN