鉴于这个机器学习在课上就没咋听明白过,自己慢慢啃吧。。。内容来自西瓜书和学校课件。
¥ | 正例 | 负例 | 合计 |
---|---|---|---|
全样本 | 6 | 9 | 15 |
喜欢A | 5 | 2 | 7 |
喜欢B | 4 | 4 | 8 |
此时,
整体的信息熵为E(T):
喜欢A的信息熵为E(TA):
¥ | 正例 | 负例 | 合计 |
---|---|---|---|
全样本 | 6 | 9 | 15 |
喜欢A | 5 | 2 | 7 |
喜欢B | 4 | 4 | 8 |
Gini = (7/15) * (1 - (5/7)^2 - (2/7)^2) + (8/15) * (1 - (4/8)^2 - (4/8)^2)
比如数据集中共有20个值,但非缺失值只有15个。分为ABCD四类。现计算该属性的信息增益。
1)首先求出全属性的信息熵:
Ent = - 正例比例 × 2正例比例 - 负例比例 × 2负例比例
2)求出ABCD四类的信息熵:
Ent(A) = - A正例比例 × 2A正例比例 - A负例比例 × 2A负例比例
BCD类似如上。
3)求非缺失值子集的信息增益:
Gain(子集.属性) = Ent - (Ent( A )+Ent( B )+Ent( C )+Ent( D ))
4)样本集上该属性的信息增益:
Gain(数据集.属性) = 15/20 * Gain(子集.属性)
即,在子集的信息增益上乘以非缺失值/总值的比例。
5)后续:上述过程得出的各个属性的信息增益,取最大信息增益的属性作为决策树的根节点进行划分
6)样本集上该属性的信息增益: 该属性中的缺失值该进入哪个分类呢?
这个该属性缺失值的样本会进入到这个属性的所有分支里,但权重要有所调整,按照各分支占总非缺失值的比例作为权重。
A | B | 正负例 |
---|---|---|
喜欢 | 黑 | 正例 |
喜欢 | 白 | 正例 |
不喜欢 | 红 | 正例 |
喜欢 | 黑 | 正例 |
不喜欢 | 白 | 正例 |
喜欢 | 红 | 负例 |
不喜欢 | 黑 | 负例 |
喜欢 | 红 | 负例 |
不喜欢 | 白 | 负例 |
1)获得总信息熵:
Ent = - 正例比例 × 2正例比例 - 负例比例 × 2负例比例
2)获得各属性信息熵:
Ent(A) = - A中正例比例 × 2A中正例比例 - A负例比例 × 2A中负例比例
Ent(B) = - B中正例比例 × 2B中正例比例 - B负例比例 × 2B中负例比例
3)获得各属性信息增益:
Gain(A) = Ent - Ent(A)
Gain(B) = Ent - Ent(B)
4)获得各属性熵:
H(A) = - 喜欢比例 × 2喜欢比例 - 不喜欢比例 × 2不喜欢比例
H(B) = - 黑色比例 × 2黑色比例 - 白色比例 × 2白色比例- 红色比例 × 2红色比例
5)计算信息增益率
IGR(A) = Gain(A) / H(A)
IGR(B) = Gain(B) / H(B)
6)选择节点
哪个属性的信息增益率最高,选择该属性为分裂属性。分裂之后,选择不“纯”的结点继续分裂;若子结点都是纯的,因此子节点均为叶子节点,分裂结束。
A | B | 正负例 |
---|---|---|
喜欢 | 黑 | 正例 |
喜欢 | 白 | 正例 |
不喜欢 | 红 | 正例 |
喜欢 | 黑 | 正例 |
不喜欢 | 白 | 正例 |
喜欢 | 红 | 负例 |
不喜欢 | 黑 | 负例 |
喜欢 | 红 | 负例 |
不喜欢 | 白 | 负例 |
以颜色为例,为了方便书写将颜色中各类别进行赋值,其中黑为1、白为2、红为3。
Gini(D,B=1) = ?
1)黑色的个数为3个,非黑色的个数为6个
2)黑色中正例的个数为2个,负例的个数为1个;非黑色中正例的个数为3个,负例的个数为3个
3)Gini(D,B=1) = 3/9 * [2 * 2/3 * (1- 2/3)] + 6/9 * [2 * 3/6 * (1- 3/6)]
此时,选取基尼系数最小的属性点作为切分点进行决策树的划分。
进行这个最佳属性点的寻找和切分直至
1)结点中的样本个数小于预定阈值,或
2)样本集的基尼指数小于预定阈值、如样本基本属于同一类,如完全属于同一类则为0,或
3)特征集为空。