0 前置知识
● 从逻辑角度,其实即为一堆if else语句的组合
● 从几何角度,根据某种准则划分特征空间
特征选择
● 决定用哪个特征来划分特征空间
自信息 I(x)=−logbp(x)I(x) = -log_b p(x)I(x)=−logbp(x)
信息熵(自信息的期望 --度量随机变量X的不确定性,信息熵越大越不确定) H(X)=E(I(X))=−∑xp(x)logbp(x)H(X) = E(I(X)) = -\sum_x p(x) log_bp(x)H(X)=E(I(X))=−∑xp(x)logbp(x)
● 当X的各个取值的概率均等时信息熵最大
条件熵(Y的信息熵关于概率分布X的期望):已知X后Y的不确定性
H(Y∣X)=∑xp(x)H(Y∣X=x)H(Y|X) = \sum_x p(x)H(Y|X=x)H(Y∣X)=∑xp(x)H(Y∣X=x)
● 从单个属性(特征)a的角度来看,假设其可能取值为{a1,a2,...,aV}\{a^1,a^2,...,a^V\}{a1,a2,...,aV},DvD^vDv表示属性aaa取值为av∈{a1,a2,...,aV}a^v\in \{a^1,a^2,...,a^V\}av∈{a1,a2,...,aV}的样本集合,则已知属性aaa的取值后,样本集合DDD的条件熵为∑v=1V∣Dv∣∣D∣E(Dv)\sum_{v=1}^{V} \frac{|D^v|}{|D|}E(D^v)∑v=1V∣D∣∣Dv∣E(Dv)
● 越小,说明选取的a划分的效果越好
信息增益 --在已知属性(特征)a的取值后yyy的不确定性减少的量,即纯度的提升
Gain(D,a)=E(D)−∑v=1V∣Dv∣∣D∣E(Dv)Gain(D,a)=E(D)-\sum_{v=1}^{V} \frac{|D^v|}{|D|}E(D^v)Gain(D,a)=E(D)−∑v=1V∣D∣∣Dv∣E(Dv)
1基本流程
属性:
有监督学习;规则通过训练得到
目标:进行分类
步骤:
1–特征选择
准则:信息增益
2–决策树生成
选择信息增益最大的特征作为节点特征
3–决策树剪枝
抵抗过拟合
决策树的三个终止条件
子结点中的样本属于同一类
子结点没有样本了,无法划分–将其类别设定为其父结点所含样本最多的类别
特征已经用完或所有样本在所有特征上取值一样 无法划分----把当前结点标记为叶节点,并将其类别设定为该结点所含样本最多的类别
2 常见算法
ID3–以信息增益为准则来划分属性的决策树
Gain(D,a)=E(D)−∑v=1V∣Dv∣∣D∣E(Dv)Gain(D,a)=E(D)-\sum_{v=1}^{V} \frac{|D^v|}{|D|}E(D^v)Gain(D,a)=E(D)−∑v=1V∣D∣∣Dv∣E(Dv)
a∗=argmina∈AGain(D,a)a_*=argmin_{a\in A} Gain(D,a)a∗=argmina∈AGain(D,a)
● 信息增益越大,意味着属性a来进行划分所获得的“纯度提升”越大
算法
先遍历所有属性,找到那个使得信息增益最大的那个属性作为划分
进一步继续选
缺点
● 无法处理连续数据,因为是对特征进行选择,而不是特征值
● 由于是根据信息增益来进行划分,所以模型在选择的时候,会倾向于选择取值数目较多的属性(特征)。
C4.5 (ID3改进版本)
–利用信息增益比
Gainratio=Gain(D,A)IV(A)Gain_{ratio}=\frac{Gain(D,A)}{IV(A)}Gainratio=IV(A)Gain(D,A) IV(A)=−∑v=1V∣Dv∣∣D∣logb∣Dv∣∣D∣IV(A)=-\sum_{v=1}^V\frac{|D^v|}{|D|}log_b \frac{|D^v|}{|D|}IV(A)=−∑v=1V∣D∣∣Dv∣logb∣D∣∣Dv∣
● IV(A)称为属性A的“固有值”,属性A的可能取值数目越多(即V越大),则IV(A)的值通常会越大
● 缺点—但信息增益率对可取值数目较少的属性有所偏好
● 改进: 先选出信息增益高于平均水平的属性,再选取信息增益比较大的属性
改进点
1.改进ID3缺点
2.可以处理连续化数据
● 如何切分?对连续属性进行离散化处理
给定样本集D和连续属性a,假定a在D上出现了n个不同的取值
○ 将这些值从小到大进行排序,记为{a1,a2,⋯ ,an}\{a^1,a^2,\cdots,a^n\}{a1,a2,⋯,an}
○ 二分法将A的所有属性值分为两部分:(基于划分点t可将D分为子集Dt−、Dt+D^-_t、D^+_tDt−、Dt+)
■ 对于连续属性A,考察包含n-1个元素的候选划分点集合
●
■ 计算每种划分方法对应的信息增益,选取信息增益最大的划分方法作为属性A二分的阈值
3.可以处理缺失值
CART
Gini系数
实际上就是将信息熵改为基尼系数Gini(D)=∑k=1∣Y∣pk(1−pk)=1−∑k=1∣Y∣pk2Gini(D)=\sum_{k=1}^{|\mathbb{Y}|}p_k(1-p_k)=1-\sum_{k=1}^{|\mathbb{Y}|}p_k^2Gini(D)=∑k=1∣Y∣pk(1−pk)=1−∑k=1∣Y∣pk2
● Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率
○ 故,基尼值越小,碰到异类的概率就越小,纯度就高
Gini指数
属性A的基尼指数定义为
Gini_index(D,A)=∑v=1V∣Dv∣∣D∣Gini(Dv)Gini\_index(D,A)=\sum_{v=1}^V\frac{|D^v|}{|D|}Gini(D^v)Gini_index(D,A)=∑v=1V∣D∣∣Dv∣Gini(Dv)
算法策略:选择那个使得划分后基尼指数最小的属性作为最优划分属性
a∗=argmina∈AGini_index(D,A)a_* = argmin_{a\in A} Gini\_index(D,A)a∗=argmina∈AGini_index(D,A)
4 剪枝处理
剪枝是对付“过拟合”的主要手段
预剪枝
● 在决策树生成过程中,对每个结点在划分前后进行估计,若当前结点的划分不能带来决策树泛化性能提升(用验证集来检验),则停止划分,并将当前结点标记为叶结点
● 但有欠拟合风险
后剪枝
● 决策树构建完成之后,先从训练集生成一颗完整的决策树,然后自底向上地对非叶结点进行考察;
● 若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升(用验证集来检验),则将该子树替换为叶结点
● 后剪枝方法:
○ 训练集分为生长集、剪枝集;
○ 同一数据集进行决策树生长和剪枝
○ 如CCP、REP、PEP、MEP
■ REP 自下而上剪枝,需要新的验证集
■ PEP 自上而下剪枝,无需新的验证集
4 连续值与缺失值的处理
连续值–离散化
● 详见C4.5改进点
缺失值–进行赋权
1)如何在属性值缺失的情况下进行划分属性选择?
2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
5 多变量决策树
● 若把每个属性视为坐标空间中的一个坐标轴,则d个属性描述的样本就对应了d维空间中的一个数据点,对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界
● 决策树所形成的分类边界的特点:轴平行(它的分类边界由若干个与坐标轴平行的分段组成)
多变量决策树 就是能实现以下“斜划分”甚至更复杂划分的决策树
● 此类决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试;
如下图所示
损失函数最小作为剪枝的标准
- 生成算法产生的决策树T_0底端开始不断剪枝,直到根节点,形成子树序列
- 通过交叉验证集在独立的验证数据集上对子树序列进行测试,从中选择最优子树
损失函数:
Cα(T)=C(T)+α∣T∣C_\alpha(T)=C(T)+\alpha|T|Cα(T)=C(T)+α∣T∣ |T|是叶节点个数,α≥0\alpha\geq0α≥0为参数 C(T)是对训练数据的预测误差(如经验熵)
https://blog.csdn.net/weixin_42398658/article/details/83715240
回归树的创建
● 递归地将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树
● 选择最优切分变量j与切分点s
优缺点
优点
● 容易提取出规则,适合处理有缺失属性的数据
● 能够处理不相关的特征
缺点
● 容易发生过拟合
● 容易忽略数据集属性的相互关联
● 不同算法属性倾向性不同
损失函数
正则化的极大似然函数