《机器学习》------AdaCost学习笔记

背景

目前的分类算法大多都强调准确率,但对于我们实际研究的问题来说可能不是特别的符合。
例如:在1000个人中,有10个人得癌症,一般的非代价敏感(Non Cost-Sensitive)学习算法可能会把几乎所有人都分为“健康”的这一类,虽然这样做的准确率很高,但是对于我们研究的问题来说(找出患病的人),却是无意义的。并且,把癌症患者误诊为健康者,让患者错过最佳治疗时间,这样的代价是极其高昂的,远大于把健康者误诊为癌症患者的代价。因此,引入代价敏感(Cost-Sensitive)就是为了在分类时,给不同的分类错误分配不同的代价,使得总代价最小。

常用的方法有:

  • 调整样本分布(Stratification),这是一种传统的方法,根据错误分类的代价,按照比例变换训练集中类别的频率。但这种方式改变了样本的分布情况,可能会影响算法的性能。

  • 元代价(MetaCost),这是一种将一般分类模型转换成代价敏感模型的方法。它通过一个“元学习”过程,根据最小期望代价修改训练样本的标记,并使用修改过的训练集重新学习新的模型。

  • 代价敏感决策(Direct Cost-Sensitive Decision Making),首先在训练集中多次取样,生成多个模型,再根据多个模型,得到测试样本属于每个类别的概率,然后计算测试样本的所有错误分类的代价,并根据最小代价得到类标记。一种典型的做法就是利用集成学习技术(Ensemble Learning)。

二分类代价敏感矩阵 C C C

预测为正类 预测为负类
实际为正类 C 11 C_{11} C11 C 10 C_{10} C10
实际为负类 C 01 C_{01} C01 C 00 C_{00} C00

一般情况,分类正确的代价取值为0,即 C 00 C_{00} C00 = C 11 C_{11} C11 =0,在不平衡问题中,往往多数类被视为负类,少数类被视为正类。因此, C 00 C_{00} C00 C 01 C_{01} C01 C 10 C_{10} C10 C 11 C_{11} C11 满足 C 10 C_{10} C10 > C 01 C_{01} C01 > C 00 C_{00} C00 = C 11 C_{11} C11

TP(True Positive):判断为正样本,实际上也是正样本
TN(True Negative):判断为负样本,实际上也是负样本
FP(False Negative):判断为正样本,实际上是负样本
FN(False Positive):判断为负样本,实际上是正样本

因此总代价 TC(Total Coast) 为:
TC(Total Coast) = C 10 C_{10} C10 * FN + C 01 C_{01} C01 * FP

AdaCost 算法原理:

AdaCost 算法相对于 Adaboost,主要做了两方面的改进:

  1. 为每个训练样本分配了误分类代价因素 c i c_i ci ,并将代价因素加入到分类的学习过程中;
  2. 在权值调整公式中加入代价调整函数 β ( s i g n ( y i h t ( x i ) ) , c i ) \beta(\mathbf{sign}(y_ih_t(x_i)),c_i) β(sign(yiht(xi)),ci) ,简记为 β ( i ) \beta(i) β(i) s i g n ( y i h t ( x i ) ) \mathbf{sign}(y_ih_t(x_i)) sign(yiht(xi)) 是用于表示分类器 h t ( x i ) h_t(x_i) ht(xi) x i x_i xi 的分类结果是否正确。
    s i g n ( y i h t ( x i ) ) = + 1 \mathbf{sign}(y_ih_t(x_i)) = + 1 sign(yiht(xi))=+1 β ( i ) \beta(i) β(i) 简记为 β + \beta_+ β+,表示分类正确;
    s i g n ( y i h t ( x i ) ) = − 1 \mathbf{sign}(y_ih_t(x_i)) = - 1 sign(yiht(xi))=1 β ( i ) \beta(i) β(i) 简记为 β − \beta_- β,表示分类错误;

β ( i ) \beta(i) β(i) 加入到样本权重更新式子中,可以通过权值调整实现以下几点:

  1. 如果样本的误分类代价高,且在检测时又被误分类,通过权值调整得到的新权值较原本的权值应增大许多;
  2. 如果样本的误分类代价高,且在检测时又正确分类,通过权值调整得到的新权值较原本的权值应缩小许多;
  3. 误分类代价高的样本权值相对较高,误分类代价低的样本权值相对较低。

因此,代价调整函数 β ( s i g n ( y i h t ( x i ) ) , c i ) \beta(\mathbf{sign}(y_ih_t(x_i)),c_i) β(sign(yiht(xi)),ci) 满足两个要求:

  1. β − \beta_- β c i c_i ci 的非递减非负函数,被错误分类的样本误分类代价越高,通过权值调整得到的新权值就越大。
  2. β + \beta_+ β+ c i c_i ci 的非递增非负函数,被正确分类的样本误分类代价越高,通过权值调整得到的新权值就越小。

AdaCost

伪代码:

在这里插入图片描述

Adacost Upper bound:

step1:先表示出第T+1轮迭代时的样本权重:
D T + 1 ( i ) = c i ∑ j m c j ⋅ e − y i α 1 h 1 ( x 1 ) β ( s i g n ( y i h t ( x 1 ) ) , c 1 ) Z 1 ⋅ . . . ⋅ e − y i α T h T ( x i ) β ( s i g n ( y i h T ( x i ) ) , c i ) Z T = c i e ∑ t − y i α t h t ( x i ) β ( s i g n ( y i h t ( x i ) ) , c i ) ∑ j m c j ∏ t Z t = c i e − y i ∑ t α t h t ( x i ) β ( s i g n ( y i h t ( x i ) ) , c i ) ∑ j m c j ∏ t Z t 令 , f ( x i ) = ∑ t α t h t ( x i ) , f ′ ( x i ) = ∑ t α t h t ( x i ) β ( s i g n ( y i h T ( x i ) ) , c i ) 令 , H ( x ) = s i g n ( f ( x ) ) , H ′ ( x ) = s i g n ( f ′ ( x ) ) , (1) \begin{aligned}\tag{1} D_{T+1}(i)&=\frac{c_i}{\sum_j^mc_j}\cdot \frac{e^{-y_i \alpha_{1}h_1(x_1)}\beta(\mathbf{sign}(y_ih_t(x_1)),c_1)}{Z_1}\cdot...\cdot \frac{e^{-y_i \alpha_{T}h_{T}(x_i)}\beta(\mathbf{sign}(y_ih_T(x_i)),c_i)}{Z_T} \\ &=\frac{c_ie^{\sum_t-y_i\alpha_th_t(x_i)\beta(\mathbf{sign}(y_ih_t(x_i)),c_i)}}{\sum_j^mc_j\prod_tZ_t} \\ &=\frac{c_ie^{-y_i\sum_t\alpha_th_t(x_i)\beta(\mathbf{sign}(y_ih_t(x_i)),c_i)}}{\sum_j^mc_j\prod_tZ_t} \\ & 令 , f(x_i)=\sum_t\alpha_th_t(x_i), f'(x_i)=\sum_t\alpha_th_t(x_i)\beta(\mathbf{sign}(y_ih_T(x_i)),c_i)\\ &令,H(x) = \mathbf{sign}(f(x)),H'(x)= \mathbf{sign}(f'(x)), \end{aligned} DT+1(i)=jmcjciZ1eyiα1h1(x1)β(sign(yiht(x1)),c1)...ZTeyiαThT(xi)β(sign(yihT(xi)),ci)=jmcjtZtcietyiαtht(xi)β(sign(yiht(xi)),ci)=jmcjtZtcieyitαtht(xi)β(sign(yiht(xi)),ci),f(xi)=tαtht(xi),f(xi)=tαtht(xi)β(sign(yihT(xi)),ci)H(x)=sign(f(x)),H(x)=sign(f(x)),(1)

step2:证明 H ( x ) H(x) H(x) H ′ ( x ) H'(x) H(x)更准确:

i f ∀ c , β − ( c ) ≥ β + ( c ) f o l l o w i n g : ∀ x ∈ S = { ( x 1 , c 1 , y 1 ) , . . . , ( x i , c i , y i ) } , H ′ ( x ) = y ⟹ H ( x ) = y if \forall c,\beta_-(c) \geq \beta_+(c) \\ following: \forall x \in S=\{(x_1,c_1,y_1),...,(x_i,c_i,y_i)\},\\ H'(x) = y \Longrightarrow H(x)=y ifc,β(c)β+(c)following:xS={ (x1,c1,y1),...,(xi,ci,yi)},H(x)=yH(x)=y

Proof:
H ′ ( x ) = y    ⟺    y f ′ ( x ) = y ∑ t = 1 T α t h t ( x ) β ( s i g n ( y h t ( x ) ) , c ) > 0 左 边 可 以 表 示 为 正 确 分 类 与 错 误 分 类 的 和 : y ∑ t + α t + h t + ( x ) β + + y ∑ t − α t − h t − ( x ) β − > 0 ∵ y ∑ t + α t + h t + ( x ) β + > 0 , y ∑ t − α t − h t − ( x ) β − ≤ 0 , β − ≥ β + > 0 ∴ y ∑ t + α t + h t + ( x ) β + + y ∑ t − α t − h t − ( x ) β + ≥ y ∑ t + α t + h t + ( x ) β + + y ∑ t − α t − h t − ( x ) β − > 0 左 边 可 以 表 示 为 : β + ( y f ( x ) ) > 0 ∴ y f ( x ) > 0 y f ′ ( x ) ⟹ y f ( x ) ∴ H ′ ( x ) = y ⟹ H ( x ) = y (2) \begin{aligned} H'(x)=y \iff yf'(x)=y\sum_{t=1}^T\alpha_th_t(x)\beta(\mathbf{sign}(yh_t(x)),c) &>0 \\ 左边可以表示为正确分类与错误分类的和:\\ y\sum_{t+}\alpha_{t+}h_{t+}(x)\beta_{+}+y\sum_{t-}\alpha_{t-}h_{t-}(x)\beta_-&>0\\ \because y\sum_{t+}\alpha_{t+}h_{t+}(x)\beta_+>0,\\y\sum_{t-}\alpha_{t-}h_{t-}(x)\beta_-\leq 0,\\\beta_-\geq\beta_+>0 \\ \therefore y\sum_{t+}\alpha_{t+}h_{t+}(x)\beta_++y\sum_{t-}\alpha_{t-}h_{t-}(x)\beta_+ &\geq y\sum_{t+}\alpha_{t+}h_{t+}(x)\beta_++y\sum_{t-}\alpha_{t-}h_{t-}(x)\beta_- >0\\ 左边可以表示为:\beta_+(yf(x))>0\\ \therefore yf(x)>0\\ yf'(x) \Longrightarrow yf(x) \\ \therefore H'(x) = y \Longrightarrow H(x)=y \tag{2} \end{aligned} H(x)=yyf(x)=yt=1Tαtht(x)β(sign(yht(x)),c)yt+αt+ht+(x)β++ytαtht(x)βyt+αt+ht+(x)β+>0,ytαtht(x)β0,ββ+>0yt+αt+ht+(x)β++ytαtht(x)β+β+(yf(x))>0yf(x)>0yf(x)yf(x)H(x)=yH(x)=y>0>0yt+αt+ht+(x)β++ytαtht(x)β>0(2)

step3:易知 y i 、 H ( x i ) ∈ { − 1 , 1 } y_i、H(x_i) \in \{-1,1\} yiH(xi){ 1,1}, 有两种情况:

  1. H ( x i ) ≠ y i H(x_i) \neq y_i H(xi)=yi 时, y i f ( x i ) < 0 y_i \mathcal{f}(x_i)<0 yif(xi)<0,即 e − y i f ( x i ) ≥ 1 e^{-y_i\mathcal{f}(x_i)}\geq1 eyif(xi)1
  2. H ( x i ) = y i H(x_i) = y_i H(xi)=yi 时, y i f ( x i ) > 0 y_i\mathcal{f}(x_i)>0 yif(xi)>0, 即 e − y i f ( x i ) ≤ 1 e^{-y_i\mathcal{f}(x_i)} \leq1 eyif(xi)1

因此,用一个式子同时包含两种情况: ⟦ H ( x i ) ≠ y i ⟧ = 1 \llbracket H(x_i) \neq y_i \rrbracket =1 [[H(xi)=yi]]=1
该式子表示的意思是:如果括号内的条件成立,则式子为1,反之为0.
易得:
⟦ H ( x i ) ≠ y i ⟧ ≤ e − y i f ( x i ) \llbracket H(x_i) \neq y_i \rrbracket \leq e^{-y_if(x_i)} [[H(xi)=yi]]eyif(xi)
同理:
⟦ H ′ ( x i ) ≠ y i ⟧ ≤ e − y i f ′ ( x i ) \llbracket H'(x_i) \neq y_i \rrbracket \leq e^{-y_if'(x_i)} [[H(xi)=yi]]eyif(xi)
所以,由式(2)可得:
⟦ H ( x i ) ≠ y i ⟧ ≤ ⟦ H ′ ( x i ) ≠ y i ⟧ ⟦ H ( x i ) ≠ y i ⟧ ≤ ⟦ H ′ ( x i ) ≠ y i ⟧ ≤ e − y i f ′ ( x i ) \begin{aligned} \llbracket H(x_i) \neq y_i \rrbracket &\leq \llbracket H'(x_i) \neq y_i \rrbracket \\ \llbracket H(x_i) \neq y_i \rrbracket &\leq \llbracket H'(x_i) \neq y_i \rrbracket \leq e^{-y_if'(x_i)} \end{aligned} [[H(xi)=yi]][[H(xi)=yi]][[H(xi)=yi]][[H(xi)=yi]]eyif(xi)
把不等式两边做相同的处理:
∑ i c i ⟦ H ( x i ) ≠ y i ⟧ ≤ ∑ i c i ⟦ H ′ ( x i ) ≠ y i ⟧ ≤ ∑ i c i e − y i f ′ ( x i ) (3) \sum_i c_i\llbracket H(x_i)\neq y_i \rrbracket \leq \sum_i c_i\llbracket H'(x_i) \neq y_i \rrbracket \leq \sum_i c_i e^{-y_if'(x_i)}\tag{3} ici[[H(xi)=yi]]ici[[H(xi)=yi]]icieyif(xi)(3)
可以看到表达式左边表示的是误分类的代价

setp4:把 (1) 式代入 (3) 式右边进行替换,得到:
∑ i c i ⟦ H ′ ( x i ) ≠ y i ⟧ ≤ ∑ i D T + 1 ( i ) ∏ t Z t ∑ j m c j \sum_i c_i\llbracket H'(x_i) \neq y_i \rrbracket \leq \sum_i D_{T+1}(i) \prod_tZ_t\sum_j^m c_j ici[[H(xi)=yi]]iDT+1(i)tZtjmcj
因为,无论多少次迭代,样本权值之和始终为1:
∑ i c i ⟦ H ′ ( x i ) ≠ y i ⟧ ≤ ∑ i c i ∏ t T Z t \sum_i c_i\llbracket H'(x_i) \neq y_i \rrbracket \leq \sum_ic_i\prod_t^TZ_t ici[[H(xi)=yi]]icitTZt
∑ i c i = d \sum_i c_i =d ici=d
∑ i c i ⟦ H ′ ( x i ) ≠ y i ⟧ ≤ d ∏ t T Z t (4) \sum_i c_i\llbracket H'(x_i) \neq y_i \rrbracket \leq d\prod_t^TZ_t \tag{4} ici[[H(xi)=yi]]dtTZt(4)
step4:从 (4)式 中可以可以看出:
min ⁡ ∑ i c i ⟦ H ′ ( x i ) ≠ y i ⟧ ≤ min ⁡ d ∏ t T Z t ≈ d ∏ t T min ⁡ Z t (5) \min\sum_i c_i\llbracket H'(x_i)\neq y_i \rrbracket \leq \min d\prod_t^TZ_t \approx d\prod_t^T\min Z_t \tag{5} minici[[H(xi)=yi]]mindtTZtdtTminZt(5)
通过每次迭代找局部最优的 Z t {Z_t } Zt, 而 Z t = s u m ( D ) {Z_t }=sum(D) Zt=sum(D),即每次迭代是误分类代价越来越小的过程。


参考文献:
《AdaCost: Misclassification Cost-sensitive Boosting》
《基于权值控制的误分类算法研究》
《代价敏感分类算法的实验比较》

猜你喜欢

转载自blog.csdn.net/Naruto_8/article/details/121648000
今日推荐