4.1.1 组成
一颗决策树包含一个根结点、若干个子结点和若干个叶结点。
根结点:包含样本全集;
子结点:对应属性划分,包含划分样本;
叶结点:对应决策结果,包含决策样本。
从根结点到每个叶结点的路径:对应一个判定测试序列(系列子决策)。
4.1.2 目的
产生一棵泛化能力强,处理未见示例能力强的决策树。
4.1.3 策略
决策树采用分而治之(Divide and Conquer)策略,以一系列的子决策决定分类结果。
4.1.4 算法
上图算法中最关键的是第8行,即如何选择最优划分属性。
决策树的生成是一个递归过程。核心是最优划分属性的选择,有三种情形导致递归返回:
(1) 当前结点包含的样本全属于同一类别,无需划分,该结点类别确定。
(2) 所有样本在所有属性值相同,或属性集为空,无法划分,该结点类别设定为所含样本最多的类别(利用当前结点的后验分布)。
(3) 当前结点包含的样本集合为空,不能划分。父结点类别确定(利用当前结点的先验分布)。
4.2 划分选择
判断最优划分属性的的依据是随着划分过程不断进行的,我们希望分支结点所包含的样本尽可能属于同一类,即结点的纯度(purity)越来越高。简单的说就是每一次根据某个条件分类之后,尽可能使样本都符合这个条件,说明我们的分类条件是极具区分意义的,能够明显的将样本分开。
4.2.1信息增益-ID3决策树
4.2.1.1 信息熵
信息熵的定义:
信息熵(Information Entropy)用来描述信源的不确定度,一件事情发生的概率越小,事件发生后所包含的信息量越大,信息熵越高。首先我们用信息熵来度量样本集合的纯度(purity),一个样本集合的信息熵越低,则其纯度越高。
信息熵的公式定义:
其中,D 指样本集;y 指样本总共有多少类;k 指第k类样本;pk 指第k类样本在D中的比例。
Ent(D)最小值为0,最大值为log2∣y∣.
信息熵的三个性质:
单调性:发生概率越高的事件,其携带的信息量越低;
非负性:信息熵可以看作为一种广度量,非负性是一种合理的必然;
累加性:即多随机事件同时发生存在的总不确定性的量度是可以表示为各事件不确定性的量度的和,这也是广度量的一种体现。
4.2.1.1 信息增益
ID3决策树算法 使用信息增益(Information Gain)选择划分属性。
偏好:信息增益对可取数目较多的属性有所偏好。
属性a的信息增益公式定义为:
其中,D指样本集;a指属性;v 和V指a所有可能的取值;Dv指属性值为v vv时划分得到的子集。
信息增益最优属性
信息增益越大,意味着由这个属性来进行划分对纯度的提升越大,即对决策的帮助越大。所以对每个属性均求出信息增益,再取最大的那个,就是最优划分属性。
信息增益最优属性公式定义:
4.2.2 增益率-C4.5决策树
如果一个属性对每个样本的取值都是不同的,那么针对这个属性的每个取值只包含一个样本并且分支结点的纯度已达最大,这样的决策树显然没有泛化能力,无法对新样本进行预测。因为新的样本在这个属性的值与决策树所学习的均不相同。因为信息增益准则对可取值数目较多的属性有偏好。所以增益率要对信息增益进行优化。
增益率公式定义:
IV(a)称为属性a的固有值(intrinsic value),属性a的可能取值数目越多,IV(a)的值越大,增益率就越小。所以我们在应用增益率准则的时候,先从划分属性中选择信息增益高于平均水平的属性,再进行二次选择,选择增益率最高的作为最终的最优化分属性。
4.2.3 基尼指数-CART决策树
4.2.3.1 基尼值
基尼值是另一种度量数据集纯度的指标,与信息熵性质一样。其反映了从数据集中随机抽取两个样本,其类别不一致的概率。因此,基尼值越小,则数据集的纯度越高。
基尼值公式定义:
4.2.3.2 基尼指数
属性a的基尼指数公式定义为:
最优化分属性
选基尼指数最小的那个属性作为最优化分属性:
4.3 剪枝处理
4.3.1 预剪枝
预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。
#仅有一层划分的决策树称为“决策树桩
预剪枝基于贪心策略,预划分当前结点,减少了决策树的分支。
优点:
显著减少了决策树的训练时间开销和测试时间开销;
降低了过拟合的风险;
缺点:
数据集可能存在当前划分验证集精度低,但后续划分显著提高的情形,无法得到最优决策树;
增加了欠拟合的风险;
4.3.2 后剪枝
后剪枝是先从训练集生成一颗完整的决策树,然后自底向上地非叶结点进行考察,若将该结点对应子树替换为叶结点能带来决策树泛化能力的提高,则将该子树替换为叶结点。
后剪枝相对预剪枝保留了更多的分支。
优点:
保留了更多分支,泛化性能往往优于预剪枝决策树;
降低了欠拟合的风险;
缺点:
先从训练集生成一颗完整的决策树,训练时间开销和测试时间开销比未剪枝决策树和预剪枝决策树要大得多;
4.4 连续与缺失值
4.4.1 连续值处理
之前基于离散属性生成决策树,现在考虑使用连续属性。由于连续属性可取值数目无限,使用连续属性离散化技术。最简单的策略采用二分法(bi-partition),将给定连续属性的区间的中位点作为候选划分点。
计算纯度的方式跟之前一致,但是将中位点值替换为划分属性值。同时输入可以变成范围值,泛化能力增强。
C4.5:Information Gain (Ratio) based Threshold
CART:遍历所有输入变量j 和切分点s,根据最小化平方误差准则选取;
4.4.2 缺失值处理
缺失值面临的两个问题:
如何在属性缺失的情况下进行属性划分选择?
给定划分属性,样本在该属性上的缺失值,如何对样本进行划分?
对于第一个问题,若取值未知,则根据其他样本的取值来计算划分点。
对于第二个问题,若取值未知,则将该样本同时划入所有子结点,且设置一个样本权值用于计算loss。
缺失值处理方法:
4. 插值法(Imputation): QUEST, CRUISE
5. 替代法(Alternate/Surrogate Splits):CART, CRUISE
6. 缺失值单独分支(Missing value branch):CHAID, GUIDE
7. 概率权重(Probability weights): C4.5
4.5 多变量决策树
多变量决策树是用属性的线性组合(对应多变量)划分结点。
将样本集合对应多维空间,每个属性对应一个维度,分类就是在不同类空间寻找边界。单变量决策树的分类边界是由若干个与坐标轴平行的分段组成。
多变量决策树的分类边界是由若干个折线分段组成。
4.6 总结
决策树采用的是一种简单且直观的“分而治之”(divide-and-conquer)策略
决策树根据数据集的总体纯度来衡量不同属性划分的优劣
当属性选择过于频繁会导致模型过拟合,这时候就需要使用剪枝算法来进行处理
剪枝算法的判断标准是剪枝前后模型的性能指标是否提高
当遇到连续值的属性时,可以通过将其拆解成两块的方式将数据转换为离散值
当遇到缺失值属性时,可以通过在属性选择算法中加入缺失值数据的影响来适应
在处理真实分类边界比较复杂的学习任务时,我们可以使用属性的线性组合来对数据进行划分
6.1 间隔与支持向量
6.1.1 超平面
样本空间中,任意点x到超平面(w,b)的距离公式为: 推导过程
r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ ( 西 瓜 书 , 6.2 ) r = \frac{|w^Tx+b|} {||w||} \quad (西瓜书,6.2)
r=
∣∣w∣∣
∣w
T
x+b∣
(西瓜书,6.2)
超平面可以理解为一维空间中的点,二维空间中的线,三维空间中的平面的扩展,是分类的决策边界。支持向量机(Support Vector Machine, SVM)是针对二分类任务设计的,其思想是基于训练样本集D在样本空间找到一个划分超平面,将不同类别的样本划分开。在选择超平面时,应该选择使超平面到离两种类别的样本点尽量远。
6.1.2 支持向量
距离超平面最近的几个训练样本点被称为支持向量
6.1.3 间隔
两个异类支持向量到超平面的距离之和为间隔
6.1.4 最大间隔
间隔最大化:SVM的直观目的就是找到最小函数间隔的样本点(即支持向量),然后最大化它的几何间隔。
要找到最大间隔的超平面,就是要找到满足约束条件的参数w 和 b,使得 r 最大,
即:
max w , b 2 ∣ ∣ w ∣ ∣ , s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m . ( 西 瓜 书 , 6.5 ) \max_{w,b} \frac{2}{||w||} ,\quad s.t.y_i(w^Tx_i+b)\geq1,\quad i=1,2,...,m. \quad (西瓜书,6.5)
w,b
max
∣∣w∣∣
2
,s.t.y
i
(w
T
x
i
+b)≥1,i=1,2,...,m.(西瓜书,6.5)
亦即:
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 , s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m . ( 西 瓜 书 , 6.6 ) \min_{w,b} \frac{1}{2} ||w||^2 ,\quad s.t.y_i(w^Tx_i+b)\geq1,\quad i=1,2,...,m. \quad (西瓜书,6.6)
w,b
min
2
1
∣∣w∣∣
2
,s.t.y
i
(w
T
x
i
+b)≥1,i=1,2,...,m.(西瓜书,6.6)
这就是SVM的基本型。
6.2 对偶问题
6.2.1 凸二次规划
公式6.6 本身是一个凸二次规划(convex quadratic programming)问题
6.2.2 对偶问题
更高效求解参数w和b的方法:拉格朗日乘子法
对SVM基本型式子的每条约束添加大于等于零的拉格朗日乘子,得到该问题的拉格朗日函数:
L ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m a i ( 1 − y i ( w T x i + b ) ) ( 西 瓜 书 , 6.8 ) L(w,b,a) =\frac {1}{2}||w||^2 + \sum_{i=1}^ma_i(1-y_i(w^Tx_i+b)) \quad(西瓜书,6.8)
L(w,b,a)=
2
1
∣∣w∣∣
2
+
i=1
∑
m
a
i
(1−y
i
(w
T
x
i
+b))(西瓜书,6.8)
令L(w,b,α)对w和b的偏导为零:
w = ∑ i = 1 m a i y i x i ( 西 瓜 书 , 6.9 ) w=\sum_{i=1}^m a_iy_ix_i \quad(西瓜书,6.9)
w=
i=1
∑
m
a
i
y
i
x
i
(西瓜书,6.9)
0 = ∑ i = 1 m a i y i ( 西 瓜 书 , 6.10 ) 0=\sum_{i=1}^m a_iy_i \quad(西瓜书,6.10)
0=
i=1
∑
m
a
i
y
i
(西瓜书,6.10)
将L(w,b,α)中的w和b消去,得到SVM基本型式子的对偶问题:
max a ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i T x j , ( 西 瓜 书 , 6.5 ) \max_{a}\sum_{i=1}^m a_i - \frac {1}{2} \sum_{i=1}^m\sum_{j=1}^m a_i a_j y_i y_j x_i^Tx_j, \quad (西瓜书,6.5)
a
max
i=1
∑
m
a
i
−
2
1
i=1
∑
m
j=1
∑
m
a
i
a
j
y
i
y
j
x
i
T
x
j
,(西瓜书,6.5)
s . t . ∑ i = 1 m a i y i = 0 , a i ≥ 0 , i = 1 , 2 , . . . , m . \quad s.t.\sum_{i=1}^m a_iy_i=0,a_i\geq0,\quad i=1,2,...,m.
s.t.
i=1
∑
m
a
i
y
i
=0,a
i
≥0,i=1,2,...,m.
KKT(Karush-Kuhn-Tucker)条件
求解对偶问题中的α
思路:当做二次规划问题求解
算法:
二次规划算法
缺点:问题的规模正比于训练样本数,开销大
SMO(Sequential Minimal Optimization)算法
先固定αi之外的所有参数,再求αi上的极值,不断执行,直到收敛。
确定偏移项b
思路:使用所有支持向量求解的平均值
6.2.3 支持向量机的一个重要性质
训练完成后,大部分的训练样本都不用保留,最终模型只与支持向量有关。
6.3 核函数
6.3.1 支持向量展开式
模型最优解可通过训练样本的核函数展开:
6.3.2 核函数定理
核矩阵(kernel matrix)K总是半正定的
只要一个对称函数所对应的核矩阵半正定,就能用作核函数
对于一个半正定矩阵,总能找到一个与之对应的映射
任何一个核函数都隐式地定义了一个称谓“再生核希尔伯特空间”(RKHS)的特征空间
特征空间的好坏对支持向量机的性能至关重要。
“核函数的选择”成为支持向量机的最大变数。
6.3.3 常用的核函数
6.3.4 核函数特点
两个核函数的线性组合结果也是核函数,即核函数加核函数也是核函数。
两个核函数的直积也是核函数,即核函数乘核函数也是核函数。
若 k 1 0 k_10 k
1
0为核函数,则对于任意函数 g ( x ) g(x) g(x), k ( x , z ) = g ( x ) k 1 ( x , z ) g ( z ) k(x,z)=g(x)k1(x,z)g(z) k(x,z)=g(x)k1(x,z)g(z)也是核函数。
6.4 软间隔与正则化
6.4.1 硬间隔
hard margin,要求所有样本都必须划分正确,完全线性可分。
6.4.2 软间隔
soft margin,近似线性可分,允许某些样本划分错误。
解决现实问题:
很难确定合适的核函数使得训练样本在特征空间中线性可分。
缓解方法:
允许支持向量机在一些样本上出错
允许某些样本不满足约束: y i ( w T x i + b ) ≥ 1 y_i(w^Tx_i+b)≥1 y
i
(w
T
x
i
+b)≥1
在最大化间隔的同时,使不满足约束的样本尽可能少
软间隔支持向量机的优化目标函数变为:
其中, l 0 / 1 ( z ) l_{0/1}(z) l
0/1
(z)是0/1损失函数,当z<0时,取值为1;否则为0。
关于常数C,其取无穷大时,约束条件就相当于原SVM条件;
而C取有限值时,允许一些样本出现不满足约束。
6.4.3 替代损失
替代损失(surrogate loss)函数比0/1损失函数一般具有较好的数学性质:
凸的连续函数
0/1损失函数的上界
常用的替代损失函数:
6.4.4 松弛变量
引入松弛变量(slack variables) ξ i ≥ 0 ξ_i≥0 ξ
i
≥0 后,新的目标函数:
min w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i , ( 西 瓜 书 , 6.35 ) \min_{w,b,ξ}\frac {1}{2} ||w||^2 + C\sum_{i=1}^mξ_i, \quad (西瓜书,6.35)
w,b,ξ
min
2
1
∣∣w∣∣
2
+C
i=1
∑
m
ξ
i
,(西瓜书,6.35)
限制条件:
y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 , i = 1 , 2 , . . . , m y_i(w^Tx_i+b)≥1-ξ_i,ξ_i≥0,i=1,2,...,m
y
i
(w
T
x
i
+b)≥1−ξ
i
,ξ
i
≥0,i=1,2,...,m
这就是常用的“软间隔支持向量机”。
6.5 支持向量回归
支持向量机中的原始样本空间不一定存在符合条件的超平面,但是如果原始空间是有限维,则总存在一个高维特征空间使样本线性可分.核函数就是用来简化计算高维特征空间中的内积的一种方法.核函数选择是支持向量机的最大变数.常用的核函数有线性核,多项式核,高斯核(RBF核),拉普拉斯核,Sigmoid核.对文本数据常用线性核,情况不明时可先尝试高斯核.
SVR问题形式
支持向量回归可以容忍预测输出f(x)和真实输出y之间存在ε的偏差,仅当偏差绝对值大于ε时才计算损失.
支持向量机中许多规划问题都使用拉格朗日对偶算法求解,原因在于改变了算法复杂度.原问题的算法复杂度与样本维度有关,对偶问题的样本复杂度与样本数量有关.如果使用了升维的方法,则此时样本维度会远大于样本数量,在对偶问题下求解会更好.
6.6 核方法
6.6.1 表示定理
核函数的巨大威力
表示定理对损失函数没有限制
对正则化项Ω仅要求单调递增,不要求是凸函数
核方法定义
基于核函数的学习方法
核方法的常见用法
通过“核化”(引入核函数)将线性学习器拓展为非线性学习器
核线性判别分析(Kernelized Linear Discriminant Analysis, KLDA)
6.7 总结
1. SVM框架步骤:
(1)收集数据:可以用任意方法
(2)准备数据:需要数值型数据
(3)分析数据:有助于可视化分隔超平面
(4)训练算法:主要实现两个参数的调优
(5)测试算法:简单的计算过程就可以实现
(6)使用算法:几乎所有分类算法都可以用SVM
2. 向量机中的原始样本空间不一定存在符合条件的超平面,但是如果原始空间是有限维,则总存在一个高维特征空间使样本线性可分.核函数就是用来简化计算高维特征空间中的内积的一种方法.核函数选择是支持向量机的最大变数.常用的核函数有线性核,多项式核,高斯核(RBF核),拉普拉斯核,Sigmoid核.对文本数据常用线性核,情况不明时可先尝试高斯核.
3. 软间隔是缓解支持向量机过拟合的主要手段,软间隔允许某些样本不满足约束.
4. 支持向量回归可以容忍预测输出f(x)和真实输出y之间存在ε的偏差,仅当偏差绝对值大于ε时才计算损失.
支持向量机中许多规划问题都使用拉格朗日对偶算法求解,原因在于改变了算法复杂度.原问题的算法复杂度与样本维度有关,对偶问题的样本复杂度与样本数量有关.如果使用了升维的方法,则此时样本维度会远大于样本数量,在对偶问题下求解会更好.