Boosting&kmeans&特征工程
文章目錄
1.4 Gradient Boosting Modeling
1.5 Gradient Boosting Decision Tree
3.6.2 獨(dú)熱編碼(One-hot Encoding)
古語云:三個(gè)臭皮匠,頂一個(gè)諸葛亮。而在機(jī)器學(xué)習(xí)領(lǐng)域,集成算法Boosting就是一個(gè)活生生的實(shí)例。Boosting和之前介紹過的Bagging相似,都是集成算法之一。Boosting通過整合多個(gè)弱分類器,從而形成一個(gè)強(qiáng)分類器。具體如何構(gòu)造,還需要有嚴(yán)謹(jǐn)?shù)睦碚摶A(chǔ)。
在1990年,RobertSchapire最先構(gòu)造出了一種多項(xiàng)式級的算法,該算法可將若分類器組合成強(qiáng)分類器,即Boosting算法。一年后,Yoav Freund提出了一種效率更高的Boosting算法。但是這兩個(gè)最初的Boosting算法存在缺陷:都要求實(shí)現(xiàn)知道弱學(xué)習(xí)算法學(xué)習(xí)正確率的下限。到了1995年,F(xiàn)reund和Schapire改進(jìn)了Boosting算法,提出了AdaBoost(Adaptive Boosting)算法。該算法的優(yōu)點(diǎn):效率和Freund與1991年提出的Boosting算法幾乎相同,但不需要任何關(guān)于弱學(xué)習(xí)器的先驗(yàn)知識(shí),因而更加容易應(yīng)用到實(shí)際問題中。
隨后,兩位創(chuàng)始人更進(jìn)一步提出了AdaBoost.M1,AdaBoost.M2等算法,在機(jī)器學(xué)習(xí)領(lǐng)域受到了極大關(guān)注。Boosting在人臉識(shí)別、文本分類中應(yīng)用較多。
Adaboost采用迭代的思想,每次迭代只訓(xùn)練一個(gè)弱分類器,訓(xùn)練好的弱分類器將參與下一次迭代的使用。也就是說,在第N次迭代中,一共就有N個(gè)弱分類器,其中N-1個(gè)是以前訓(xùn)練好的,其各種參數(shù)都不再改變,本次訓(xùn)練第N個(gè)分類器。其中弱分類器的關(guān)系是第N個(gè)弱分類器更可能分對前N-1個(gè)弱分類器沒分對的數(shù)據(jù),最終分類輸出要看這N個(gè)分類器的綜合效果。

輸入: 訓(xùn)練集?D = \{ (x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m) \}D={(x1?,y1?),(x2?,y2?),?,(xm?,ym?)}
基學(xué)習(xí)算法?\mathcal{L}L
訓(xùn)練輪數(shù)TT
過程:
D_1(x) = \frac{1}{m}D1?(x)=m1?
for \quad t = 1,2,\cdots,T \quad dofort=1,2,?,Tdo
\qquad h_t = \mathcal{L}(D,D_t)ht?=L(D,Dt?)
\qquad \epsilon_t = P_{x-D_t} (h_t(x) \neq f(x))?t?=Px?Dt??(ht?(x)?=f(x))
\qquad if \quad \epsilon_t > 0.5 \quad then \ breakif?t?>0.5then?break
\qquad \alpha_t = \frac{1}{2} \ln{\left( \frac{1 - \epsilon_t}{\epsilon_t} \right)}αt?=21?ln(?t?1??t??)
\qquad \begin{array}{c} & D_{t+1}(x) &=& \frac{D_t(x)}{Z_t} \times \begin{cases} \exp(-\alpha_t), & if \ h_t(x) = f(x) \\ \exp(\alpha_t),& if \ h_t(x) \neq f(x) \end{cases} \\ \\ & &=& \frac{D_t(x) \exp(-\alpha_t f(x) h_t(x))}{Z_t} \end{array}?Dt+1?(x)?==?Zt?Dt?(x)?×{exp(?αt?),exp(αt?),?if?ht?(x)=f(x)if?ht?(x)?=f(x)?Zt?Dt?(x)exp(?αt?f(x)ht?(x))??
end \ forend?for
輸出:?H(x) = sign \left( \sum_{t=1}^T \alpha_t h_t(x) \right)H(x)=sign(∑t=1T?αt?ht?(x))
這里對上述算法過程進(jìn)行說明:
首先有訓(xùn)練集DD,且給每個(gè)樣本的初始權(quán)重為?\frac{1}{m}m1?
,然后開始迭代提升,逐步改變分類錯(cuò)誤樣本的權(quán)重.
對每一次迭代來說,第一步就是在?D_t(x)Dt?(x)?數(shù)據(jù)集上訓(xùn)練一個(gè)分類器?h_tht?,也就是算法中的(3)步;該分類器可以是決策樹、SVM或logistic等等;?D_t(x)Dt?(x)是第tt步時(shí)的訓(xùn)練集分布,與初始訓(xùn)練集的不同就是每個(gè)樣本的權(quán)重進(jìn)行了重新分配.
(4)步是計(jì)算新訓(xùn)練的分類器的誤差率.
(5)步是判斷tt次迭代訓(xùn)練的分類器是否比隨機(jī)猜測更好,如果得到的分類器比隨機(jī)猜測壞的話就直接退出訓(xùn)練.
(6)(7)步是根據(jù)當(dāng)前分類器的分類誤差來更新每個(gè)樣本的權(quán)重,以便下一輪弱分類器的訓(xùn)練;其中f(x),h_t(x) \in \{ -1,+1 \}f(x),ht?(x)∈{?1,+1}
最后輸出這一步是加權(quán)多數(shù)表決的過程,?sign()sign()是符號函數(shù),即
sign(z) = \begin{cases} 1, & z > 0 \\ 0, & z = 0 \\ -1, & z < 0 \end{cases}sign(z)=??????1,0,?1,?z>0z=0z<0?
前面我們將了算法過程,其中涉及到幾個(gè)公式,既然是學(xué)習(xí),我們就需要知其然知其所以然。
AdaBoost算法有多種推導(dǎo)方式,其中比較容易理解的是基于“加性模型”(additive model),即基學(xué)習(xí)器的線性組合:
H(x) = \sum_{t=1}^T \alpha_t h_t(x)H(x)=t=1∑T?αt?ht?(x)
來最小化指數(shù)損失函數(shù):
l_{exp}(H|D) = E_{x \approx D} \left[ e^{-f(x) H(x)} \right]lexp?(H∣D)=Ex≈D?[e?f(x)H(x)]
若H(x)H(x)能令指數(shù)損失函數(shù)最小化,則考慮損失函數(shù)對H(x)H(x)的偏導(dǎo)為零:
\begin{array}{c} & \frac{\partial l_{exp}(H|D) }{\partial H(x)} &=& E_{x \approx D} \left[ e^{-f(x) H(x)} * (- f(x)) \right] \\ & &=& -e^{-H(x)} P(f(x) = 1 | x) + e^{H(x)} P(f(x)=-1 | x) \\ &&=&0 \end{array}??H(x)?lexp?(H∣D)??===?Ex≈D?[e?f(x)H(x)?(?f(x))]?e?H(x)P(f(x)=1∣x)+eH(x)P(f(x)=?1∣x)0?
可解得
H(x) = \frac{1}{2} \ln{\frac{P(f(x) = 1 | x)}{P(f(x) = -1 | x)}}H(x)=21?lnP(f(x)=?1∣x)P(f(x)=1∣x)?
因此有
\begin{array}{c} & sign(H(x)) &=& sign \left( \frac{1}{2} \ln{\frac{P(f(x) = 1 | x)}{P(f(x) = -1 | x)}} \right) \\ &&=& \begin{cases} 1, & P(f(x) = 1 | x) > P(f(x) = -1 |x) \\ -1, & P(f(x) = 1 | x) < P(f(x) = -1 |x) \end{cases} \\ &&=& \arg \max_{y \in \{-1,1\}} P(f(x) = y |x) \end{array}?sign(H(x))?===?sign(21?lnP(f(x)=?1∣x)P(f(x)=1∣x)?){1,?1,?P(f(x)=1∣x)>P(f(x)=?1∣x)P(f(x)=1∣x)<P(f(x)=?1∣x)?argmaxy∈{?1,1}?P(f(x)=y∣x)?
這意味著若指數(shù)損失函數(shù)最小化,則分類錯(cuò)誤率也將最小化;這說明指數(shù)損失函數(shù)是分類任務(wù)原0/10/1損失函數(shù)的一致的替代損失函數(shù).因?yàn)橹笖?shù)損失函數(shù)數(shù)學(xué)性質(zhì)更好.
上面一步說明了指數(shù)損失函數(shù)是有效的.下面考慮當(dāng)基分類器?h_tht?基于分布D_tDt?產(chǎn)生后,該基分類器的權(quán)重\alpha_tαt?應(yīng)使得\alpha_t h_tαt?ht?最小化指數(shù)損失函數(shù):
\begin{array}{c} & l_{exp}(\alpha_t h_t | D_t) &=& E_{x \approx D_t} \left[ e^{-f(x) \alpha_t h_t(x)} \right] \\ &&=& E_{x \approx D_t} \left[ e^{-\alpha_t} I(f(x) = h_t(x)) + e^{\alpha_t} I(f(x) \neq h_t(x)) \right] \\ &&=& e^{-\alpha_t} P_{x \approx D_t} (f(x) = h_t(x)) + e^{\alpha_t} P_{x \approx D_t} (f(x) \neq h_t(x)) \\ &&=& e^{-\alpha_t}(1 - \epsilon_t) + e^{\alpha_t} \epsilon_t \end{array}?lexp?(αt?ht?∣Dt?)?====?Ex≈Dt??[e?f(x)αt?ht?(x)]Ex≈Dt??[e?αt?I(f(x)=ht?(x))+eαt?I(f(x)?=ht?(x))]e?αt?Px≈Dt??(f(x)=ht?(x))+eαt?Px≈Dt??(f(x)?=ht?(x))e?αt?(1??t?)+eαt??t??
其中\(zhòng)epsilon_t = P_{x \approx D_t}(h_t(x) \neq f(x))?t?=Px≈Dt??(ht?(x)?=f(x))?. 考慮指數(shù)損失函數(shù)的導(dǎo)數(shù):
\frac{\partial l_{exp}(\alpha_t h_t | D_t)}{\partial \alpha_t} = -e^{-\alpha_t}(1 - \epsilon_t) + e^{\alpha_t} \epsilon_t = 0?αt??lexp?(αt?ht?∣Dt?)?=?e?αt?(1??t?)+eαt??t?=0
解得:
\alpha_t = \frac{1}{2} \ln{\left( \frac{1 - \epsilon_t}{\epsilon_t} \right)}αt?=21?ln(?t?1??t??)
這就是上面算法過程中第 (6) 步中的權(quán)值更新公式.
其中,?I(z) = \begin{cases} 1, & z = true; \\ 0, & z = false; \end{cases}I(z)={1,0,?z=true;z=false;?為示性函數(shù).
AdaBoost算法在獲得H_{t-1}Ht?1?之后樣本分布將進(jìn)行調(diào)整,并學(xué)習(xí)下一輪基學(xué)習(xí)器?h_tht?,并且使得H_{t-1} + h_tHt?1?+ht?比H_{t-1}Ht?1?的效果更好,即最小化
\begin{array}{c} & l_{exp}(H_{t-1} + h_t | D) &=& E_{x \approx D} \left[ e^{-f(x) (H_{t-1}(x) + h_t(x))} \right] \\ &&=& E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} e^{-f(x) h_t(x)} \right] \end{array}?lexp?(Ht?1?+ht?∣D)?==?Ex≈D?[e?f(x)(Ht?1?(x)+ht?(x))]Ex≈D?[e?f(x)Ht?1?(x)e?f(x)ht?(x)]?
單獨(dú)考慮e^{-f(x) h_t(x)}e?f(x)ht?(x)
\because e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots = \sum_{n=0}^{\infty} \frac{x^n}{n!} \\ 又 \because f(x),h_t(x) \in \{ -1,+1 \} \\ \therefore e^{-f(x) h_t(x)} \approx 1 - f(x)h_t(x) + \frac{f^2(x) h_t^2(x)}{2} \\ = 1 - f(x)h_t(x) + \frac{1}{2}∵ex=1+x+2!x2?+3!x3?+?=n=0∑∞?n!xn?又∵f(x),ht?(x)∈{?1,+1}∴e?f(x)ht?(x)≈1?f(x)ht?(x)+2f2(x)ht2?(x)?=1?f(x)ht?(x)+21?
所以指數(shù)損失函數(shù)可以轉(zhuǎn)換為:
l_{exp} (H_{t-1} + h_t | D) \approx E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} \left( 1 - f(x)h_t(x) + \frac{1}{2} \right) \right]lexp?(Ht?1?+ht?∣D)≈Ex≈D?[e?f(x)Ht?1?(x)(1?f(x)ht?(x)+21?)]
于是理想的基學(xué)習(xí)器為:
\begin{array}{c} & h_t(x) &= & arg \min_{h} l_{exp} (H_{t-1} + h_t | D) \\ &&=& arg \min_{h} E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} \left( 1 - f(x)h_t(x) + \frac{1}{2} \right) \right] \\ &&=& arg \max_{h} E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} f(x)h_t(x) \right] \\ &&=& arg \max_{h} E_{x \approx D} \left[ \frac{e^{-f(x) H_{t-1}(x)}}{E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} \right]} f(x)h_t(x) \right] \end{array}?ht?(x)?====?argminh?lexp?(Ht?1?+ht?∣D)argminh?Ex≈D?[e?f(x)Ht?1?(x)(1?f(x)ht?(x)+21?)]argmaxh?Ex≈D?[e?f(x)Ht?1?(x)f(x)ht?(x)]argmaxh?Ex≈D?[Ex≈D?[e?f(x)Ht?1?(x)]e?f(x)Ht?1?(x)?f(x)ht?(x)]?
需要注意的是,E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} \right]Ex≈D?[e?f(x)Ht?1?(x)]是一個(gè)常數(shù),已知的,因?yàn)樵?tt輪迭代時(shí),前面的?H_{t-1}(x)Ht?1?(x)已經(jīng)知道了,其實(shí)e^{-f(x) H_{t-1}(x)}e?f(x)Ht?1?(x)也是已知的了.
于是令D_tDt?表示一個(gè)分布
D_t(x) = \frac{D(x) e^{-f(x) H_{t-1}(x)}}{E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} \right]}Dt?(x)=Ex≈D?[e?f(x)Ht?1?(x)]D(x)e?f(x)Ht?1?(x)?
根據(jù)數(shù)學(xué)期望的定義,這等價(jià)于令
\begin{array}{c} & h_t(x) &=& arg \max_{h} E_{x \approx D} \left[ \frac{e^{-f(x) H_{t-1}(x)}}{E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} \right]} f(x)h_t(x) \right] \\ &&=& arg \max_{h} E_{x \approx D_t} [f(x)h(x)] \end{array}?ht?(x)?==?argmaxh?Ex≈D?[Ex≈D?[e?f(x)Ht?1?(x)]e?f(x)Ht?1?(x)?f(x)ht?(x)]argmaxh?Ex≈Dt??[f(x)h(x)]?
注意這里的數(shù)據(jù)集已經(jīng)變了,由DD變成了D_tDt?,兩者的差別是分布已由D_t(x)Dt?(x)的表達(dá)式更新了.
由于f(x),h(x) \in \{-1,1\}f(x),h(x)∈{?1,1},有
f(x)h(x) = 1 - 2*I(f(x) \neq f(x))f(x)h(x)=1?2?I(f(x)?=f(x))
則理想的基學(xué)習(xí)器為:
h_t(x) = arg \min_{h} E_{x \approx D_t} [I(f(x) \neq h(x))]ht?(x)=arghmin?Ex≈Dt??[I(f(x)?=h(x))]
由此可見,理想的h_tht?將在分布D_tDt?下最小化分類誤差.因此,弱分類器將基于分布D_tDt?來訓(xùn)練,且針對D_tDt?的分類誤差應(yīng)小于 0.5 . 這在一定程度上類似“殘差逼近”的思想。
考慮到D_tDt?和D_{t+1}Dt+1?的關(guān)系,有
\begin{array}{c} & D_{t+1}(x) &=& \frac{D(x) e^{-f(x)H_t(x)}}{E_{x \approx D} \left[ e^{-f(x) H_t(x)} \right]} \\ &&=& \frac{D(x) e^{-f(x) H_{t-1}(x)} e^{-f(x) \alpha_t h_t(x)}}{E_{x \approx D} \left[ e^{-f(x) H_t(x)} \right]} \\ &&=& D_t(x) \cdot e^{ef(x) \alpha_t h_t(x)} \frac{E_{x \approx D} \left[ e^{-f(x) H_{t-1}(x)} \right]}{E_{x \approx D} \left[ e^{-f(x) H_t(x)} \right]} \end{array}?Dt+1?(x)?===?Ex≈D?[e?f(x)Ht?(x)]D(x)e?f(x)Ht?(x)?Ex≈D?[e?f(x)Ht?(x)]D(x)e?f(x)Ht?1?(x)e?f(x)αt?ht?(x)?Dt?(x)?eef(x)αt?ht?(x)Ex≈D?[e?f(x)Ht?(x)]Ex≈D?[e?f(x)Ht?1?(x)]??
這就是上述算法過程中第 (7) 步的由來。
1.4 Gradient Boosting Modeling
Gradient Boosting Modeling (梯度提升模型) 就是構(gòu)造這些弱分類器的一種方法。它指的不是某個(gè)具體的算法,而是一種思想.
我們先從普通的梯度優(yōu)化問題入手來理解
find \ \hat{x} = arg \min_{x} f(x)find?x^=argxmin?f(x)
針對這種問題,有個(gè)經(jīng)典的算法叫?Steepest Gradient Descent?,也就是最深梯度下降法。算法的大致過程是:
給定一個(gè)起始點(diǎn)x_0x0?
對i = 1,2,\cdots,Ki=1,2,?,K分別做如下迭代:
\qquad x_i = x_{i-1} + \gamma_{i-1} \times g_{i-1}xi?=xi?1?+γi?1?×gi?1?
其中g(shù)_{i-1} = -\frac{\partial f}{\partial x} |_{x = x_{i-1}}gi?1?=??x?f?∣x=xi?1??表示ff在x_{i-1}xi?1?點(diǎn)的梯度
直到|g_{i-1}|∣gi?1?∣足夠小,或者是|x_i - x_{i-1}|∣xi??xi?1?∣足夠小
以上迭代過程可以理解為:?整個(gè)尋優(yōu)的過程就是小步快跑的過程,每跑一小步,都往函數(shù)當(dāng)前下降最快的那個(gè)方向走一點(diǎn),直到達(dá)到可接受的點(diǎn).
我們將這個(gè)迭代過程展開得到尋優(yōu)的結(jié)果:
x_k = x_0 + \gamma_1 g_1 + \gamma_2 g_2 + \cdots + \gamma_k g_kxk?=x0?+γ1?g1?+γ2?g2?+?+γk?gk?
這個(gè)形式是不是與最開始我們要求的F_m(x)Fm?(x)類似;構(gòu)造F_m(x)Fm?(x)本身也是一個(gè)尋優(yōu)的過程,只不過我們尋找的不是一個(gè)最優(yōu)點(diǎn),而是一個(gè)最優(yōu)的函數(shù)。
尋找最優(yōu)函數(shù)這個(gè)目標(biāo),也是定義一個(gè)損失函數(shù)來做:
find \ F_m = arg \ \min_{F} L(F) = arg \ \min_{F} \sum_{i=0}^N Loss(F(x_i),y_i)find?Fm?=arg?Fmin?L(F)=arg?Fmin?i=0∑N?Loss(F(xi?),yi?)
其中,?Loss(F(x_i),y_i)Loss(F(xi?),yi?)表示損失函數(shù)Loss()Loss()在第ii個(gè)樣本上的損失值,?x_i,y_ixi?,yi?分別表示第?ii?個(gè)樣本的特征和目標(biāo)值.
類似最深梯度下降法,我們可以通過梯度下降法來構(gòu)造弱分類器?f_1,f_2,\cdots,f_mf1?,f2?,?,fm?只不過每次迭代時(shí),令:
g_i = -\frac{\partial L}{\partial F}|_{F=F_{i-1}}gi?=??F?L?∣F=Fi?1??
即損失函數(shù)L()L()對FF求取梯度.
但是函數(shù)對函數(shù)求導(dǎo)不好理解,而且通常都無法通過上述公式直接求解。于是就采取一個(gè)近似的方法,把函數(shù)F_{i-1}Fi?1?理解成在所有樣本上的離散的函數(shù)值,即:
\left[ F_{i-1}(x_1),F_{i-1}(x_2),\cdots,F_{i-1}(x_N) \right][Fi?1?(x1?),Fi?1?(x2?),?,Fi?1?(xN?)]
這是一個(gè)NN維向量,然后計(jì)算:
\hat{g}_i(x_k) = -\frac{\partial L}{\partial F(x_k)}|_{F = F_{i-1}},k = 1,2,\cdots,Ng^?i?(xk?)=??F(xk?)?L?∣F=Fi?1??,k=1,2,?,N
這是一個(gè)函數(shù)對向量的求導(dǎo),得到的也是一個(gè)梯度向量。注意,這里求導(dǎo)時(shí)的變量還是函數(shù)F,不是樣本x_kxk?只不過對F(x_k)F(xk?)求導(dǎo)時(shí),其他的x_ixi?都可以看成常數(shù)。
嚴(yán)格來說\hat{g}_i(x_k),k = 1,2,\cdots,Ng^?i?(xk?),k=1,2,?,N只是描述了g_igi?在某些個(gè)別點(diǎn)(所有的樣本點(diǎn))上值(連續(xù)函數(shù)上的離散點(diǎn)),并不足以表達(dá)g_igi??,但我們可以通過函數(shù)擬合的方式從\hat{g}_i(x_k)g^?i?(xk?)構(gòu)造g_igi??,這樣我們就通過近似的方法得到函數(shù)對函數(shù)的導(dǎo)數(shù)了.
因此,GBM 的過程可以總結(jié)為:
選擇一個(gè)起始常量函數(shù)?f_0f0?
對i=1,2,\cdots,Ki=1,2,?,K分別做如下迭代:
計(jì)算離散梯度值\hat{g}_{i-1}(x_j) = -\frac{\partial L}{\partial F(x_j)}|_{F = F_{i-1}},j = 1,2,\cdots,Ng^?i?1?(xj?)=??F(xj?)?L?∣F=Fi?1??,j=1,2,?,N
對\hat{g}_{i-1}(x_j)g^?i?1?(xj?)做函數(shù)擬合得到?g_{i-1}gi?1?
通過 line search 得到\gamma_{i-1} = arg \ \min L(F_{i-1} + \gamma_{i-1} g_{i-1})γi?1?=arg?minL(Fi?1?+γi?1?gi?1?)
令F_i = F_{i-1} + \gamma_{i-1} g_{i-1}Fi?=Fi?1?+γi?1?gi?1?
直到|\hat{g}_{i-1}|∣g^?i?1?∣足夠小,或者迭代次數(shù)完畢
這里常量函數(shù)?f_0f0?通常取樣本目標(biāo)值的均值,即
f_0 = \frac{1}{N} \sum_{i=0}^N y_if0?=N1?i=0∑N?yi?
1.5 Gradient Boosting Decision Tree
在上述算法過程中,如何通過\hat{g}_{i-1}(x_j),j = 1,2,\cdots,Ng^?i?1?(xj?),j=1,2,?,N構(gòu)造擬合函數(shù)?g_{i-1}gi?1?呢,這里我們用的就是 Decision Tree(決策樹)了.
所以理解 GBDT,重點(diǎn)是先理解 Gradient Boosting,其次才是 Decision Tree;也就是說 GBDT 是 Gradient Boosting 的一種具體實(shí)現(xiàn),這個(gè)擬合函數(shù)也可以改用其他的方法,只不過決策樹好用一點(diǎn)。
從對 GBM 的描述里可以看到 Gradient Boosting 過程和具體用什么樣的弱分類器是完全獨(dú)立的,可以任意組合,因此這里不再刻意強(qiáng)調(diào)用決策樹來構(gòu)造弱分類器,轉(zhuǎn)而我們來仔細(xì)看看弱分類器擬合的目標(biāo)值,即梯度\hat{g}_{i-1}(x_j)g^?i?1?(xj?)?,之前我們已經(jīng)提到過
\hat{g}_i(x_k) = -\frac{\partial L}{\partial F(x_k)}|_{F = F_{i-1}},k = 1,2,\cdots,Ng^?i?(xk?)=??F(xk?)?L?∣F=Fi?1??,k=1,2,?,N
因此\frac{\partial L}{\partial F(x_k)}?F(xk?)?L?很重要,以平方差損失函數(shù)為例,得:
\frac{\partial L}{\partial F(x_k)}|_{F = F_{i-1}} = 2(F_{i-1}(x_k) - y_k)?F(xk?)?L?∣F=Fi?1??=2(Fi?1?(xk?)?yk?)
忽略 2 倍,后面括號中正是當(dāng)前已經(jīng)構(gòu)造好的函數(shù)F_{i-1}Fi?1?在樣本上和目標(biāo)值y_kyk??之間的差值.
如果我們換一個(gè)損失函數(shù),比如絕對差:
Loss(F(x_i),y_i) = |F(x_i) - y_i|Loss(F(xi?),yi?)=∣F(xi?)?yi?∣
這個(gè)損失函數(shù)的梯度是個(gè)符號函數(shù):
\frac{\partial L}{\partial F(x_k)}|_{F = F_{i-1}} = sign(F_{i-1}(x_k) - y_k)?F(xk?)?L?∣F=Fi?1??=sign(Fi?1?(xk?)?yk?)
由此可以看到,只有當(dāng)損失函數(shù)為平方差函數(shù)時(shí),才能說 GBDT 是通過擬合殘差來構(gòu)造弱分類器的
GBDT 直觀理解:每一輪預(yù)測和實(shí)際值有殘差,下一輪根據(jù)殘差再進(jìn)行預(yù)測,最后將所有預(yù)測相加,就是結(jié)果。

GBDT 原始版本的算法框架:
輸入:\{ (x_i,y_i) \}_1^N, K,L,\cdots{(xi?,yi?)}1N?,K,L,?
初始化?f_0f0?
for \quad k = 1 \ to \ K \quad dofork=1?to?Kdo
\qquad \hat{y}_i = -\frac{\partial L(y_i,F_{k-1}(x_i))}{\partial F_{k-1}},i = 1,2,\cdots,Ny^?i?=??Fk?1??L(yi?,Fk?1?(xi?))?,i=1,2,?,N
\qquad \{R_j,b_j\}_1^{J^*} = arg \min_{\{R_j,b_j\}_1^J} \sum_{i=1}^N \left[ \hat{y}_i - f_k(x_i;\{R_j,b_j\}_1^J) \right]^2{Rj?,bj?}1J??=arg{Rj?,bj?}1J?min?i=1∑N?[y^?i??fk?(xi?;{Rj?,bj?}1J?)]2

\qquad 令 \ f_k = \rho^* f_k,F_k = F_{k-1} + f_k令?fk?=ρ?fk?,Fk?=Fk?1?+fk?
endend
其中:
\{(x_i,y_i)\}_1^N{(xi?,yi?)}1N??表示NN個(gè)樣本;
f_kfk?表示第kk棵決策樹,這棵決策樹的預(yù)測值為f_k = \sum_{j=1}^J b_jfk?=∑j=1J?bj?
KK表示總共要生成的決策樹數(shù)量;
JJ表示葉子節(jié)點(diǎn)的數(shù)量;
F_{k-1}(x_i)Fk?1?(xi?)表示前k-1k?1棵決策樹綜合得到的結(jié)果,即?F_{k-1} = \sum_{i=1}^{k-1} f_iFk?1?=∑i=1k?1?fi?;
L(y_i,F_{k-1}(x_i))L(yi?,Fk?1?(xi?))表示損失函數(shù);
\{R_j,b_j\}_1^J{Rj?,bj?}1J?表示一個(gè)劃分,?R_jRj?表示葉子節(jié)點(diǎn)jj上的樣本集合,b_jbj?表示該葉子節(jié)點(diǎn)上的樣本輸出值. 該過程就是在函數(shù)空間的梯度下降,不斷減去\frac{\partial L}{\partial F}?F?L??,就能得到?\min_F L(F)minF?L(F)
下面解釋一下上面的關(guān)鍵步驟:
第三步:?\hat{y}_iy^?i??被稱作響應(yīng)(response),它是一個(gè)和殘差y_i - F_{k-1}(x_i)yi??Fk?1?(xi?)正相關(guān)的變量.
第四步: 使用平方誤差訓(xùn)練一棵決策樹?f_kfk?,擬合數(shù)據(jù)?\{x_i,\hat{y}_i\}_1^N{xi?,y^?i?}1N?,注意這里是\hat{y}_iy^?i??,擬合的是殘差.
第五步: 進(jìn)行線性搜索(line search),有的稱作 Shrinkage ;上一步的ff是在平方誤差下學(xué)到的,這一步進(jìn)行一次 line search,讓ff乘以步長\rhoρ后最小化LL?.
kmeans++ 選取初始點(diǎn):
1、從輸入的數(shù)據(jù)點(diǎn)集合(要求有k個(gè)聚類)中隨機(jī)選擇一個(gè)點(diǎn)作為第一個(gè)聚類中心;
2、對于數(shù)據(jù)集中的每一個(gè)點(diǎn)x,計(jì)算它與最近聚類中心(指已選擇的聚類中心)的距離D(x);
3、選擇一個(gè)新的數(shù)據(jù)點(diǎn)作為新的聚類中心,選擇的原則是:D(x)較大的點(diǎn),被選取作為聚類中心的概率較大;
4、重復(fù)2和3直到k個(gè)聚類中心被選出來;
5、利用這k個(gè)初始的聚類中心來運(yùn)行標(biāo)準(zhǔn)的k-means算法。
kmeans算法是EM算法的一個(gè)特例
機(jī)器學(xué)習(xí)中,頻率派經(jīng)常會(huì)通過最大似然函數(shù)來求模型中的參數(shù),但是有些模型中包含有不可見的隱變量Z,這樣再通過最大似然求解就非常困難。一般如果模型中包含隱變量,我們就會(huì)使用加強(qiáng)版的最大似然-EM算法來求參數(shù)。常見包含隱參數(shù)的模型有高斯混合模型,隱馬爾科夫模型,PLSA模型等等。下面我們以高斯混合模型為例來闡述為何有隱變量我們無法使用最大似然來估計(jì)參數(shù)。
首先我們先看看GMM的對數(shù)似然函數(shù),單個(gè)高斯模型的參數(shù)我們用\theta=(u,\Sigma)θ=(u,Σ),表示,而在GMM模型中\(zhòng)piπ是隱變量:
lnp(X|\pi,\theta)=\sum_{n=1}^Nln\sum_{\pi} p(x_n,\pi|\theta)=\sum_{n=1}^Nln\sum_{k=1}^K \pi_kN(x_n|u_k,\Sigma_k)lnp(X∣π,θ)=n=1∑N?lnπ∑?p(xn?,π∣θ)=n=1∑N?lnk=1∑K?πk?N(xn?∣uk?,Σk?)
由于對數(shù)里面有加和,直接對p(X|\theta)p(X∣θ)求最值很困難,我們可以試想下,如果隱變量\piπ是可以觀測的,也就是知道每個(gè)數(shù)據(jù)點(diǎn)是由哪幾個(gè)分布生成的,那么我們求解就會(huì)很方便,但關(guān)鍵的是\piπ是隱變量,我們沒法觀測到。但是我們可以用它的期望來表示。因此,只要將隱變量用它的期望表示就得到了大名鼎鼎的EM算法。具體過程如下:
lnp(X|\theta)lnp(X∣θ)是我們的原始似然函數(shù),加入隱變量Z后可以寫成ln\sum_Zp(X,Z|\theta)ln∑Z?p(X,Z∣θ),我們先初始化模型的參數(shù),由于隱變量無法觀測到,我們用參數(shù)來得到它的后驗(yàn)p(Z|X,\theta_{old})p(Z∣X,θold?),然后我們通過隱藏變量的期望得到新的complete-data likelihood:
Q(\theta,\theta_{old})=\int lnp(X,Z|\theta)p(Z|X,\theta_{old})dZQ(θ,θold?)=∫lnp(X,Z∣θ)p(Z∣X,θold?)dZ
以上就是E 步,當(dāng)我們得到期望后就可以求出Q函數(shù)的最優(yōu)解,也就是新的參數(shù)\theta=argmaxQ(\theta,\theta_{old})θ=argmaxQ(θ,θold?),注意這個(gè)Q函數(shù)是包含隱變量的complete-data的似然函數(shù),并不是我們一開始的似然函數(shù),所以通過complete-data likelihood是可解析出新的參數(shù)。當(dāng)我們將新的參數(shù)?\thetaθ再帶入Q 函數(shù)不斷就開始了第二輪迭代。
下面我們將來看看EM算法是怎么推導(dǎo)的:
先回顧優(yōu)化理論中的一些概念。設(shè)f是定義域?yàn)閷?shí)數(shù)的函數(shù),如果對于所有的實(shí)數(shù)x,f''(x)\geq 0f′′(x)≥0,那么f是凸函數(shù)。當(dāng)x是向量時(shí),如果其Hessian矩陣H是半正定的H\succeq 0H?0,那么f是凸函數(shù)。如果f''(x)\geq 0f′′(x)≥0或者H\succeq 0H?0,那么稱f是嚴(yán)格凸函數(shù)。
如果f是凸函數(shù), 通過Jensen不等式我們知道:
f(\sum_{i=1}^n \lambda_ix_i)\leq \sum_{i=1}^n \lambda_if(x_i)\quad \lambda_i\geq 0\quad\sum_{i=1}^n\lambda_i=1f(i=1∑n?λi?xi?)≤i=1∑n?λi?f(xi?)λi?≥0i=1∑n?λi?=1
如果x_ixi?將看成隨機(jī)變量,而將\lambda_iλi?認(rèn)為是x_ixi?的出現(xiàn)概率則有:
f(E(x)) \leq E[f(x)]f(E(x))≤E[f(x)]
特別地,如果f是嚴(yán)格凸函數(shù),那么當(dāng)且僅當(dāng)x=E[x]x=E[x]恒成立時(shí),也就是說X是常量,有
E[f(x)]=f(E(x))E[f(x)]=f(E(x))
我們現(xiàn)在已經(jīng)知道了Jensen不等式,假設(shè)給定的訓(xùn)練樣本是{x_1,x_2,...,x_n}x1?,x2?,...,xn?,樣例間獨(dú)立,我們想找到每個(gè)樣例隱含的類別z_izi?,能使得似然估計(jì)最大:
\begin{aligned} \ell(\theta) &= \sum_{i=1}^mlogp(x|\theta)\\ &= \sum_{i=1}^mlog\sum_zp(x,z|\theta) \end{aligned}?(θ)?=i=1∑m?logp(x∣θ)=i=1∑m?logz∑?p(x,z∣θ)?
第一步是對極大似然取對數(shù),第二步是對每個(gè)樣例的每個(gè)可能類別z求聯(lián)合分布概率和。但是直接求\thetaθ一般比較困難,因?yàn)橛须[變量z存在,但是一般確定了z后,求解就容易了。EM是一種解決存在隱變量優(yōu)化問題的有效方法。既然不能直接最大化\ell(\theta)?(θ),我們可以不斷地建立對數(shù)似然\ell(\theta)?(θ)的下界(E步),然后優(yōu)化下界(M步)
對于每一個(gè)樣例i,讓Q_iQi?表示該樣例隱變量z的某種分布,Q_iQi?滿足的條件是\sum_z Q_i(z)=1,Q_i(z)>0∑z?Qi?(z)=1,Qi?(z)>0。(如果z是連續(xù)性的,那么是概率密度函數(shù),需要將求和符號換做積分符號)。比如要將班上學(xué)生聚類,假設(shè)隱藏變量z是身高,那么Q_iQi?就是連續(xù)的高斯分布。如果按照隱藏變量是男女,那么就是伯努利分布了??梢杂汕懊骊U述的內(nèi)容得到下面的公式:
\begin{aligned} \ell(\theta) &= \sum_{i=1}^mlog\sum_zp(x,z|\theta)\\ &= \sum_{i=1}^mlog\sum_zQ_i \frac{p(x,z|\theta)}{Q_i}\\ &\geq \sum_{i=1}^m\sum_z Q_i log \frac{p(x,z|\theta)}{Q_i} \end{aligned}?(θ)?=i=1∑m?logz∑?p(x,z∣θ)=i=1∑m?logz∑?Qi?Qi?p(x,z∣θ)?≥i=1∑m?z∑?Qi?logQi?p(x,z∣θ)??
上式中第2步到第3步利用了Jensen不等式,考慮到loglog是凹函數(shù)(二階導(dǎo)數(shù)小于0),而且\sum_zQ_i \frac{p(x,z|\theta)}{Q_i}∑z?Qi?Qi?p(x,z∣θ)?是函數(shù)\frac{p(x,z|\theta)}{Q_i}Qi?p(x,z∣θ)?在Q_iQi?分布下的期望,所以logE[ \frac{p(x,z|\theta)}{Q_i}]\geq E[log \frac{p(x,z|\theta)}{Q_i}]logE[Qi?p(x,z∣θ)?]≥E[logQi?p(x,z∣θ)?]。
首先我們令\ell'(\theta)=\sum_{i=1}^m\sum_z Q_i log \frac{p(x,z|\theta)}{Q_i}?′(θ)=∑i=1m?∑z?Qi?logQi?p(x,z∣θ)?。上述過程可以看作\ell'(\theta)?′(θ)是\ell(\theta)?(θ)是的下界。對于Q_iQi?的選擇,有多種可能,哪種更好呢?假設(shè)\thetaθ已經(jīng)給定,那么\ell'(\theta)?′(θ)的值就決定于Q_iQi?和p(x,z)p(x,z)了。我們可以通過調(diào)整這兩個(gè)概率使下界不斷上升,以逼近\ell(\theta)?(θ)的真實(shí)值,那么什么時(shí)候算是調(diào)整好了呢?當(dāng)不等式變成等式時(shí),說明我們調(diào)整后的概率能夠使\ell'(\theta)=\ell(\theta)?′(θ)=?(θ)了。按照這個(gè)思路,我們要找到等式成立的條件。根據(jù)Jensen不等式,要想讓等式成立,需要讓隨機(jī)變量變成常數(shù)值,這里得到:
\frac{p(x,z|\theta)}{Q_i}=c \qquad (1)Qi?p(x,z∣θ)?=c(1)
c為常數(shù),不依賴于z_izi?。對此式子做進(jìn)一步推導(dǎo),我們知道\sum_z Q_i(z)=1∑z?Qi?(z)=1,那么也就有\(zhòng)sum_z p(x,z|\theta)=c∑z?p(x,z∣θ)=c(多個(gè)等式分子分母相加不變,這個(gè)認(rèn)為每個(gè)樣例的兩個(gè)概率比值都是c),將\sum_z p(x,z|\theta)=c∑z?p(x,z∣θ)=c帶入(1)式:
\begin{aligned} Q_i(z) &= \frac{p(x,z|\theta)}{c}\\ &= \frac{p(x,z|\theta)}{\sum p(x,z|\theta)}\\ &= p(z|x,\theta) \qquad (2) \end{aligned}Qi?(z)?=cp(x,z∣θ)?=∑p(x,z∣θ)p(x,z∣θ)?=p(z∣x,θ)(2)?
至此,我們推出了在固定參數(shù)\thetaθ后,Q_i(z)Qi?(z)的計(jì)算公式就是后驗(yàn)概率p(z|x,\theta)p(z∣x,θ),解決了Q_i(z)Qi?(z)如何選擇的問題。這一步就是E步,建立\ell(\theta)?(θ)的下界。接下來的M步,就是在給定Q_i(z)Qi?(z)后,調(diào)整參數(shù)\thetaθ,取極大化\ell(\theta)?(θ)的下界(在固定Q_i(z)Qi?(z)后,調(diào)整\thetaθ,使下界還可以調(diào)整的更大)。
將(2)式帶入\ell'(\theta)?′(θ)繼續(xù)推導(dǎo)至簡單形式:
\begin{aligned} \theta_{t+1} &= argmax_\theta \ell'(\theta)\\ &= argmax_\theta \sum_{i=1}^m\sum_z Q_i log \frac{p(x,z|\theta)}{Q_i}\\ &= argmax_\theta \sum_{i=1}^m\sum_zp(z|x,\theta_{t}) log \frac{p(x,z|\theta)}{p(z|x,\theta_{t})}\\ &= argmax_\theta \sum_{i=1}^m\sum_zp(z|x,\theta_{t})logp(x,z|\theta)-p(z|x,\theta_{t})logp(z|x,\theta_{t}) \end{aligned}θt+1??=argmaxθ??′(θ)=argmaxθ?i=1∑m?z∑?Qi?logQi?p(x,z∣θ)?=argmaxθ?i=1∑m?z∑?p(z∣x,θt?)logp(z∣x,θt?)p(x,z∣θ)?=argmaxθ?i=1∑m?z∑?p(z∣x,θt?)logp(x,z∣θ)?p(z∣x,θt?)logp(z∣x,θt?)?
因?yàn)閜(z|x,\theta_{t})logp(z|x,\theta_{t})p(z∣x,θt?)logp(z∣x,θt?)中的\theta_{t}θt?都是定值,所以對\thetaθ求偏導(dǎo)時(shí),會(huì)消掉,因此M步最大化的只有第一項(xiàng)sum_z p(z|x,\theta_{t})logp(x,z|\theta)sumz?p(z∣x,θt?)logp(x,z∣θ),即complete-data關(guān)于隱變量z的期望E_{z|x,\theta_t}[logp(x,z|\theta)]Ez∣x,θt??[logp(x,z∣θ)]。
那么一般的EM算法的步驟如下:
初始化\theta_{old}θold?
E步:對于每一個(gè)ii,計(jì)算p(z_i|x_i,\theta)p(zi?∣xi?,θ),求complete-data liklihood?Q(\theta,\theta_{old})=\sum_z logp(x,z|\theta)p(z|x,\theta_{old})dzQ(θ,θold?)=∑z?logp(x,z∣θ)p(z∣x,θold?)dz
M步:更新參數(shù)?\theta=argmax_\theta Q(\theta,\theta_{old})θ=argmaxθ?Q(θ,θold?)
跳轉(zhuǎn)到第2步
何為特征工程呢?顧名思義,就是對原始數(shù)據(jù)進(jìn)行一系列工程處理,將其提煉為特征,作為輸入供算法和模型使用。
本質(zhì)上講,特征工程是一個(gè)表示和展現(xiàn)數(shù)據(jù)的過程;實(shí)際工作中,特征工程的目的是去除原始數(shù)據(jù)中的雜質(zhì)和冗余,設(shè)計(jì)更高效的特征以刻畫求解的問題與預(yù)測模型之間的關(guān)系。
特征工程的重要性有以下幾點(diǎn):
特征越好,靈活性越強(qiáng)。好的特征的靈活性在于它允許你選擇不復(fù)雜的模型,同時(shí)運(yùn)行速度也更快,也更容易和維護(hù)。
特征越好,構(gòu)建的模型越簡單。好的特征可以在參數(shù)不是最優(yōu)的情況,依然得到很好的性能,減少調(diào)參的工作量和時(shí)間,也就可以大大降低模型復(fù)雜度。
特征越好,模型的性能越出色。特征工程的目的本來就是為了提升模型的性能。
首先需要對數(shù)據(jù)進(jìn)行預(yù)處理,一般常用的兩種數(shù)據(jù)類型:
結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)可以看作是關(guān)系型數(shù)據(jù)庫的一張表,每列都有清晰的定義,包含了數(shù)值型和類別型兩種基本類型;每一行數(shù)據(jù)表示一個(gè)樣本的信息。
非結(jié)構(gòu)化數(shù)據(jù)。主要是文本、圖像、音頻和視頻數(shù)據(jù),其包含的信息無法用一個(gè)簡單的數(shù)值表示,也沒有清晰的類別定義,并且每個(gè)數(shù)據(jù)的大小互不相同。
這里主要介紹結(jié)構(gòu)化數(shù)據(jù)和圖像數(shù)據(jù)兩種數(shù)據(jù)的數(shù)據(jù)預(yù)處理方法。
數(shù)據(jù)的缺失主要包括記錄的缺失和記錄中某個(gè)字段信息的缺失,兩者都會(huì)造成分析結(jié)果的不準(zhǔn)確。
缺失值產(chǎn)生的原因:
信息暫時(shí)無法獲取,或者獲取信息的代價(jià)太大。
信息被遺漏,人為的輸入遺漏或者數(shù)據(jù)采集設(shè)備的遺漏。
屬性不存在,在某些情況下,缺失值并不意味著數(shù)據(jù)有錯(cuò)誤,對一些對象來說某些屬性值是不存在的,如未婚者的配偶姓名、兒童的固定收入等。
缺失值的影響:
數(shù)據(jù)挖掘建模將丟失大量的有用信息。
數(shù)據(jù)挖掘模型所表現(xiàn)出的不確定性更加顯著,模型中蘊(yùn)含的規(guī)律更難把握。
包含空值的數(shù)據(jù)會(huì)使建模過程陷入混亂,導(dǎo)致不可靠的輸出。
常見的缺失值的處理方法,主要有以下三種:
直接使用含有缺失值的特征:當(dāng)僅有少量樣本缺失該特征的時(shí)候可以嘗試使用;
刪除含有缺失值的特征:這個(gè)方法一般適用于大多數(shù)樣本都缺少該特征,且僅包含少量有效值是有效的;
插值補(bǔ)全缺失值。
最常使用的還是第三種插值補(bǔ)全缺失值的做法,這種做法又可以有多種補(bǔ)全方法:
均值/中位數(shù)/眾數(shù)補(bǔ)全
如果樣本屬性的距離是可度量的,則使用該屬性有效值的平均值來補(bǔ)全;
如果樣本屬性的距離不可度量,則可以采用眾數(shù)或者中位數(shù)來補(bǔ)全。
同類均值/中位數(shù)/眾數(shù)補(bǔ)全
對樣本進(jìn)行分類后,根據(jù)同類其他樣本該屬性的均值補(bǔ)全缺失值,當(dāng)然同第一種方法類似,如果均值不可行,可以嘗試眾數(shù)或者中位數(shù)等統(tǒng)計(jì)數(shù)據(jù)來補(bǔ)全。
固定值補(bǔ)全
利用固定的數(shù)值補(bǔ)全缺失的屬性值。
建模預(yù)測
利用機(jī)器學(xué)習(xí)方法,將缺失屬性作為預(yù)測目標(biāo)進(jìn)行預(yù)測,具體為將樣本根據(jù)是否缺少該屬性分為訓(xùn)練集和測試集,然后采用如回歸、決策樹等機(jī)器學(xué)習(xí)算法訓(xùn)練模型,再利用訓(xùn)練得到的模型預(yù)測測試集中樣本的該屬性的數(shù)值。
該方法根本的缺陷是如果其他屬性和缺失屬性無關(guān),則預(yù)測的結(jié)果毫無意義;但是若預(yù)測結(jié)果相當(dāng)準(zhǔn)確,則說明這個(gè)缺失屬性是沒必要納入數(shù)據(jù)集中的;一般的情況是介于兩者之間。
高維映射
將屬性映射到高維空間,采用獨(dú)熱碼編碼(one-hot)技術(shù)。將包含 K 個(gè)離散取值范圍的屬性值擴(kuò)展為 K+1 個(gè)屬性值,若該屬性值缺失,則擴(kuò)展后的第 K+1 個(gè)屬性值置為 1。
這種做法是最精確的做法,保留了所有的信息,也未添加任何額外信息,若預(yù)處理時(shí)把所有的變量都這樣處理,會(huì)大大增加數(shù)據(jù)的維度。這樣做的好處是完整保留了原始數(shù)據(jù)的全部信息、不用考慮缺失值;缺點(diǎn)是計(jì)算量大大提升,且只有在樣本量非常大的時(shí)候效果才好。
多重插補(bǔ)
多重插補(bǔ)認(rèn)為待插補(bǔ)的值是隨機(jī)的,實(shí)踐上通常是估計(jì)出待插補(bǔ)的值,再加上不同的噪聲,形成多組可選插補(bǔ)值,根據(jù)某種選擇依據(jù),選取最合適的插補(bǔ)值。
壓縮感知和矩陣補(bǔ)全
壓縮感知通過利用信號本身所具有的稀疏性,從部分觀測樣本中回復(fù)原信號。壓縮感知分為感知測量和重構(gòu)恢復(fù)兩個(gè)階段。
感知測量:?此階段對原始信號進(jìn)行處理以獲得稀疏樣本表示。常用的手段是傅里葉變換、小波變換、字典學(xué)習(xí)、稀疏編碼等;
重構(gòu)恢復(fù):?此階段基于稀疏性從少量觀測中恢復(fù)原信號。這是?壓縮感知的核心。
手動(dòng)補(bǔ)全
除了手動(dòng)補(bǔ)全方法,其他插值補(bǔ)全方法只是將未知值補(bǔ)以我們的主觀估計(jì)值,不一定完全符合客觀事實(shí)。在許多情況下,根據(jù)對所在領(lǐng)域的理解,手動(dòng)對缺失值進(jìn)行插補(bǔ)的效果會(huì)更好。但這種方法需要對問題領(lǐng)域有很高的認(rèn)識(shí)和理解,要求比較高,如果缺失數(shù)據(jù)較多,會(huì)比較費(fèi)時(shí)費(fèi)力。
最近鄰補(bǔ)全
尋找與該樣本最接近的樣本,使用其該屬性數(shù)值來補(bǔ)全。
對于圖片數(shù)據(jù),最常遇到的問題就是訓(xùn)練數(shù)據(jù)不足的問題。
一個(gè)模型所能獲取的信息一般來源于兩個(gè)方面,一個(gè)是訓(xùn)練數(shù)據(jù)包含的信息;另一個(gè)就是模型的形成過程中(包括構(gòu)造、學(xué)習(xí)、推理等),人們提供的先驗(yàn)信息。
而如果訓(xùn)練數(shù)據(jù)不足,那么模型可以獲取的信息就比較少,需要提供更多的先驗(yàn)信息保證模型的效果。先驗(yàn)信息一般作用來兩個(gè)方面,一是模型,如采用特定的內(nèi)在結(jié)構(gòu)(比如深度學(xué)習(xí)的不同網(wǎng)絡(luò)結(jié)構(gòu))、條件假設(shè)或添加其他約束條件(深度學(xué)習(xí)中體現(xiàn)在損失函數(shù)加入不同正則項(xiàng));第二就是數(shù)據(jù),即根據(jù)先驗(yàn)知識(shí)來調(diào)整、變換或者拓展訓(xùn)練數(shù)據(jù),讓其展現(xiàn)出更多的、更有用的信息。
對于圖像數(shù)據(jù),如果訓(xùn)練數(shù)據(jù)不足,導(dǎo)致的后果就是模型過擬合問題,即模型在訓(xùn)練樣本上的效果不錯(cuò),但在測試集上的泛化效果很糟糕。過擬合的解決方法可以分為兩類:
基于模型的方法:主要是采用降低過擬合風(fēng)險(xiǎn)的措施,如簡化模型(從卷積神經(jīng)網(wǎng)絡(luò)變成邏輯回歸算法)、添加約束項(xiàng)以縮小假設(shè)空間(如 L1、L2等正則化方法)、集成學(xué)習(xí)、Dropout方法(深度學(xué)習(xí)常用方法)等;
基于數(shù)據(jù)的方法:主要就是數(shù)據(jù)擴(kuò)充(Data Augmentation),即根據(jù)一些先驗(yàn)知識(shí),在保持特點(diǎn)信息的前提下,對原始數(shù)據(jù)進(jìn)行適當(dāng)變換以達(dá)到擴(kuò)充數(shù)據(jù)集的效果。具體做法有多種,在保持圖像類別不變的前提下,可以對每張圖片做如下變換處理:
一定程度內(nèi)的隨機(jī)旋轉(zhuǎn)、平移、縮放、裁剪、填充、左右翻轉(zhuǎn)等,這些變換對應(yīng)著同一個(gè)目標(biāo)在不同角度的觀察結(jié)果;
對圖像中的元素添加噪聲擾動(dòng),如椒鹽噪聲、高斯白噪聲等;
顏色變換。比如在圖像的 RGB 顏色空間進(jìn)行主成分分析,得到 3 個(gè)主成分的特征向量p1,p2,p3以及對應(yīng)的特征值λ1,λ2,λ3,然后在每個(gè)像素的 RGB 值上添加增量[p1,p2,p3]*[a1λ1,a2λ2,a3λ3],其中a1,a2,a3都是均值為 0, 方差較小的高斯分布隨機(jī)數(shù);
改變圖像的亮度、清晰度、對比度、銳度等。
上述數(shù)據(jù)擴(kuò)充方法是在圖像空間進(jìn)行變換的,也可以選擇先對圖像進(jìn)行特征提取,然后在圖像的特征空間進(jìn)行變換,利用一些通用的數(shù)據(jù)擴(kuò)充或者上采樣方法,例如 SMOTE(Synthetic Minority Over-sampling Technique)。
此外,最近幾年一直比較熱門的 GAN,生成對抗網(wǎng)絡(luò),它的其中一個(gè)應(yīng)用就是生成圖片數(shù)據(jù),也可以應(yīng)用于數(shù)據(jù)擴(kuò)充。
最后,還有一種方法可以不需要擴(kuò)充數(shù)據(jù),利用遷移學(xué)習(xí)的做法,也是如今非常常用的一個(gè)方法,微調(diào)(Finetuning),即借用在大數(shù)據(jù)集(如 ImageNet)上預(yù)訓(xùn)練好的模型,然后在自己的小數(shù)據(jù)集上進(jìn)行微調(diào),這是一種簡單的遷移學(xué)習(xí),同時(shí)也可以快速訓(xùn)練一個(gè)效果不錯(cuò)的針對目標(biāo)類別的新模型。
異常值分析是檢驗(yàn)數(shù)據(jù)是否有錄入錯(cuò)誤以及含有不合常理的數(shù)據(jù)。忽視異常值的存在是十分危險(xiǎn)的,不加剔除地把異常值包括進(jìn)數(shù)據(jù)的計(jì)算分析過程中,對結(jié)果會(huì)產(chǎn)生不良影響。
異常值是指樣本中的個(gè)別值,其數(shù)值明顯偏離其余的觀測值。異常值也稱為離群點(diǎn),異常值分析也稱為離群點(diǎn)分析,主要有以下幾種方法:
1.簡單統(tǒng)計(jì):比如利用pandas庫的describe()方法觀察數(shù)據(jù)的統(tǒng)計(jì)性描述,或者簡單使用散點(diǎn)圖也能觀察到異常值的存在,如下圖所示:

2.3?原則: 這個(gè)原則有個(gè)條件:數(shù)據(jù)需要服從正態(tài)分布。在 3? 原則下,異常值如超過 3 倍標(biāo)準(zhǔn)差,那么可以將其視為異常值。正負(fù)3? 的概率是 99.7%,那么距離平均值 3? 之外的值出現(xiàn)的概率為P(|x-u| > 3?) <= 0.003,屬于極個(gè)別的小概率事件。如果數(shù)據(jù)不服從正態(tài)分布,也可以用遠(yuǎn)離平均值的多少倍標(biāo)準(zhǔn)差來描述。如下圖所示:

3.箱型圖
這種方法是利用箱型圖的**四分位距(IQR)**對異常值進(jìn)行檢測,也叫Tukey‘s test。箱型圖的定義如下:

四分位距(IQR)就是上四分位與下四分位的差值。而我們通過IQR的1.5倍為標(biāo)準(zhǔn),規(guī)定:超過上四分位+1.5倍IQR距離,或者下四分位-1.5倍IQR距離的點(diǎn)為異常值。
4. 基于模型預(yù)測
顧名思義,該方法會(huì)構(gòu)建一個(gè)概率分布模型,并計(jì)算對象符合該模型的概率,將低概率的對象視為異常點(diǎn)。如果模型是簇的組合,則異常點(diǎn)是不在任何簇的對象;如果模型是回歸,異常點(diǎn)是遠(yuǎn)離預(yù)測值的對象(就是第一個(gè)方法的圖示例子)。
優(yōu)缺點(diǎn):
有堅(jiān)實(shí)的統(tǒng)計(jì)學(xué)理論基礎(chǔ),當(dāng)存在充分的數(shù)據(jù)和所用的檢驗(yàn)類型的知識(shí)時(shí),這些檢驗(yàn)可能非常有效;
對于多元數(shù)據(jù),可用的選擇少一些,并且對于高維數(shù)據(jù),這些檢測可能性很差。
特征縮放主要分為兩種方法,歸一化和正則化。
歸一化(Normalization),也稱為標(biāo)準(zhǔn)化,這里不僅僅是對特征,實(shí)際上對于原始數(shù)據(jù)也可以進(jìn)行歸一化處理,它是將特征(或者數(shù)據(jù))都縮放到一個(gè)指定的大致相同的數(shù)值區(qū)間內(nèi)。
歸一化的兩個(gè)原因:
某些算法要求樣本數(shù)據(jù)或特征的數(shù)值具有零均值和單位方差;
為了消除樣本數(shù)據(jù)或者特征之間的量綱影響,即消除數(shù)量級的影響。如下圖所示是包含兩個(gè)屬性的目標(biāo)函數(shù)的等高線
數(shù)量級的差異將導(dǎo)致量級較大的屬性占據(jù)主導(dǎo)地位。從下圖左看到量級較大的屬性會(huì)讓橢圓的等高線壓縮為直線,使得目標(biāo)函數(shù)僅依賴于該屬性。
數(shù)量級的差異會(huì)導(dǎo)致迭代收斂速度減慢。原始的特征進(jìn)行梯度下降時(shí),每一步梯度的方向會(huì)偏離最小值(等高線中心點(diǎn))的方向,迭代次數(shù)較多,且學(xué)習(xí)率必須非常小,否則非常容易引起寬幅震蕩。但經(jīng)過標(biāo)準(zhǔn)化后,每一步梯度的方向都幾乎指向最小值(等高線中心點(diǎn))的方向,迭代次數(shù)較少。
所有依賴于樣本距離的算法對于數(shù)據(jù)的數(shù)量級都非常敏感。比如 KNN 算法需要計(jì)算距離當(dāng)前樣本最近的 k 個(gè)樣本,當(dāng)屬性的量級不同,選擇的最近的 k 個(gè)樣本也會(huì)不同。

如果數(shù)據(jù)集分為訓(xùn)練集、驗(yàn)證集、測試集,那么三個(gè)數(shù)據(jù)集都采用相同的歸一化參數(shù),數(shù)值都是通過訓(xùn)練集計(jì)算得到,即上述兩種方法中分別需要的數(shù)據(jù)最大值、最小值,方差和均值都是通過訓(xùn)練集計(jì)算得到(這個(gè)做法類似于深度學(xué)習(xí)中批歸一化,BN的實(shí)現(xiàn)做法)。
歸一化不是萬能的,實(shí)際應(yīng)用中,通過梯度下降法求解的模型是需要?dú)w一化的,這包括線性回歸、邏輯回歸、支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)等模型。但決策樹模型不需要,以 C4.5 算法為例,決策樹在分裂結(jié)點(diǎn)時(shí)候主要依據(jù)數(shù)據(jù)集 D 關(guān)于特征 x 的信息增益比,而信息增益比和特征是否經(jīng)過歸一化是無關(guān)的,歸一化不會(huì)改變樣本在特征 x 上的信息增益。
正則化是將樣本或者特征的某個(gè)范數(shù)(如 L1、L2 范數(shù))縮放到單位 1。正則化的過程是針對單個(gè)樣本的,對每個(gè)樣本將它縮放到單位范數(shù)。歸一化是針對單個(gè)屬性的,需要用到所有樣本在該屬性上的值。在前面系列課里對正則化有過詳細(xì)的講述,這里就不再擴(kuò)展開來了,大家還有不理解的可以回過頭再仔細(xì)讀一下。
序號編碼一般用于處理類別間具有大小關(guān)系的數(shù)據(jù)。
比如成績,可以分為高、中、低三個(gè)檔次,并且存在“高>中>低”的大小關(guān)系,那么序號編碼可以對這三個(gè)檔次進(jìn)行如下編碼:高表示為 3,中表示為 2,低表示為 1,這樣轉(zhuǎn)換后依然保留了大小關(guān)系。
3.6.2 獨(dú)熱編碼(One-hot Encoding)
熱編碼通常用于處理類別間不具有大小關(guān)系的特征。
獨(dú)熱編碼是采用?N?位狀態(tài)位來對?N?個(gè)可能的取值進(jìn)行編碼。比如血型,一共有 4 個(gè)取值(A、B、AB 以及 O 型),那么獨(dú)熱編碼會(huì)將血型轉(zhuǎn)換為一個(gè) 4 維稀疏向量,分別表示上述四種血型為:
A型:(1,0,0,0)
B型:(0,1,0,0)
AB型:(0,0,1,0)
O型:(0,0,0,1)
獨(dú)熱編碼的優(yōu)點(diǎn)有以下幾個(gè):
能夠處理非數(shù)值屬性。比如血型、性別等
一定程度上擴(kuò)充了特征。
編碼后的向量是稀疏向量,只有一位是 1,其他都是 0,可以利用向量的稀疏來節(jié)省存儲(chǔ)空間。
能夠處理缺失值。當(dāng)所有位都是 0,表示發(fā)生了缺失。此時(shí)可以采用處理缺失值提到的高維映射方法,用第?N+1?位來表示缺失值。
顧名思義,離散化就是將連續(xù)的數(shù)值屬性轉(zhuǎn)換為離散的數(shù)值屬性。
那么什么時(shí)候需要采用特征離散化呢?
這背后就是需要根據(jù)實(shí)際情況判斷是采用“海量離散特征+簡單模型”,還是“少量連續(xù)特征+復(fù)雜模型”的做法了。
對于線性模型,通常使用“海量離散特征+簡單模型”。
優(yōu)點(diǎn):模型簡單
缺點(diǎn):特征工程比較困難,但一旦有成功的經(jīng)驗(yàn)就可以推廣,并且可以很多人并行研究。
對于非線性模型(比如深度學(xué)習(xí)),通常使用“少量連續(xù)特征+復(fù)雜模型”。
優(yōu)點(diǎn):不需要復(fù)雜的特征工程
缺點(diǎn):模型復(fù)雜
離散化的常用方法是分桶, 具體流程如下:
將所有樣本在連續(xù)的數(shù)值屬性?j?的取值從小到大排列。
然后從小到大依次選擇分桶邊界。其中分桶的數(shù)量以及每個(gè)桶的大小都是超參數(shù),需要人工指定。每個(gè)桶的編號為 0,1,…,M,即總共有 M 個(gè)桶。
給定屬性?j?的取值 a,判斷 a 在哪個(gè)分桶的取值范圍內(nèi),將其劃分到對應(yīng)編號 k 的分桶內(nèi),并且屬性取值變?yōu)?k。
分桶的數(shù)量和邊界通常需要人工指定。一般有兩種方法:
根據(jù)業(yè)務(wù)領(lǐng)域的經(jīng)驗(yàn)來指定。如:對年收入進(jìn)行分桶時(shí),根據(jù) 2017 年全國居民人均可支配收入約為 2.6 萬元,可以選擇桶的數(shù)量為5。則分桶策略如下:
收入小于 1.3 萬元(人均的 0.5 倍),則為分桶 0 。
年收入在 1.3 萬元 ~5.2 萬元(人均的 0.5~2 倍),則為分桶 1 。
年收入在 5.3 萬元~26 萬元(人均的 2 倍~10 倍),則為分桶 2 。
年收入在 26 萬元~260 萬元(人均的 10 倍~100 倍),則為分桶 3 。
年收入超過 260 萬元,則為分桶 4 。
根據(jù)模型指定。根據(jù)具體任務(wù)來訓(xùn)練分桶之后的數(shù)據(jù)集,通過超參數(shù)搜索來確定最優(yōu)的分桶數(shù)量和分桶邊界。
選擇分桶大小時(shí),有一些經(jīng)驗(yàn)指導(dǎo):
分桶大小必須足夠小,使得桶內(nèi)的屬性取值變化對樣本標(biāo)記的影響基本在一個(gè)不大的范圍。
即不能出現(xiàn)這樣的情況:單個(gè)分桶的內(nèi)部,樣本標(biāo)記輸出變化很大。
分桶大小必須足夠大,使每個(gè)桶內(nèi)都有足夠的樣本。
如果桶內(nèi)樣本太少,則隨機(jī)性太大,不具有統(tǒng)計(jì)意義上的說服力。
每個(gè)桶內(nèi)的樣本盡量分布均勻。
在工業(yè)界實(shí)際應(yīng)用中很少直接將連續(xù)值作為邏輯回歸模型的特征輸入,而是將連續(xù)特征離散化為一系列 0/1 的離散特征。
其優(yōu)勢有:
離散化之后得到的稀疏向量,內(nèi)積乘法運(yùn)算速度更快,計(jì)算結(jié)果方便存儲(chǔ)。
離散化之后的特征對于?異常數(shù)據(jù)具有很強(qiáng)的魯棒性。
如:銷售額作為特征,當(dāng)銷售額在?[30,100)?之間時(shí),為1,否則為 0。如果未離散化,則一個(gè)異常值 10000 會(huì)給模型造成很大的干擾。由于其數(shù)值較大,它對權(quán)重的學(xué)習(xí)影響較大。
邏輯回歸屬于廣義線性模型,表達(dá)能力受限,只能描述線性關(guān)系。特征離散化之后,相當(dāng)于?引入了非線性,提升模型的表達(dá)能力,增強(qiáng)擬合能力。
離散化之后可以進(jìn)行特征交叉**。假設(shè)有連續(xù)特征 ,離散化為?N個(gè) 0/1 特征;連續(xù)特征?k,離散化為?M?個(gè) 0/1 特征,則分別進(jìn)行離散化之后引入了?N+M?個(gè)特征。
假設(shè)離散化時(shí),并不是獨(dú)立進(jìn)行離散化,而是特征?j,k?聯(lián)合進(jìn)行離散化,則可以得到?N*M?個(gè)組合特征。這會(huì)進(jìn)一步引入非線性,提高模型表達(dá)能力。
離散化之后,模型會(huì)更穩(wěn)定。
如對銷售額進(jìn)行離散化,[30,100)?作為一個(gè)區(qū)間。當(dāng)銷售額在40左右浮動(dòng)時(shí),并不會(huì)影響它離散化后的特征的值。
但是處于區(qū)間連接處的值要小心處理,另外如何劃分區(qū)間也是需要仔細(xì)處理。
特征離散化簡化了邏輯回歸模型,同時(shí)降低模型過擬合的風(fēng)險(xiǎn)。
能夠?qū)惯^擬合的原因:經(jīng)過特征離散化之后,模型不再擬合特征的具體值,而是擬合特征的某個(gè)概念**。因此能夠**對抗數(shù)據(jù)的擾動(dòng),更具有魯棒性。
另外離散化使得模型要擬合的值大幅度降低,也降低了模型的復(fù)雜度。
定義:從給定的特征集合中選出相關(guān)特征子集的過程稱為特征選擇(feature selection)。
1.對于一個(gè)學(xué)習(xí)任務(wù),給定了屬性集,其中某些屬性可能對于學(xué)習(xí)來說很關(guān)鍵,但有些屬性意義就不大。
對當(dāng)前學(xué)習(xí)任務(wù)有用的屬性或者特征,稱為相關(guān)特征(relevant feature);
對當(dāng)前學(xué)習(xí)任務(wù)沒用的屬性或者特征,稱為無關(guān)特征(irrelevant feature)。
2.特征選擇可能會(huì)降低模型的預(yù)測能力,因?yàn)楸惶蕹奶卣髦锌赡馨擞行У男畔?,拋棄這部分信息一定程度上會(huì)降低模型的性能。但這也是計(jì)算復(fù)雜度和模型性能之間的取舍:
如果保留盡可能多的特征,模型的性能會(huì)提升,但同時(shí)模型就變復(fù)雜,計(jì)算復(fù)雜度也同樣提升;
如果剔除盡可能多的特征,模型的性能會(huì)有所下降,但模型就變簡單,也就降低計(jì)算復(fù)雜度。
3.常見的特征選擇分為三類方法:
過濾式(filter)
包裹式(wrapper)
嵌入式(embedding)
采用特征選擇的原因:
維數(shù)災(zāi)難問題。因?yàn)閷傩曰蛘咛卣鬟^多造成的問題,如果可以選擇重要的特征,使得僅需要一部分特征就可以構(gòu)建模型,可以大大減輕維數(shù)災(zāi)難問題,從這個(gè)意義上講,特征選擇和降維技術(shù)有相似的動(dòng)機(jī),事實(shí)上它們也是處理高維數(shù)據(jù)的兩大主流技術(shù)。
去除無關(guān)特征可以降低學(xué)習(xí)任務(wù)的難度,也同樣讓模型變得簡單,降低計(jì)算復(fù)雜度。
特征選擇最重要的是確保不丟失重要的特征,否則就會(huì)因?yàn)槿鄙僦匾男畔⒍鵁o法得到一個(gè)性能很好的模型。給定數(shù)據(jù)集,學(xué)習(xí)任務(wù)不同,相關(guān)的特征很可能也不相同,因此特征選擇中的不相關(guān)特征指的是與當(dāng)前學(xué)習(xí)任務(wù)無關(guān)的特征。有一類特征稱作冗余特征(redundant feature),它們所包含的信息可以從其他特征中推演出來。冗余特征通常都不起作用,去除它們可以減輕模型訓(xùn)練的負(fù)擔(dān);但如果冗余特征恰好對應(yīng)了完成學(xué)習(xí)任務(wù)所需要的某個(gè)中間概念,則它是有益的,可以降低學(xué)習(xí)任務(wù)的難度。
常見的特征選擇方法分為以下三種,主要區(qū)別在于特征選擇部分是否使用后續(xù)的學(xué)習(xí)器。
過濾式(filter):先對數(shù)據(jù)集進(jìn)行特征選擇,其過程與后續(xù)學(xué)習(xí)器無關(guān),即設(shè)計(jì)一些統(tǒng)計(jì)量來過濾特征,并不考慮后續(xù)學(xué)習(xí)器問題
包裹式(wrapper):實(shí)際上就是一個(gè)分類器,它是將后續(xù)的學(xué)習(xí)器的性能作為特征子集的評價(jià)標(biāo)準(zhǔn)。
嵌入式(embedding):實(shí)際上是學(xué)習(xí)器自主選擇特征。
最簡單的特征選擇方法是:去掉取值變化小的特征。
假如某特征只有 0 和 1 的兩種取值,并且所有輸入樣本中,95% 的樣本的該特征取值都是 1 ,那就可以認(rèn)為該特征作用不大。
當(dāng)然,該方法的一個(gè)前提是,特征值都是離散型才使用該方法;如果是連續(xù)型,需要離散化后再使用,并且實(shí)際上一般不會(huì)出現(xiàn) 95% 以上都取某個(gè)值的特征的存在。
所以,這個(gè)方法簡單,但不太好用,可以作為特征選擇的一個(gè)預(yù)處理,先去掉變化小的特征,然后再開始選擇上述三種類型的特征選擇方法。
該方法先對數(shù)據(jù)集進(jìn)行特征選擇,然后再訓(xùn)練學(xué)習(xí)器。特征選擇過程與后續(xù)學(xué)習(xí)器無關(guān)。
也就是先采用特征選擇對初始特征進(jìn)行過濾,然后用過濾后的特征訓(xùn)練模型。
優(yōu)點(diǎn)是計(jì)算時(shí)間上比較高效,而且對過擬合問題有較高的魯棒性;
缺點(diǎn)是傾向于選擇冗余特征,即沒有考慮到特征之間的相關(guān)性。
過濾式選擇主要有方差選擇法和相關(guān)系數(shù)法。
1、方差選擇法
使用方差選擇法,先要計(jì)算各個(gè)特征的方差,然后根據(jù)閾值,選擇方差大于閾值的特征。
2、相關(guān)系數(shù)法
使用相關(guān)系數(shù)法,先要計(jì)算各個(gè)特征對目標(biāo)值的相關(guān)系數(shù)以及相關(guān)系數(shù)的 P 值。
相比于過濾式特征選擇不考慮后續(xù)學(xué)習(xí)器,包裹式特征選擇直接把最終將要使用的學(xué)習(xí)器的性能作為特征子集的評價(jià)原則。其目的就是為給定學(xué)習(xí)器選擇最有利于其性能、量身定做的特征子集。
優(yōu)點(diǎn)是直接針對特定學(xué)習(xí)器進(jìn)行優(yōu)化,考慮到特征之間的關(guān)聯(lián)性,因此通常包裹式特征選擇比過濾式特征選擇能訓(xùn)練得到一個(gè)更好性能的學(xué)習(xí)器,
缺點(diǎn)是由于特征選擇過程需要多次訓(xùn)練學(xué)習(xí)器,故計(jì)算開銷要比過濾式特征選擇要大得多。
在過濾式和包裹式特征選擇方法中,特征選擇過程與學(xué)習(xí)器訓(xùn)練過程有明顯的分別。
嵌入式特征選擇是將特征選擇與學(xué)習(xí)器訓(xùn)練過程融為一體,兩者在同一個(gè)優(yōu)化過程中完成的。即學(xué)習(xí)器訓(xùn)練過程中自動(dòng)進(jìn)行了特征選擇。
常用的方法包括:
利用正則化,如?L_1L1?,?L_2L2??范數(shù),主要應(yīng)用于如線性回歸、邏輯回歸以及支持向量機(jī)(SVM)等算法;
使用決策樹思想,包括決策樹、隨機(jī)森林、Gradient Boosting 等。
引入?L_1L1??范數(shù)除了降低過擬合風(fēng)險(xiǎn)之外,還有一個(gè)好處:它求得的?ww?會(huì)有較多的分量為零。即:它更容易獲得稀疏解。
于是基于?L_1L1??正則化的學(xué)習(xí)方法就是一種嵌入式特征選擇方法,其特征選擇過程與學(xué)習(xí)器訓(xùn)練過程融為一體,二者同時(shí)完成。
至此,統(tǒng)計(jì)學(xué)習(xí)相關(guān)內(nèi)容已介紹完畢,下節(jié)課將給大家?guī)韽?qiáng)化學(xué)習(xí)相關(guān)課程。
本博客所有內(nèi)容僅供學(xué)習(xí),不為商用,如有侵權(quán),請聯(lián)系博主,謝謝。
[1] 人工智能:一種現(xiàn)代的方法(第3版)
[2]?特征工程之特征縮放&特征編碼