机器学习(一)

第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

  1. 留出法(hold-out)
      将数据集直接划分为两个互斥的集合,划分要尽可能保持数据分布的一致性(例如样本比例类似)。单次留出法结果往往不够稳定可靠。一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。常用2/3~4/5的样本用于训练。
  2. 交叉验证法(cross validation)
      将数据集划分为 k k k个大小相似的互斥子集,每个子集尽可能保持数据分布的一致性。每次用 k − 1 k-1 k1个子集的并集作为训练集,剩下的作为测试集。从而可获得 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训练出的模型和相似,但存在更大的计算开销。
  3. 自助法(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^{'} DD作为测试集。

调参:对每个参数选定一个范围和步长,并从评估的候选值中产生选定值。例如[0,0.2]内以0.05为步长,一共5个候选值。

模型选择完成后,学习算法和参数配置已选定,此时应用数据集 D D D重新训练模型,获得最终提交给用户的模型。

模型评估与选择中用于评估测试的数据集常称为"验证集"(validation set)。因此实际中,用测试集上的判别效果来估计模型在实际使用中的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能进行模型选择和调参

性能度量(performance measure):衡量模型泛化能力的评价标准

回归任务中常用性能度量:均方误差(mean squared error)。
分类任务中常用性能度量:错误率与精度、查准率、查全率和F1、AUC、代价敏感错误率

  1. 错误率与精度
      错误率衡量了有多少比例的样本被判别错误。
  2. 查准率/准确率(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
  3. 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。
  4. 代价敏感错误率和代价曲线

偏差与方差

泛化误差可分解为偏差、方差和噪声之和。偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。

  • 偏差:度量学习算法的期望预测和真实结果的偏离程度,刻画学习算法本身的拟合能力。
  • 方差:度量同样大小的训练集的变动导致学习性能的变化,刻画了数据扰动造成的影响。
  • 噪声:表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画学习问题本身的难度。

第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(yXw^)T(yXw^)

其中 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^=(yXw^)T(yXw^),对 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=1m(yiyi^)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 ln1yy=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=1x)=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=0x)=1p(y=1x)=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=1mp(y=1xi)yip(y=0xi)1yi 对数似然为 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=1mlogp(yixi;w,b)=i=1m[yilogp(y=1xi)+(1yi)logp(y=0xi)]
其中, 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(yixi;w,b)=yip1+(1yi)p0,即若 y i = 1 y_i=1 yi=1,则取 p 1 = p ( y = 1 ∣ x ) p_1=p(y=1|x) p1=p(y=1x);若 y i = 0 y_i=0 yi=0,则取 p 0 = p ( y = 0 ∣ x ) p_0=p(y=0|x) p0=p(y=0x)

最大化对数似然,相当于最小化 − 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=1m(ylogy^+(1y)log(1y^)) 其中 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(BA)=P(A)P(AB)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=1nP(Bi)P(ABi)
似然函数(带参数的联合概率分布(离散)/联合概率密度(连续)) 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=1nf(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=1nlnf(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μ0wTμ122
得到最大化目标为 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Σ1wwTμ0wTμ122=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 wminwTSbw 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+λ(1wTSww)
令偏导为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 wL=2Sbw2λ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=Sw1(μ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(N1)/2个二分类器。测试阶段,新样本同时提交给所有分类器,产生 N ( N − 1 ) / 2 N(N-1)/2 N(N1)/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 1yy>1时,预测为正例。
若训练集中正反例样本数不同,假设训练集是真实样本总体的无偏采样,即观测几率代表着真实几率,则只要 y 1 − y > m + m − \frac{y}{1-y}>\frac{m^+}{m^-} 1yy>mm+,预测为正例,即只要 y ′ 1 − y ′ = y 1 − y ∗ m − m + > 1 \frac{y^{'}}{1-y^{'}}=\frac{y}{1-y}*\frac{m^-}{m^+}>1 1yy=1yym+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=1Ypklog2pk 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|} DDv,即样本数越多的分支结点影响越大。可计算出用属性 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=1VDDvEnt(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=1VDDvlog2DDv 称为属性 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=1Yk=kpkpk=1k=1Ypk2

基尼指数:属性 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=1VDDvGini(Dv) 于是我们在候选属性集合 A A A中,选择使得划分后基尼指数最小的属性作为最优划分属性。

剪枝处理

决策树学习算法主要通过剪枝(pruning)来对付过拟合。决策树剪枝的基本策略有预剪枝(prepruning)和后剪枝(postpruning):预剪枝是在决策树生成过程中,对每个结点在划分前进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前结点标记为叶结点;后剪枝先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

预剪枝

在决策树生成过程中,我们首先确定最优划分属性,至于是否要进行划分,可以通过评估划分前后的泛化性能来决定。例如采用留出法,若划分后在验证集上的精度得到提升,则允许划分;否则拒绝划分。预剪枝策略降低了过拟合的风险,且显著决策树的训练时间开销和测试时间开销。但由于预剪枝的“贪心”本质,带来了欠拟合的风险,即有可能有些分支当前的划分不能提升泛化性能,但在其基础上进行后续划分仍有可能导致性能显著提高。

后剪枝

后剪枝先从训练集生成一棵完整的决策树,然后从最后一个非叶结点开始,依次考察将当前结点替换为叶结点是否带来泛化性能的提升,若得到提升,则进行剪枝。

后剪枝决策树通常比预剪枝决策树保留了更多的分支,欠拟合风险小,泛化性能往往优于预剪枝决策树,但其训练开销较大。

连续值与缺失值

连续值处理

采用连续属性离散化技术,最简单的策略是采用二分法对连续属性进行处理。

为了选取最优划分点,假设连续属性 a a a在样本集 D D D上出现 n n n个不同的取值,将这些值从小到大排序,取相邻两点的中位点作为候选划分点,则一共获得 n − 1 n-1 n1个候选划分点,然后逐个考察这些候选划分点,选取最优的划分点进行样本集合的划分。

需注意,若当前结点划分属性为连续属性,则该属性还可以作为其后代结点的划分属性。例如父结点使用“密度<=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} ρ=xDwxxD~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=xD~wxxD~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=xD~wxxD~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=1Vr~vEnt(D~v))

对于问题(2),若样本 x x x在划分属性上的取值未知,则让该样本以不同的概率 r ~ v ⋅ w x \tilde{r}_v \cdot w_x r~vwx划分到不同的子结点中去。即将对应子结点的权值调整为该值。

多变量决策树

决策树所形成的分类边界由若干个与坐标轴平行的分段组成。

多变量决策树能够实现斜划分,每个非叶结点学习一个属性组合的线性分类器。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值