发表文章

[最新] 机器学习----决策树

Sakura55 1月前 0

一、什么是决策树

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。
这里写图片描述

二、划分依据

2.1、熵

信息理论:
1、当系统的有序状态一致时,数据越集中的地方熵值越小,数据越分散的地方熵值越大。这是从信息的完整性上进行的描述。
2、当数据量一致时,系统越有序,熵值越低;系统越混乱或者分散,熵值越高。这是从信息的有序性上进行的描述。
这里写图片描述

2.1.1、图解

这里写图片描述

2.1.2、事例

两种判断方法的比较
最后一种叫分类误差
这里写图片描述

2.1.3、信息增益

信息增益:以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏。
这里写图片描述

2.1.4、信息增益率

这里写图片描述

2.2、基尼值和基尼指数

2.2.1、节点的不纯度impurity

2.2.2、基尼值Gini(D)/Gini系数

基尼值Gini(D):从数据集D中随机抽取两个样本,起类别标记不一致的概率,故,Gini
(D)值越小,数据集D的纯度越高。

2.2.3、基尼指数Gini_index(D)/(Gini系数增益)

基尼指数Gini_index(D):一般,选择使划分后基尼系数最小的属性作为最优化分属
性。

2.2.4、事例

这里写图片描述
最大化增益等价于最小化子女结点的不纯性度量(Gini系数)的加权平均值,现在我们
希望最大化Gini系数的增益

三、总结

C4.5采用信息增益率来作为分支特征的选择标准,而CART则采用Gini系数;
C4.5不一定是二叉树,但CART一定是二叉树。

3.1、步骤

决策树构建的基本步骤如下:
1、开始讲所有记录看作一个节点
2、遍历每个变量的每一种分割方式,找到最好的分割点
3、分割成两个节点N1和N2
4.、对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止。

3.2、分类

决策树的变量可以有两种:

3.3、评估

如何评估分割点的好坏?

3.4、常见树的类型

这里写图片描述

ID3 处理分类型的变量
C4.5 处理连续型变量,可以处理缺失值
CART 既能做分类,也能做回归,但是只能做二分类树
三者比较
这里写图片描述

四、剪枝

为什要剪枝

这里写图片描述
随着树的增长, 在训练样集上的精度是单调上升的, 然而在独立的测试样例上测出的精度先上升后下降。
•原因1:噪声、样本冲突,即错误的样本数据。
•原因2:特征即属性不能完全作为分类标准。
•原因3:巧合的规律性,数据量不够大。

预剪枝

(1)每一个结点所包含的最小样本数目,例如10,则该结点总样本数小于10时,则不再分;
(2)指定树的高度或者深度,例如树的最大深度为4;
(3)指定结点的熵小于某个值,不再划分。随着树的增长, 在训练样集上的精度是单调上升的, 然而在独立的测试样例上测出的精度先上升后下降。
这里写图片描述

后剪枝

主要有四种:
(1)REP-错误率降低剪枝
(2)PEP-悲观剪枝
(3)CCP-代价复杂度剪枝
(4)MEP-最小错误剪枝
这里写图片描述

五、决策树可视化安装

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

六、代码部分

from sklearn.datasets import load_iris # 导入类库
from sklearn import tree
import pydotplus
import sys
import os
os.environ["PATH"] += os.pathsep + 'D:/GRAPHVIZ/bin'
#注意后面的路径是你自己的graphviz的bin目录。
iris = load_iris() # 载入sciki-learn的自带数据
clf = tree.DecisionTreeClassifier() # 载入决策树分类模型
clf = clf.fit(iris.data, iris.target) # 决策树拟合,得到模型

with open("iris.dot",'w') as f: # 将模型存入dot文件iris.dot
    f = tree.export_graphviz(clf, out_file=f)
    # 第一种方式,用graphviz的dot命令生成决策树的可视化文件
    #在命令行执行 dot -Tpdf iris.dot -o iris.pdf, 
    #执行完成后当前目录就可以看到决策树的可视化文件iris.pdf. 
    #打开可以看到决策树的模型图。
    # 第二种方式,用pydotplus生成iris.pdf
dot_data = tree.export_graphviz(clf, out_file=None)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_pdf("iris.pdf")

这里写图片描述

相关推荐
最新评论 (0)
返回
发表文章
Sakura55
文章数
75
评论数
0
注册排名
637659