学堂在线机器学习笔记
决策树基本上就是把我们以前的经验总结出来。我给你准备了一个享受运动的训练集。如果我们要出门进行体育活动,一般会根据“天气”、“温度”、“湿度”、“风”这几个条件来判断,最后得到结果:去运动?还是不去?
适用于决策树学习的经典目标问题
样本表示
例如享受运动的例子:
6值属性:天气、温度、湿度、风、水温、预测天气
某一天的天气实例:{晴、暖、一般、强、暖、不变}
决策树-概念
经典决策树算法-ID3 流程
这里要解决2个问题:哪个属性是最佳属性?何时返回(停止分裂)?
第一个问题:
属性选择和节点混杂度(Impurity)
用熵来衡量混杂度
简单的计算一下,A1的熵
其他的混杂度度量
度量混杂度的变化--信息增益(IG)
例如由于对A的排序整理带来的熵的期望减少量
A1的信息增益
A2的信息增益 。 所以选择信息增益大的A1节点
解决完怎么选择最佳属性后,再来看看第二个问题 何时返回(停止分裂节点)?
可能情形3 是信息增益为0 但使用这个方法一般是不可行的
比如 y=a xor b (xor表示异或)
如果按IG=0终止,那么在第一步都无法选取属性。有多个相同的IG取值时,正确的做法是随机选一个属性
ID3算法搜索的假设空间
目标函数一定在假设空间里
不超过20个问题(根据经验)
局部最优
数据驱动的搜索选择
对噪声数据有鲁棒性
ID3中的归纳偏置 (Inductive Bias )
没有对假设空间作限制
尝试找到最短的树
该算法的偏置在于对某些假设具有一些偏好(preference) (搜索偏置), 而不是 对假设空间 H 做限制(restrict)(描述偏置).
模型在训练集上的表现很好,但在测试集上的表现不好
决策树过拟合的一个极端例子:
I. 当数据的分裂在统计意义上并不显著时,就停止增长:预剪枝
II. 构建一棵完全树,然后做后剪枝
类型I .预剪枝:何时停止分裂(1):基于样本数
通常 一个节点不再继续分裂,当:
类型I .预剪枝:何时停止分裂(2):基于信息增益阈值
设定一个较小的阈值,如果满足下述条件则停止分裂
优点: 用到了所有训练数据 , 叶节点可能在树中的任何一层
缺点: 很难设定一个好的阈值
类型 II. 后剪枝 (1): 错误降低剪枝
验证集:
已知标签
测试效果
在该集合上不做模型更新!
在验证集上测试剪去每个 可能节点(和以其为根的子树)的影响
贪心地去掉某个可以提升验证集准确率的节点
赋值成最常见的类别
给这个节点多类别的标签
每个类别有一个支持度 (根据训练集中每种标签的数目)
测试时: 依据概率选择某个类别或选择多个标签
如果是一个回归树 (数值标签),可以做平均或加权平均
类型 II. 后剪枝 (2):规则后剪枝
1.将连续属性离散化
可以采用等宽法(分成具有相同宽度的区间)等频法(相同数量的记录放进每个区间)
2. 具有过多取值的属性