1 决策树算法
1.1 决策树简介
1.1.1 什么是决策树
-
决策树主要有二元分支和多元分支.html
-
决策树是断定树web
- 内部结点是决策节点: 对某个属性的一次测试
- 分支: 每条边表明一个测试结果.
- 叶子: 表明某个类或者类的分布
-
使用决策树进行判别:算法
-
决策树的数学模式解题思路:app
- 贪心的算法 greedy solution
- 不是最好的树,全局最优解
- 当前的树里面找最好的树,局部最优解.
1.1.2 决策树的决策依据
- 决策树的目标:
- 直观思路
- 应该凸显这种路径: 最有利作出判别
- 最大减小在类别断定上的不肯定性
- 纯度上升的更快,更快速到达纯度更高的集合
- 怎么选择优先进行决策的断定属性
- 好的特征是什么原理?
- 得到更多信息来减小不肯定性
- 知道的信息越多,信息的不肯定性越小
1.2 信息熵和条件熵
1.2.1 信息熵
1.2.1.1 不肯定性
- 信息量的度量就等于不肯定性的多少
- 信息熵高:咱们一无所知的事,就须要了解大量的信息
- 信息熵低:咱们对某件事已经有了较多的了解,咱们就不须要太多的信息
1.2.1.2 信息熵的公式
- 对数的运算法则
loga(mn)=logam+logan
- 几率的公式
p(x,y)=p(x)p(y)
- 两个事件同时发生的信息等于各自信息的和
I(x,y)=I(x)+I(y)
随机变量 x 的自信息
I(x)=−logp(x)机器学习
- 负号是用来保证信息量是正数或者零
- 描述的是随机变量的某个事件发生所带来的信息量
信息熵: 传送一个随机变量传输的平均信息量是
I(x)=−logp(x)的指望
H(X)=−i=1∑np(xi)log(p(xi))svg
1.2.1.3 信息熵的解读
- 随机变量 x 的熵,它是表示随机变量不肯定的度量,是对全部可能发生的事件产生的信息量的指望
- 随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大
1.2.2 联合熵
H(X,Y)=−x,y∑p(x,y)logp(x,y)=−i=1∑nj=1∑mp(xi,yi)logp(xi,yi)函数
1.2.3 条件熵
- 条件熵 H(Y|X) 表示在已知随机变量 X 的条件下, 随机变量 Y 的不肯定性
- 条件熵 H(Y|X) 定义为 X 给定条件下, Y 的条件几率分布的熵对 X 的数学指望
- 至关在不一样X的信息熵,加上X的值的几率的加权
1.2.3.1 条件熵公式
假设X有n个取值
H(Y∣X)=i=1∑np(xi)H(Y∣X=xi)学习
见识Y有m个取值
H(Y∣X=xi)=−j=1∑mp(yj∣X=xi)logp(yj∣X=xi)测试
因此
H(Y∣X)=i=1∑np(xi)H(Y∣X=xi)=i=1∑np(xi)(−j=1∑mp(yj∣X=xi)logp(yj∣X=xi))=−i=1∑np(xi)j=1∑mp(yj∣xi)logp(yj∣xi)spa
1.2.3.2 H(Y|X)条件熵的理解
- 在已知一些信息的状况下,因变量 Y 的不纯度,
- 即在X 的划分下,Y 被分割愈来愈“纯”的程度,
- 即信息的加入能够下降熵
- 条件熵表示在已知随机变量 X 的条件下,Y 的条件几率分布的熵对随机变量 X的数学指望
1.2.4 联合熵和条件熵的关系
H(Y∣X)=H(X,Y)−H(X)
引用别人的证实公式为:
H(Y∣X)=H(X,Y)−H(X)=−x,y∑P(x,y)logP(x,y)+x∑P(x)logP(x)=−x,y∑P(x,y)logP(x,y)+x∑(y∑P(x,y))logP(x)=−x,y∑P(x,y)logP(x,y)+x∑y∑P(x,y)logP(x)=−x,y∑P(x,y)logP(x)P(x,y)=−x,y∑P(x,y)logP(y∣x)=−x∑y∑P(x)P(y∣x)logP(y∣x)=−x∑P(x)y∑P(y∣x)logP(y∣x)=x∑P(x)(−y∑P(y∣x)logP(y∣x))=x∑P(x)H(Y∣X=x)
1.3 ID3算法
1.3.1 信息增益
信息增益表示
- 得知特征X的信息, 使得类Y的信息不肯定性(信息熵)减小的程度
- 划分前样本集合D的熵是必定的 ,entroy(前),
- 使用某个特征A划分数据集D,计算划分后的数据子集的熵 entroy(后)
- 信息增益 = entroy(前) - entroy(后)
信息增益的符合表示
- 特征A对训练数据集D的信息增益
g(D,A),定义为集合D的经验熵
H(D)与特征A给定条件下D的经验条件熵
H(D∣A)之差:
g(D,A)=H(D)−H(D∣A)g(D,A)=H(D)−H(D∣A)
- 考虑条件熵和联合熵的关系
g(D,A)=H(D)−H(D∣A)=H(D)−(H(D,A)−H(A))=H(D)+H(A)−H(D,A)
- 这个公式让咱们想到集合的交集公式
信息增益的含义
- 最大减小在类别断定上的不肯定性,更快的断定类别
- 纯度上升的更快,更快速到达纯度更高的集合
1.3.2 ID3的算法流程
- (1)自上而下贪婪搜索
- (2)遍历全部的属性,按照信息增益最大的属性进行分裂
- (3)根据分裂属性划分样本
- (4)重复上述流程,直至知足条件结束
1.3.3 ID3算法的缺陷
缺陷1
- 缺点:信息增益偏向取值较多的特征
- 缘由:当特征的取值较多时,根据此特征划分更容易获得纯度更高的子集,所以划分以后的熵更低,因为划分前的熵是必定的,所以信息增益更大,所以信息增益比较 偏向取值较多的特征
极端状况
其余缺陷
- 不能处理连续值属性
- 不能处理属性值缺失状况
- 不能进行剪枝
1.4 C4.5算法
1.4.1 信息增益率
- 能够理解为: 信息增益率 = 分裂信息将信息增益的标准化
- 或者理解为: 信息增益率 = 惩罚参数 * 信息增益
分裂信息:
- 以前是把集合类别做为随机变量,如今把某个特征做为随机变量,按照此特征的特征取值对集合D进行划分v类,计算熵
HA(D)
SplitHA(D)=−j=1∑vD∣Dj∣logD∣Dj∣
信息增益率
GainRadion(A)=SplitHA(D)g(A,D)
1.4.2 连续值属性和分裂点
步骤:
- (1)连续值属性从小到大排序,每对相邻点的中点做为分裂点
- (2)数据集D中有N个不一样的连续值属性值, 产生N-1个分裂点
- (3)按照每一个分裂点,计算每一个二分树的信息增益
- (4)取得信息增益最大的分裂点
1.4.3 缺失值处理
1.4.3.1 学习过程当中-缺失值处理
信息增益
- 计算信息熵,忽略缺失值
- 计算信息增益, 乘以未缺失实例的比例
分裂信息熵
分裂时候
- 缺失值实例分配给全部判断节点下面的分支上
- 可是每一个分支的缺失值实例带一个权重: 该分支的几率(频率估算)
- 其余正常实例权重为1
叶节点定义
- (N/E)形式
- N该叶节点的实例数
- E叶节点中属于其余分类的实例数
1.4.3.2 分类过程-缺失值处理
- 缺失值该属性的遍历全部的分支
- 该属性的全部分支的几率: 分支的叶子节点的N必上全部N的比值
- 由于叶节点是NE的形势.
- 根据分支的几率,叶节点的正例几率反例几率的加权和
1.4.4 剪枝
1.4.4.1 过拟合
训练样本中的噪声致使过拟合
训练样本中缺少表明性样本所致使的
1.4.4.2 预剪枝
限定树的的最大生长高度
1.4.4.3 后剪枝
后剪枝的目标
在测试集上定义损失函数,经过剪枝使损失函数在测试集上有所下降
步骤
- (1)自底向上遍历每个非叶子节点, 将当前的非叶子节点剪枝(从树中减去,其下全部的叶节点合并一个节点,代替被剪枝的节点)
- (2)计算剪枝先后的损失函数
- (3)若是损失函数变小, 则剪枝. 不然则还原.
- (4)重复上述过程,遍历全部的节点
子树的损失函数
J(τ)=E(τ)+λ∣τ∣
后剪枝的损失函数阈值
g(c)=∣τc∣−1E(c)−E(τc)λk=min(λ,g(c))
注意
- 子树的损失函数不作过多介绍,
- 感兴趣能够参考博客:CART-分类和回归树
- https://blog.csdn.net/guoziqing506/article/details/81675022
2 CART算法
2.1 基尼不纯度gini impurity
- 或者称为基尼指数gini index
- 区别于基尼系数gini coefficient, 二者概念不一样
假设有K个类,样本点属于第k类的几率为
pk,则几率分布的基尼指数定义为:
G(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
知足的条件:
k=1∑Kpk=1
2.1.1 基尼指数公式的推导
−logp(x)进行泰勒展开,
p(x)的高阶趋于0,忽略高阶项.就获得基尼指数(不纯度)的公式
- 基尼不纯度的计算能够看出,它的计算更加方便,
- 基尼不纯度是熵的一个近似值
2.1.2 二分类的基尼指数
对于二分类问题,若是样本点属于第一类的几率为p,则几率分布的基尼系数为
Gini(p)=2p(1−p)
设
Ck为D中属于第k类的样本子集,则基尼指数为
Gini(D)=1−k=1∑K(∣D∣∣Ck∣)2
设条件A将样本D切分为D1和D2两个数据子集,则在条件A下的样本D的基尼指数为:
Gini(D,A)=D∣D1∣Gini(D1)+D∣D2∣Gini(D2)
2.2 CART分类树
条件A, 将样本D, 切分为D1和D2两个数据子集的gini增益为
ΔGini(A)=Gini(D)−Gini(D,A)=(1−k=1∑K(∣D∣∣Ck∣)2)−(D∣D1∣Gini(D1)+D∣D2∣Gini(D2))
2.2.1 算法实现步骤
- 1)计算现有样本D的基尼指数,以后利用样本中每个特征A,及A的每个可能取值a,根据A>=a与A<a将样本分为两部分,并计算Gini(D,A)值
- 2)找出对应基尼指数最小Gini(D,A)的最优切分特征及取值,并判断是否切分中止条件,否,则输出最优切分点
- 3)递归调用1)2)
- 4)生成CART决策树
2.3 CART回归树
2.3.1 CART回归树的概念和公式
-
(1)训练集:
D={(X1,y1),(X2,y2),…,(Xn,yn)},
Y是连续变量
-
(2)输入数据空间
X划分为m个区域:
{R1,R2,…,Rm}
-
(3)而后赋给每一个输入空间的区域
Ri有一个固定的表明输出值
Ci
-
(4)回归树的模型公式:
f(X)=i=1∑mCiI(X∈Ri)
- 若是
X∈Ri,则
I=1,不然
I=0
- **含义:**先判断X属于哪一个区域,而后返回这个区域的表明值。
-
(5)计算损失函数:
-
Ri这个区域中的元组的y值的均值
gi=Ni1Xj∈Ri∑yj
- 某个区域
Ri回归模型的损失函数
J(C)=Xj∈Ri∑(f(Xj)−gi)2
2.3.2 最小二乘回归树生成算法
注: 参考李航的<机器学习>编写, 更详细内容,请自行搜索资料查看
-
(1)选择最优切分变量 j 与切分点 s,求解
j,smin⎣⎡c1minxi∈R1(j,s)∑(yi−c1)2+c2minxi∈R2(j,s)∑(yi−c2)2⎦⎤
-
(2)用选定的对 (j,s) 划分区域并决定相应的输出值
R1(j,s)={x∣x(j)≤s},R2(j,s)={x∣x(j)>s}
-
(3)继续对两个子区域调用步骤(1),(2),直至知足中止条件
-
(4)将输入空间分为 M 个区域
R1,R2,⋯,RM,生成决策树
f(x)=m=1∑Mc^mI(x∈Rm)