决策树算法
Posted yd2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了决策树算法相关的知识,希望对你有一定的参考价值。
0. 机器学习中分类和预测算法的评估: - 准确率 - 速度 - 强壮性 - 可规模性 - 可解释性 1. 决策树(decision tree) 决策树是一个类似于流程图的树结构: - 每个内部结点表示在一个属性上的测试 - 每个分支代表一个属性输出 - 每个树叶结点代表类或类分布 树的最顶层是根结点 2. 构造决策树的基本算法 2.1 熵(entropy)的概念 变量的不确定性越大,熵也就越大
H(x) = -∑(P(x) * log(P(x))) 2.2 决策树归纳算法(ID3) 选择属性判断结点 信息获取量(信息增益)(Information Gain):Gain(A) = Info(D) - Info_A(D) # A是特征(属性) 通过A来作为节点分类获取了多少信息
例子(怎么构造决策树):
Info(D) = -(9/14) * log(9/14) - (5/14) * log(5/14) = 0.940 bits
Info_age(D) = (5/14) * (-(2/5) * log(2/5) - (3/5) * log(3/5))
+ (4/14) * (0)
+(5/14) * (-(3/5)* log(3/5) - (2/5) * log(2/5))
= 0.694 bits
以年龄为分类的信息获取量:
Gain(age) = Info(D) - Info_age(D) = 0.940 - 0.694 = 0.246 bits
同理:
Gain(income) = 0.029 bits, Gain(student) = 0.151 bits, Gain(credit_rating) = 0.048 bits
所以, 选择age作为第一个根结点.
接着:
可以看到,当age = middle_aged 时,结果全为yes,故这个结点就不需要再往下分了.
对于另外两个结点,重复最初的步骤,选择合适的属性进行往下分
不断重复,一直到分完,或者到达一个限制
ID3算法总结:
1. 树以代表训练样本的单个结点开始
2. 如果样本都在同一个类,则该结点成为树叶,并用该类标号(比较少见)
3. 否则, ID3算法使用称为信息增益的基于熵的度量作为启发信息,选择能够最好地将样本分类的属性. 该属性成为该结点的‘测试’或‘判定’属性.
4. 在这个例子中,所有的属性都是分类的,即离散值。若是连续属性必须离散化.
5. 对测试属性的每个已知的值,创建一个分支,并据此划分样本
6. ID3算法使用同样的过程,递归的形成每个划分上的样本判定树。一旦一个属性出现在一个结点上,就不必在该结点的任何后代上考虑它.
7. 递归划分步骤仅当下列条件之一成立停止:
(a) 给定结点的所有样本属于同一类
(b) 没有剩余属性可以用来进一步划分样本。在此情况下,使用多数表决.
这涉及将给定的结点转换成树叶,并用样本中的多数所在的类标记它。
其他算法:
1. C4.5
2. CART(Classification and Regression Trees)
共同点:都是贪心算法,自上而下
区别:属性选择度量方法不同:
ID3:信息增益(Information Gain)
C4.5:信息增益率(Gain Ratio) --> 信息增益的熵 / 自身熵值
CART:GINI系数(Gini index)
决策树剪枝:
先剪枝
后剪枝
决策树的优点:
直观,便于理解,小规模数据集有效
决策树缺点:
处理连续变量不好(选择的阈值对结果影响很大)
类别较多时,错误增加的比较快
可规模性一般
以上是关于决策树算法的主要内容,如果未能解决你的问题,请参考以下文章