决策树学习笔记
来源:互联网 发布:法师雾化器做芯数据 编辑:程序博客网 时间:2024/06/07 20:00
参考:
《机器学习》–周志华
CART分类与回归树 学习笔记
经典算法详解–CART分类决策树、回归树和模型树
模型结构
这是基于树的结构进行决策,跟人类面临决策问题的处理机制一致。在面对一个决策问题时,要进行一系列的自决策,最终决策的结论对应了我所希望的判定结果。决策过程提出的每个判定问题属于对属性的测试,每个测试的结果要么导出最终结论,要么导出进一步的判定问题,其考虑范围是上一次属性判定的限定范围内。
一个决策树包含一个根结点,若干个内部结点和叶节点,每个内部结点对应一个属性测试。叶子结点对应决策结果。每个结点包含的样本集合随着属性测试结果被划分到子结点中。从根结点到每个叶节点的路径代表了一个判定测试序列。决策树学习的基本流程遵循“分而治之”的策略。
决策树生成流程
输入:样本集合D={(x1,y1),…(xn,yn)}
属性集合A={a1,…,an}
函数 GenerateTree(D,A)
生成结点node
if D中样本全属同一类别C then
把node标记为C类叶节点;returen
end if
if A为空 or D样本在A的取值一样 then
把node标记为D中多数类的叶节点;return ##利用当前结点包含样本的后验分布
end if
if 集合D为空 then
把node标记为空结点,而且类别标记为父结点中样本量最多的类别 ##把父结点的样本分布当作当前结点的先验分布
end if
从A中选择最优划分属性a*
for a*的每个值do
为node生成一个分支,令d表示样本集在a*是某个值的样本子集
if d 为空
将分支结点标记为叶节点,类别标记为D中样本最多的类;return
else
以GenerateTree(d,A{a*})为分支结点
end if
end for
最优属性划分
我们希望分支结点所包含的样本尽可能属于同一个类,也就是结点的“纯度”越来越高。
1. 信息增益
信息熵
度量样本集合纯度常用的指标,假设当前样本集合第k类样本所占的比例为pk=(k=1,2,...,|Y|) ,则D中的信息定义为:Ent(D)=−∑k=1|Y|pklog2pk
熵越小,纯度越高信息增益
假定离散属性a*有m个取值,D在属性a*取值为av 的子集记为Dv ,不同的子集包含的样本数量不同,以|Dv||D| 作为该子集的权重。用属性a*对集合D进行划分的信息增益:Gain(D,a∗)=Ent(D)−∑v=1V|Dv||D|Ent(Dv)
信息增益越大,表示用a*划分获得的子集“纯度”更高,ID3决策树算法就用信息增益准则来划分属性。
假设属性a*的值的数量V=M,训练样本数量为N,类的数量为K,则计算a*的信息增益的时间复杂度为O(N+MK)信息增益率(比)
信息增益有一个问题,就是对可取值数目较多的属性有偏好,为减少这种不利影响,C4.5使用增益率:Gain_ratio(D,a)=Gain(D,a)IV(a∗)
其中IV(a∗)=−∑v=1m|Dv||D|log2|Dv||D|
因为增益率对可取值数目较少的属性有所偏好,C4.5不直接选择增益率最大的属性进行划分,而是使用了启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再选择增益率最高基尼值
CART(classify and regression tree)使用基尼系数。如果采用上述符号。数据集D的基尼值度量公式:Gini(D)=∑k=1|Y|∑k′≠kpkpk′=∑k=1|Y|1−p2k
Gini(D)反应了从数据集D中随机抽取两个样本,类别标记不一样的概率,基尼值越小,数据集D越纯。
- 基尼指数
属性a*的基尼指数定义为:Gini_index(D,a∗)=∑v=1VDvDGini(Dv)
在属性集合A中,选择使得划分后基尼指数最小的属性作为划分属性。计算时间复杂度跟信息增益一样
ID3
树的结构:多叉树
输入数据类型:只能是离散型
划分准则:信息增益
C4.5
树的结构:多叉树
输入数据类型:离散型和连续型
划分准则:信息增益比
能够处理属性缺失值
对连续型的处理:
把那个属性的值按升序排序,每两个值之间的重点为候选分裂点,计算所有候选分裂点的信息增益,选择增益最大的分裂点。N个不同的值要计算N-1次信息增益,为了减少计算量,可以在决策属性发生改变的地方才定一个分裂点。
CART
树的结构:二叉树
输入数据类型:离散型和连续型
划分准则:基尼指数和最小二乘法
分类树:
原理
以缩小不纯度为目标缩小决策的难度特征划分准则
使用基尼指数作为选择一个特征划分后得到的数据集的纯度,每次划分只能是二分,对于取值多于两个值的属性,采取超划分,也就是在所有取值中只选择一个划分点,使得划分后的子集的基尼值最小处理连续属性
把连续属性进行排序,在每个值之间定一个候选分裂点,计算选择候选分裂点作为二分点的基尼指数,选择基尼指数最小的分裂点。
回归树:
原理:
当数据拥有众多特征并且特征之间关系十分复杂时,构建全局模型的想法就显得太难了,一种可行的方法是将数据集切分成很多份易建模的数据,然后利用线性回归技术来建模。适用场景:
标签值是连续分布的,但又是可以划分群落的,群落之间是有比较鲜明的区别的,即每个群落内部是相似的连续分布,群落之间分布却是不同的。回归树返回的是“一团”数据的均值,而不是具体的、连续的预测值(即训练数据的标签值虽然是连续的,但回归树的预测值却只能是离散的)。所以回归树其实也可以算为“分类”算法。所以,利用回归树可以将复杂的训练数据划分成一个个相对简单的群落,群落上可以再利用别的机器学习模型再学习
假设CART把输入空间划分为m个区域R1,...,RM ,每个区域的期望输出值为c1,...cm 。每个区域的期望输出值是这个区域内的标签平均值。 最终CART的输出值为:f(xi)=∑m=1McmI(xi∈Rm)=∑xk∈RjMy2k xi 是输入向量,由若干个特征组成,根据回归树对特征的划分,得知xi 属于哪个区域,假设为Rj 区域,则使用Rj 区域的期望输出值作为该输入变量的预测值。
因为输出是实值,可用作概率预测、排序特征划分准则
使用平方误差最小准则
假设使用j特征的取值s进行划分,得到两个区域R1(j,s),R2(j,s) Cost=[∑xi∈R1(j,s)(yi−f(xi))2+∑xj∈R2(j,s)(yj−f(xj))2]
因为f(xi) 是均值,所以损失函数相当于方差。寻找使得Cost最小的取值为划分点。然后再计算其他特征的最佳划分点,最终选择总方差最小的特征作为当前划分特征。
因为只对每个属性进行二分,所以计算一个属性某个特征数据类型
可以是离散型和连续型
- 决策树学习笔记整理
- 决策树学习笔记
- 决策树算法学习笔记
- 决策树学习笔记整理
- 决策树学习笔记整理
- 决策树学习笔记整理
- 决策树学习笔记
- 决策树学习笔记整理
- 决策树学习笔记整理
- 【复习笔记】决策树学习
- 决策树学习笔记整理
- 决策树算法学习笔记
- 决策树学习笔记
- ML学习笔记-决策树
- 决策树学习笔记整理
- 决策树学习笔记整理
- 决策树学习笔记
- 决策树学习笔记整理
- Dijkstra最短路算法
- f:loadBundle用法
- 格式化
- 微信JS支付代码 前端调用微信支付接口
- 自定义select之模糊查询
- 决策树学习笔记
- Haproxy搭建MySQL主备和Tomcat负载均衡集群
- jieba分词
- 利用django框架,手把手教你搭建数据可视化系统(一)
- if-elif条件判断,while循环和for…in循环
- 【网络管理者必知】2分钟了解新出台的《网络安全法》
- beautifulsoap 安装失败问题
- 文章标题
- FTPrep, 86 Partition List