step by step
1、决策树原理介绍
2、iris数据集测试
3、算法优缺点总结
一、决策树原理介绍
机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。
二、iris数据集测试
- 2.1 Code Sample
from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris() # sklearn加载数据集
X, y = iris.data, iris.target # 获取训练样本和标签
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y) # 模型训练
print(clf.predict([[1, 1, 1, 0]])) # 预测
# 可视化保存决策树
import pydotplus
from sklearn.externals.six import StringIO
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("iris.pdf") # 决策树保存到 pdf 文件
- 2.2 运行结果
[0]
- 2.3 决策树图
三、算法优缺点总结
优点
- 决策树易于理解和解释,可以可视化分析,容易提取出规则;
- 可以同时处理标称型和数值型数据;
- 比较适合处理有缺失属性的样本;
- 能够处理不相关的特征;
- 测试数据集时,运行速度比较快;
- 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
缺点
- 容易发生过拟合(随机森林可以很大程度上减少过拟合);
- 容易忽略数据集中属性的相互关联;
- 对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
- ID3算法计算信息增益时结果偏向数值比较多的特征。
更多参考
机器学习实战教程(三):决策树实战篇之为自己配个隐形眼镜
决策树 – Decision tree
决策树调参说明(DecisionTreeClassifier)