机器学习(一)
第2章 模型评估与选择
- 错误率(error rate)
- 精度(accuracy)
- 查准率/准确率(precision)
- 查全率/召回率(recall)
- F1
- 真正例(true positive, TP),假正例(false positive, FP),真反例(true negative, TN),假反例(false negative, FN):预测为正例中真正属于正例的样本数为TP
- P-R曲线,平衡点(Break-Even Point,BEP)
- ROC(Receiver Operating Characteristic,受试者工作特征曲线),AUC(Area Under ROC Curve,ROC曲线下的面积), TPR和FPR
- 训练误差/经验误差(training error)
- 泛化误差(generalization error)
- 过拟合(overfitting):将训练集自身的特点当作样本的一般性质学习到了,导致泛化性能下降。
- 欠拟合(underfitting):未能学好样本的一般性质。
模型选择
模型选择:选择学习算法并进行参数配置以获得最佳性能,理想状态下应选择泛化误差最小的模型,但由于泛化误差不可直接获得,训练误差由于过拟合的存在不适合作为标准,实际常对泛化误差进行评估来选择,用测试集的测试误差作为泛化误差的近似,评估方法有:留出法、交叉验证法、自助法。
给定一个包含 m m m个样例的数据集 D D D,对其进行划分,产生训练集 S S S和测试集 T T T。
- 留出法(hold-out)
将数据集直接划分为两个互斥的集合,划分要尽可能保持数据分布的一致性(例如样本比例类似)。单次留出法结果往往不够稳定可靠。一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。常用2/3~4/5的样本用于训练。 - 交叉验证法(cross validation)
将数据集划分为 k k k个大小相似的互斥子集,每个子集尽可能保持数据分布的一致性。每次用 k − 1 k-1 k−1个子集的并集作为训练集,剩下的作为测试集。从而可获得 k k k组训练集/测试集,进行 k k k次训练和测试,最终返回 k k k次测试结果的均值。称为 k k k折交叉验证。
与留出法相似,由于子集划分存在多种不同方式,通常要 使用不同的划分重复 p p p次,最终取 p p p次 k k k折交叉验证结果的均值 ,例如“10次10折交叉验证”。
留一法(Leave-One-Out, LOO):交叉验证法的特例,只留一个样本作为测试集,划分方式唯一。留一法中实际被评估的模型与期望评估的用 D D D训练出的模型和相似,但存在更大的计算开销。 - 自助法(bootstrapping)/ 可重复采样 / 有放回采样
留出法和交叉验证法需要保留一部分样本作为测试集,因此实际评估的模型所使用的训练集比 D D D小,会引入一些因训练样本规模不同导致的估计偏差。
自助法以自助采样为基础,通过对数据集 D D D采样获得 D ′ D^{'} D′:每次随机从 D D D中挑选一个样本,对其拷贝放入 D ′ D^{'} D′,再将该样本放回 D D D中;重复 m m m次后,获得包含 m m m个样本的数据集 D ′ D^{'} D′。
通过自助采样, D D D中约有36.8%的样本未出现在 D ′ D^{'} D′中,于是可将 D ′ D^{'} D′作为训练集, D − D ′ D-D^{'} D−D′作为测试集。
调参:对每个参数选定一个范围和步长,并从评估的候选值中产生选定值。例如[0,0.2]内以0.05为步长,一共5个候选值。
模型选择完成后,学习算法和参数配置已选定,此时应用数据集 D D D重新训练模型,获得最终提交给用户的模型。
模型评估与选择中用于评估测试的数据集常称为"验证集"(validation set)。因此实际中,用测试集上的判别效果来估计模型在实际使用中的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能进行模型选择和调参。
性能度量(performance measure):衡量模型泛化能力的评价标准
回归任务中常用性能度量:均方误差(mean squared error)。
分类任务中常用性能度量:错误率与精度、查准率、查全率和F1、AUC、代价敏感错误率
- 错误率与精度
错误率衡量了有多少比例的样本被判别错误。 - 查准率/准确率(precision)、查全率/召回率(recall)和
F
1
F1
F1
在信息检索中常关心查准率和查全率。
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
P-R曲线:根据预测结果对样例进行排序,排序最前的是学习器认为最可能是正例的样本,最后的是它认为最不可能是正例的样本。按此顺序逐个把样本作为正例预测,计算出每次的查全率和查准率,以查全率为横轴,查准率为纵轴作图,获得P-R曲线。
P-R曲线性质:若一个学习器的P-R曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者;若两者曲线发生交叉,可比较P-R曲线下面积的大小,常用平衡点(Break-Even Point,BEP)估算,即 “查准率=查全率” 时的取值;或者用 F 1 F1 F1度量: F 1 = 2 P R P + R F1=\frac{2PR}{P+R} F1=P+R2PR - ROC和AUC
ROC(Receiver Operating Characteristic,受试者工作特征)曲线:与P-R曲线类似,根据预测结果对样例进行排序,按顺序逐个把样本作为正例预测,每次计算假正例率(False Positive Rate, FPR)和真正例率(True Positive Rate, TPR),以假正例率为横轴,真正例率为纵轴作图,获得ROC曲线。真正例率:真实为正例的样本预测为1的概率。假正例率:真实为反例的样本预测为1的概率。 T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP F P R = F P T N + F P FPR=\frac{FP}{TN+FP} FPR=TN+FPFP
ROC曲线性质:与P-R曲线类似,若一个学习器的ROC曲线被另一个学习器的曲线完全包住,则可断言后者性能优于前者;若两者发生交叉,则一般难以断言孰优孰劣,可比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
ROC曲线画法:设有 m m m个测试样本,假设正例有 m + m^+ m+个,反例有 m − m^- m−个,对纵轴作 m + m^+ m+等分,对横轴作 m − m^- m−等分。对预测结果按从大到小排序,依次将样本预测为正例。最开始时,将所有样本预测为反例,则TPR=FPR=0。接下来,每遇到一个样本,若该样本实际为正例,则向上画一格,若该样本实际为反例,则向右画一格。最后将所有样本视为正例,TPR=FPR=1。 - 代价敏感错误率和代价曲线
偏差与方差
泛化误差可分解为偏差、方差和噪声之和。偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
- 偏差:度量学习算法的期望预测和真实结果的偏离程度,刻画学习算法本身的拟合能力。
- 方差:度量同样大小的训练集的变动导致学习性能的变化,刻画了数据扰动造成的影响。
- 噪声:表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画学习问题本身的难度。
第3章 线性模型
预测一个属性的线性组合函数: f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b
线性回归(均方误差损失函数)
处理离散属性:若属性值间有序,如“高”,“矮”,通过连续化转化为连续值{1.0, 0.0};若无序,假设有
k
k
k个属性值,可转换为
k
k
k维向量,如(0,0,1)。
最小二乘法:基于均方误差最小化来求解模型的方法。
通过最小化均方误差来求解
w
w
w和
b
b
b称为线性回归模型的最小二乘参数估计。即试图找到一条直线,使得所有样本到直线上的欧式距离之和最小。
w
^
∗
=
arg
min
w
^
(
y
−
X
w
^
)
T
(
y
−
X
w
^
)
\hat{w}^*=\arg\underset{\hat{w}}{\min} (y-X\hat{w})^T(y-X\hat{w})
w^∗=argw^min(y−Xw^)T(y−Xw^)
其中
w
^
=
(
w
;
b
)
\hat{w}=(w;b)
w^=(w;b),
y
=
(
y
1
;
.
.
.
;
y
m
)
y=(y_1; ... ; y_m)
y=(y1;...;ym),
X
X
X为一个
m
×
(
d
+
1
)
m×(d+1)
m×(d+1)维矩阵,
X
X
X的每一行为一个样本,最后一列全为1。
令
E
w
^
=
(
y
−
X
w
^
)
T
(
y
−
X
w
^
)
E_{\hat{w}}=(y-X\hat{w})^T(y-X\hat{w})
Ew^=(y−Xw^)T(y−Xw^),对
w
^
\hat{w}
w^求导得
∂
E
w
^
∂
w
^
=
2
X
T
(
X
w
^
−
y
)
\frac{\partial E_{\hat{w}}}{\partial \hat{w}}=2X^T(X\hat{w}-y)
∂w^∂Ew^=2XT(Xw^−y)
令上式为0,解得 w ^ ∗ = ( X T X ) − 1 X T y \hat{w}^*=(X^TX)^{-1}X^Ty w^∗=(XTX)−1XTy
设 x ^ i = ( x i ; 1 ) , \hat{x}_i=(x_i;1), x^i=(xi;1),最终学的得多元线性回归模型为: f ( x ^ i ) = x ^ i T ( X T X ) − 1 X T y f(\hat{x}_i)=\hat{x}_i^T(X^TX)^{-1}X^Ty f(x^i)=x^iT(XTX)−1XTy
若 X T X X^TX XTX不可逆,例如 X X X的列数大于函数,则可解出多个 w ^ \hat{w} w^,此时可由学习算法的归纳偏好决定,例如引入正则化(regularization)项。
linear regression 的损失函数为均方误差损失函数: L = 1 2 m ∑ i = 1 m ( y i − y i ^ ) 2 L=\frac{1}{2m}\sum^m_{i=1}(y_i-\hat{y_i})^2 L=2m1i=1∑m(yi−yi^)2
对数线性回归: ln y = w T x + b \ln y=w^Tx+b lny=wTx+b
对数几率回归(交叉熵损失函数)
对于分类问题,结果的取值为{0,1},而线性回归的结果为实值,可以通过对数几率函数(logistic function)将线性回归的结果映射到{0,1}: y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e−(wTx+b)1
上式等价于: ln y 1 − y = w T x + b \ln \frac{y}{1-y}=w^Tx+b ln1−yy=wTx+b
y y y可以视为样本 x x x的label为1的概率。即 p ( y = 1 ∣ x ) = 1 1 + e − ( w T x + b ) = e w T x + b 1 + e w T x + b p(y=1|x)=\frac{1}{1+e^{-(w^Tx+b)}}=\frac{e^{w^Tx+b}}{1+e^{w^Tx+b}} p(y=1∣x)=1+e−(wTx+b)1=1+ewTx+bewTx+b p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = 1 1 + e w T x + b p(y=0|x)=1-p(y=1|x)=\frac{1}{1+e^{w^Tx+b}} p(y=0∣x)=1−p(y=1∣x)=1+ewTx+b1
通过极大似然法来估计
w
w
w和
b
b
b,给定一组共
m
m
m个观测样本,似然函数为:
L
(
w
,
b
)
=
∏
i
=
1
m
p
(
y
=
1
∣
x
i
)
y
i
p
(
y
=
0
∣
x
i
)
1
−
y
i
L(w,b)=\prod^m_{i=1}p(y=1|x_i)^{y_i}p(y=0|x_i)^{1-y_i}
L(w,b)=i=1∏mp(y=1∣xi)yip(y=0∣xi)1−yi 对数似然为
log
L
(
w
,
b
)
=
∑
i
=
1
m
log
p
(
y
i
∣
x
i
;
w
,
b
)
=
∑
i
=
1
m
[
y
i
log
p
(
y
=
1
∣
x
i
)
+
(
1
−
y
i
)
log
p
(
y
=
0
∣
x
i
)
]
\log L(w,b)=\sum^m_{i=1} \log p(y_i | x_i; w,b)=\sum^m_{i=1}[y_i \log p(y=1|x_i)+(1-y_i) \log p(y=0|x_i)]
logL(w,b)=i=1∑mlogp(yi∣xi;w,b)=i=1∑m[yilogp(y=1∣xi)+(1−yi)logp(y=0∣xi)]
其中,
p
(
y
i
∣
x
i
;
w
,
b
)
=
y
i
p
1
+
(
1
−
y
i
)
p
0
p(y_i | x_i; w,b)=y_i p_1+(1-y_i)p_0
p(yi∣xi;w,b)=yip1+(1−yi)p0,即若
y
i
=
1
y_i=1
yi=1,则取
p
1
=
p
(
y
=
1
∣
x
)
p_1=p(y=1|x)
p1=p(y=1∣x);若
y
i
=
0
y_i=0
yi=0,则取
p
0
=
p
(
y
=
0
∣
x
)
p_0=p(y=0|x)
p0=p(y=0∣x)。
最大化对数似然,相当于最小化 − log L ( w , b ) -\log L(w,b) −logL(w,b),则logistic regression 的损失函数为对数/交叉熵损失函数: L = − 1 m ∑ i = 1 m ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) L=-\frac{1}{m}\sum^m_{i=1}(ylog\hat{y}+(1-y)log(1-\hat{y})) L=−m1i=1∑m(ylogy^+(1−y)log(1−y^)) 其中 y y y是真实值, y ^ \hat{y} y^是预测值。
为什么LR不用均方误差损失? 因为逻辑斯蒂回归的均方误差函数是非凸的,求解会陷入局部最优。(判断凸函数方法:二阶导数>0)
补充一下知识:
先验概率:“由因求果”中因的概率。
后验概率:“执果求因”中因的概率。作用:根据发生的事实,分析结果产生的最可能的原因。
贝叶斯公式(由结果推导原因,在已知条件下进行判断):
P
(
B
∣
A
)
=
P
(
A
∣
B
)
P
(
B
)
P
(
A
)
P(B|A)=\frac{P(A|B)P(B)}{P(A)}
P(B∣A)=P(A)P(A∣B)P(B)
全概率公式(由原因推结果,假设某个事件发生有
n
n
n种原因):
P
(
A
)
=
∑
i
=
1
n
P
(
B
i
)
P
(
A
∣
B
i
)
P(A)=\sum^n_{i=1}P(B_i)P(A|B_i)
P(A)=i=1∑nP(Bi)P(A∣Bi)
似然函数(带参数的联合概率分布(离散)/联合概率密度(连续)):
L
(
θ
)
=
L
(
x
1
,
.
.
.
,
x
n
;
θ
)
=
∏
i
=
1
n
f
(
x
i
;
θ
)
L(\theta)=L(x_1,...,x_n;\theta)=\prod^n_{i=1}f(x_i;\theta)
L(θ)=L(x1,...,xn;θ)=i=1∏nf(xi;θ)
对数似然函数:
l
n
L
(
θ
)
=
∑
i
=
1
n
l
n
f
(
x
i
;
θ
)
ln L(\theta)=\sum^n_{i=1}lnf(x_i;\theta)
lnL(θ)=i=1∑nlnf(xi;θ)
极大似然估计:给定样本观测值
{
x
1
,
.
.
.
,
x
n
}
\{x_1,...,x_n\}
{x1,...,xn},挑选参数
θ
\theta
θ使得似然函数最大。(就是给定一组观测值,我们要找到一个参数,使得这一组观测值发生的可能性最大。)
参考:
贝叶斯公式的直观理解(先验概率/后验概率)
<基础系列>1:先验概率 & 后验概率
线性回归的损失函数与逻辑回归的损失函数
逻辑回归感知机异同,损失函数思考
线性判别分析
线性判别分析(Linear Discriminant Analysis, LDA)基本思想:设法将样例投影到一条直线上,使得同类样例投影点尽可能接近,异类样例投影点尽可能远离。
同类样例投影点尽可能地接近,即最小化投影后的类方差
w
T
Σ
0
w
+
w
T
Σ
1
w
w^T \Sigma_0 w+w^T \Sigma_1 w
wTΣ0w+wTΣ1w
异类样例投影点尽可能地远离,即最大化投影后的类中心间距
∣
∣
w
T
μ
0
−
w
T
μ
1
∣
∣
2
2
||w^T\mu_0-w^T\mu_1||^2_2
∣∣wTμ0−wTμ1∣∣22
得到最大化目标为
J
=
∣
∣
w
T
μ
0
−
w
T
μ
1
∣
∣
2
2
w
T
Σ
0
w
+
w
T
Σ
1
w
=
w
T
(
μ
0
−
μ
1
)
(
μ
0
−
μ
1
)
T
w
w
T
(
Σ
0
+
Σ
1
)
w
J=\frac{||w^T\mu_0-w^T\mu_1||^2_2}{w^T \Sigma_0 w+w^T \Sigma_1 w}=\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T (\Sigma_0+\Sigma_1) w}
J=wTΣ0w+wTΣ1w∣∣wTμ0−wTμ1∣∣22=wT(Σ0+Σ1)wwT(μ0−μ1)(μ0−μ1)Tw
定义类内散度矩阵 S w = Σ 0 + Σ 1 S_w=\Sigma_0+\Sigma_1 Sw=Σ0+Σ1 类间散度矩阵 S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0−μ1)(μ0−μ1)T
则最大化目标重写为 J = w T S b w w T S w w J=\frac{w^TS_bw}{w^T S_w w} J=wTSwwwTSbw
上述式子可以转换为求解优化问题
min
w
−
w
T
S
b
w
\min_w -w^T S_b w
wmin−wTSbw
s
.
t
.
w
T
S
w
w
=
1
s.t. \ w^T S_w w=1
s.t. wTSww=1
由拉格朗日乘子法,拉格朗日函数为
L
(
w
)
=
−
w
T
S
b
w
+
λ
(
1
−
w
T
S
w
w
)
L(w)=-w^TS_bw+\lambda (1-w^T S_w w)
L(w)=−wTSbw+λ(1−wTSww)
令偏导为0
∂
L
∂
w
=
−
2
S
b
w
−
2
λ
S
w
w
=
0
<
=
=
>
S
b
w
=
−
λ
S
w
w
\frac{\partial L}{\partial w}=-2S_bw-2\lambda S_w w=0 <==> S_b w=-\lambda S_w w
∂w∂L=−2Sbw−2λSww=0<==>Sbw=−λSww
因为
S
b
w
S_b w
Sbw的方向恒为
μ
0
−
μ
1
\mu_0-\mu_1
μ0−μ1(
S
b
w
=
(
μ
0
−
μ
1
)
(
μ
0
−
μ
1
)
T
w
=
(
μ
0
−
μ
1
)
k
S_b w=(\mu_0-\mu_1)(\mu_0-\mu_1)^T w = (\mu_0-\mu_1) k
Sbw=(μ0−μ1)(μ0−μ1)Tw=(μ0−μ1)k,
k
k
k为一个实数),设
S
b
w
=
−
λ
(
μ
0
−
μ
1
)
S_b w=-\lambda(\mu_0-\mu_1)
Sbw=−λ(μ0−μ1),可得
w
=
S
w
−
1
(
μ
0
−
μ
1
)
w=S_w^{-1} (\mu_0-\mu_1)
w=Sw−1(μ0−μ1)
补充知识点:
∂
(
w
T
A
w
)
∂
w
=
(
A
+
A
T
)
w
\frac{\partial (w^TAw)}{\partial w}=(A+A^T)w
∂w∂(wTAw)=(A+AT)w
多分类
一对一(One vs. One, OvO)
将 N N N个类别两两组合,训练 N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2个二分类器。测试阶段,新样本同时提交给所有分类器,产生 N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2个分类结果,最终结果通过投票产生。
一对其余(One vs. Rest, OvR)
每次将一个类视为正例,其余类视为反例,训练 N N N个分类器。测试阶段,若仅有一个分类器预测为正类,则对应的分类结果为该类别标记;若存在多个正类,则选取置信度最大的类别为最终结果。
多对多(Many vs. Many, MvM)
将若干类视为正例,其余类视为反例。
纠错输出码(Error Correcting Output Codes, ECOC):测试时,多个分类器的输出结果联合起来形成测试示例的编码,将该编码与各类对应的编码进行比较,选择距离最小的编码对应的类别作为预测结果。(海明距离:异或结果中含1的个数,即两个编码对应位值不同的个数)
类别不平衡
再缩放(rescaling)
通常我们假设正例样本和反例样本数相等,则当几率
y
1
−
y
>
1
\frac{y}{1-y}>1
1−yy>1时,预测为正例。
若训练集中正反例样本数不同,假设训练集是真实样本总体的无偏采样,即观测几率代表着真实几率,则只要
y
1
−
y
>
m
+
m
−
\frac{y}{1-y}>\frac{m^+}{m^-}
1−yy>m−m+,预测为正例,即只要
y
′
1
−
y
′
=
y
1
−
y
∗
m
−
m
+
>
1
\frac{y^{'}}{1-y^{'}}=\frac{y}{1-y}*\frac{m^-}{m^+}>1
1−y′y′=1−yy∗m+m−>1则预测为正例。(
m
+
m^+
m+表示训练集中正例样本的个数。)
再缩放的前提需要满足假设条件,然后这个假设往往不成立。实际中对于类别不平衡问题常采用:欠采样、过采样、阈值移动
欠采样(undersampling)
去除一些类别多的样本使得正反例数目相近。
过采样(oversampling)
增加一些类别少的样本使得正反例数目相近。
阈值移动(threshold-moving)
直接基于原始训练集学习,但预测时,将再缩放的式子嵌入到决策过程中。
第4章 决策树
一颗决策树包含一个根节点,若干内部结点,若干叶结点。叶结点对应决策结果,其他每个结点对应于一个属性测试。每个结点包含的样本集合根据属性测试结果被划分到子结点中;根结点包含样本全集。
算法流程:若当前结点包含的样本属于同一类别,则将该结点标记为该类别的叶子结点;若当前属性集为空或所有样本在所有属性上取值相同,则将该结点标记为叶结点,类别标记为该结点所含样本最多的类别;若当前结点所含样本集为空,则将该结点标记为叶结点,类别标记为父结点所含样本最多的类别。从属性集
A
A
A中选择最优划分属性,对于该属性的每一个值生成一个分支。
划分选择
选择最优划分属性:我们希望随着划分的进行,决策树分支结点所包含的样本尽可能属于同一类别,即结点的纯度越来越高,常用度量有信息增益、增益率、基尼指数。
信息增益(ID3决策树)
信息熵(information entropy):度量样本集合纯度的指标,设当前样本集合
D
D
D中第
k
k
k类样本所占的比例是
p
k
p_k
pk,则
D
D
D的信息熵定义为
E
n
t
(
D
)
=
−
∑
k
=
1
∣
Y
∣
p
k
log
2
p
k
Ent(D)=-\sum^{|\mathcal{Y}|}_{k=1}p_k \log_2 p_k
Ent(D)=−k=1∑∣Y∣pklog2pk
E
n
t
(
D
)
Ent(D)
Ent(D)的值越小,则
D
D
D的纯度越高。
信息增益(information gain):假设离散属性
a
a
a有
V
V
V个可能的取值
{
a
1
,
.
.
.
,
a
V
}
\{ a^1,..., a^V \}
{a1,...,aV},若使用
a
a
a对样本集
D
D
D进行划分,则会产生
V
V
V个分支结点,第
v
v
v个分支结点包含
D
D
D中所有在属性
a
a
a上取值为
a
v
a^v
av的样本,记为
D
v
D^v
Dv。则可计算出每一个分支结点的信息熵,考虑到不同分支结点包含的样本数不同,给分支结点赋予权重
∣
D
v
∣
∣
D
∣
\frac{|D^v|}{|D|}
∣D∣∣Dv∣,即样本数越多的分支结点影响越大。可计算出用属性
a
a
a对样本集
D
D
D进行划分所获得的信息增益
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(D,a)=Ent(D)-\sum^{V}_{v=1}\frac{|D^v|}{|D|}Ent(D^v)
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv) 信息增益越大,意味着使用属性
a
a
a进行划分所获得的纯度提升越大。
增益率(C4.5决策树)
信息增益准则对可取值数目较多的属性有所偏好,为了减少这种偏好可能带来的不利影响,可使用增益率(gain ratio) G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} Gain_ratio(D,a)=IV(a)Gain(D,a) 其中, I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log 2 ∣ D v ∣ ∣ D ∣ IV(a)=-\sum^{V}_{v=1}\frac{|D^v|}{|D|}\log_2 \frac{|D^v|}{|D|} IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣ 称为属性 a a a的固有值(intrinsic value)。属性 a a a的可能取值数目越多,则 I V ( a ) IV(a) IV(a)的值通常会越大。
注意增益率准则对可取值数目较少的属性有所偏好。因此C4.5算法使用了一个启发式算法,先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
基尼指数(CART决策树)
基尼值:数据集 D D D的纯度可用基尼值来度量,反映了从数据集中随机抽取两个样本,其类别标记不一致的概率,基尼值越小,则数据集的纯度越高。 G i n i ( D ) = ∑ k = 1 ∣ Y ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ Y ∣ p k 2 Gini(D)=\sum^{|\mathcal{Y}|}_{k=1}\sum_{k^{'}\neq k} p_k p_{k^{'}}=1-\sum^{|\mathcal{Y}|}_{k=1}p_k^2 Gini(D)=k=1∑∣Y∣k′=k∑pkpk′=1−k=1∑∣Y∣pk2
基尼指数:属性 a a a的基尼指数定义为 G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D,a)=\sum^{V}_{v=1} \frac{|D^v|}{|D|} Gini(D^v) Gini_index(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv) 于是我们在候选属性集合 A A A中,选择使得划分后基尼指数最小的属性作为最优划分属性。
剪枝处理
决策树学习算法主要通过剪枝(pruning)来对付过拟合。决策树剪枝的基本策略有预剪枝(prepruning)和后剪枝(postpruning):预剪枝是在决策树生成过程中,对每个结点在划分前进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前结点标记为叶结点;后剪枝先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
预剪枝
在决策树生成过程中,我们首先确定最优划分属性,至于是否要进行划分,可以通过评估划分前后的泛化性能来决定。例如采用留出法,若划分后在验证集上的精度得到提升,则允许划分;否则拒绝划分。预剪枝策略降低了过拟合的风险,且显著决策树的训练时间开销和测试时间开销。但由于预剪枝的“贪心”本质,带来了欠拟合的风险,即有可能有些分支当前的划分不能提升泛化性能,但在其基础上进行后续划分仍有可能导致性能显著提高。
后剪枝
后剪枝先从训练集生成一棵完整的决策树,然后从最后一个非叶结点开始,依次考察将当前结点替换为叶结点是否带来泛化性能的提升,若得到提升,则进行剪枝。
后剪枝决策树通常比预剪枝决策树保留了更多的分支,欠拟合风险小,泛化性能往往优于预剪枝决策树,但其训练开销较大。
连续值与缺失值
连续值处理
采用连续属性离散化技术,最简单的策略是采用二分法对连续属性进行处理。
为了选取最优划分点,假设连续属性 a a a在样本集 D D D上出现 n n n个不同的取值,将这些值从小到大排序,取相邻两点的中位点作为候选划分点,则一共获得 n − 1 n-1 n−1个候选划分点,然后逐个考察这些候选划分点,选取最优的划分点进行样本集合的划分。
需注意,若当前结点划分属性为连续属性,则该属性还可以作为其后代结点的划分属性。例如父结点使用“密度<=0.381”,其子结点仍可以使用“密度<=0.294”。
缺失值处理
主要处理两个问题:(1)如何在属性值缺失的情况下进行属性划分选择(2)给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分。
我们为每一个样本 x x x赋予一个权重 w x w_x wx,初始时各样本的权值均为1。 ρ = ∑ x ∈ D ~ w x ∑ x ∈ D w x \rho=\frac{\sum_{x \in \tilde{D}}w_x}{\sum_{x \in D}w_x} ρ=∑x∈Dwx∑x∈D~wx p ~ k = ∑ x ∈ D ~ k w x ∑ x ∈ D ~ w x \tilde{p}_k=\frac{\sum_{x \in \tilde{D}_k} w_x}{\sum_{x \in \tilde{D}}w_x} p~k=∑x∈D~wx∑x∈D~kwx r ~ v = ∑ x ∈ D ~ v w x ∑ x ∈ D ~ w x \tilde{r}_v=\frac{\sum_{x \in \tilde{D}^v} w_x}{\sum_{x \in \tilde{D}}w_x} r~v=∑x∈D~wx∑x∈D~vwx
对于问题(1),给定训练集 D D D和属性 a a a,令 D ~ \tilde{D} D~表示 D D D中在属性 a a a上没有缺失值的样本子集。则信息增益 G a i n ( D , a ) = ρ × G a i n ( D ~ , a ) = ρ × ( E n t ( D ~ ) − ∑ v = 1 V r ~ v E n t ( D ~ v ) ) Gain(D,a)=\rho × Gain(\tilde{D},a)=\rho × ( Ent(\tilde{D})-\sum^V_{v=1}\tilde{r}_v Ent(\tilde{D}^v) ) Gain(D,a)=ρ×Gain(D~,a)=ρ×(Ent(D~)−v=1∑Vr~vEnt(D~v))
对于问题(2),若样本 x x x在划分属性上的取值未知,则让该样本以不同的概率 r ~ v ⋅ w x \tilde{r}_v \cdot w_x r~v⋅wx划分到不同的子结点中去。即将对应子结点的权值调整为该值。
多变量决策树
决策树所形成的分类边界由若干个与坐标轴平行的分段组成。
多变量决策树能够实现斜划分,每个非叶结点学习一个属性组合的线性分类器。