Adaboost學習筆記

一、Adaptive basis function models

1.kernel methods

kernel是度量x和u之間的距離的函數,也可以放在loss fuction中。kernel的形式有高斯kernel、球形kernel、cos距離(在nlp中用得很多,第j個word在第i個裏面出現的次數)、RF kernel。

怎麼定義好kernel:如果想度量兩幅圖像的距離。kernel的方法resize到統一大小的圖像,然後對應每個位置的pixel的差值。

怎麼樣學習kernel?方法:Maximizing likelihood、MKL(multiple kernel learning)定義一堆小的basis kernel,然後加權組成大的kernel、Adaptive basis function model(ABM)要學習w和\phi

2.CART

model:f(x) = E(y|x)=\sum w_{mI(x\in R_{m} )}=\sum w_{m}phi (x:v_{m}),其中R_{m}是region,由basis function定義;w_{m}:means response;v_{m}:encodes the variable to split on

how:find best split (j^{*},t^{*}) = arg min min cost({xi,yi:xij\leqslant t})+cost({xi,yi:xij>t})

algorithm: function fittree;mode.prediction =mean or class label distribution; split ;if not worthsplitting then return node ,else node.test = \lambdax.xj>t,node.left = fitTree,node.right = fitree.

也就是:加載數據集;計算gini index;根據最佳分割feature進行數據分割;根據最大信息增益旋轉最佳分割feature;遞歸構建結構樹;樣本分類

CART的種類:Misclassification rate 分對的概率;Entropy ;Gini index基尼指數

缺點:估計不準:貪心算法,只能局部最優;樹不穩定,training data小改變會大不同

3.Boosting

一個自適應的貪心算法,以淺層的ACRT作爲basis learner,是best off-the-shelf 分類器,boosting>  random forest >single decision tree。

(1)弱學習機:對一定分佈的訓練樣本給出假設(僅僅強於隨機財產,根據雲猜測可能會下雨);

強學習機:根據得到的弱學習機和相應的權重給出假設(最大程度上符合實際情況:almost perfect expect),綜合準確的天氣預測,也就是弱學習機根據boosting得到。

(2)95年,改進了Boosting算法,提出了AdaBoost算法。

AdaBoost優點:該算法效率和boosting算法相同,但不需要先驗知識。

(3)How: 設置權重初始值,根據訓練分類器訓練分類器,再反過來根據分類器調整權重。不斷迭代的一個過程。

原始訓練集根據強學習機,分錯的增加權重,分對的降低權重。接着再用一個弱學習機來訓練。

步驟也就是:首先給出任意一個弱學習算法和訓練集;初始化時,Adaboost爲訓練集制定分佈爲1/n,即每個訓練例的權重都相同爲1/n。接着,條用弱學習算法進行T次迭代,每次迭代後,按照訓練結果更新訓練集的分佈,對於訓練識別的訓練例賦予較大的權重,使得下一次迭代跟家關注這些訓練例,從而得到一個預測函數系列,每個預測函數也賦予一個權值,預測效果好的,相應權重大。T次迭代之後,在分類問題中最終的預測函數H採用投票法來確定。單個弱學習器的學習準確率不高,根據Boosting 算法之後,最終準確率將有所提高。

(4)Boosting的表現形式:squared error 、absolute error、exponential loss、logloss。adaboost是boost的一種形式。

(5)Adaboost:是指數loss。L(y,f) = exp(-yf)\frac{\partial }{\partial f(x)}E[e^{-yf(x)|x}]=\frac{\partial }{\partial f(x)}[p(y=1|x)e^{-f(x)}+p(y=-1|x)e^{f(x)}] =-p(y=1|x)e^{-f(x)}+p(y=-1|x)e^{f(x)} =0

\frac{p(y=1|x)}{p(y=-1|x)}=e^{2f(x)}

可以初始化f0(x),求L(yi,f(xi,r))和的最小值;之後迭代求解。f_{m}(x) = f_{m-1}(x)+\beta _{m}\phi (x;\gamma _{m}).

wi=1/N;在當前情況下訓練一個弱分類器,求出\alpha _{m}

4.總結

(1)樣本的權重:沒有先驗知識的情況下,初始分佈爲等概率分佈,訓練集如果有N個樣本,每個樣本分佈概率爲1/N;每次循環後提高錯誤樣本分佈概率,分錯樣本在訓練集中所佔權重增大,使得下一次循環的弱學習機能集中力量對這些錯誤樣本進行判斷

弱學習機的權重:準確率越高弱學習機權重越高

循環控制:損失函數最小。在強學習機組合中增加弱學習機使準確率提高,損失函數值減小。

(2)表現好的原因

可以做ll-regularization:可以計算好一些弱學習機,可以用ll-regularization選出有效feature的子集,也可以用boosting 每次選出一個弱學習機,另外,可以結合boosting和ll-regularization,每次用boosting選擇一個best weak learner,可以用ll剪枝,去掉一些無關feature。

adaboost最大化了margin

(3)缺點

速度慢,一定程度上依賴於訓練數據集合和弱學習機的旋轉,訓練數據不足或者弱學習機太弱,會導致訓練精度下降

Boosting易收到噪聲的影響,這是因爲它在迭代過程中總是給噪聲分配較大的權重,使得這些噪聲在以後的迭代中收到更多的關注。

(4)Exercise

隨機生成一些數據,或者自己找數據;

用RBF kernel 去fit

實現ID3,C4.5,CART算法,分別fit

用Adaboost去fit

用LogitBoost 去fit

如果存在一個多項式的學習算法能夠學習它並且正確率很高,則是強克學習的;如果存在一個多項式的學習算法能夠學習它,並且學習的正確率僅僅比隨機猜測略好,則這個概念是弱可學習的。強可學習的與弱可學習是等價的。

步驟:初始化訓練樣本將權值賦爲1/N。使用具有權值分佈Dm的訓練數據集學習,得到基本分類器(弱分類器):Gm(x): x {-1,1}

            計算Gm(x)在訓練數據集上的分類誤差率 em=P(Gm(xi)\neq yi)=\sum wmiI(Gm(xi)\neq yi)

            就散Gm(x)的係數:\alpha_{m}=\frac{1}{2}log\frac{1-e_{m}}{e_{m}}

            更新訓練數據集的權值分佈:Dm+1,Wm+1;構建基本分類器的線性組合;之後得到最終分類器

舉例:給定下列訓練樣本,使用AdaBoost算法學習一個強 分類器?

解:初始化訓練數據的權值分佈:D_{1}=(w11,w12...w1i...,w1N), w1i=1/N,  W1i=0.1

        對於m=1,在權值分佈爲D1的訓練數據上,閾值v取2.5時誤差率最低,故基本分類器爲

G1(x)=\left\{\begin{matrix} 1, x <2.5 & \\ & -1, x>2.5 \end{matrix}\right.,求出誤差率e和係數。得到f1(x)=a1*G1(x)之後調整權值(分錯的權值重些)D2,W2+i。然後對於m=2,在權值分佈爲D2的訓練數據上,閾值去8.5是誤差率最低,基本分類器按8.5來分。重新計算誤差率和係數。f2(x)=a1*G1(x)+a2*G2(x)。再對於m=3,在權值分佈爲D3的訓練數據上,再按這個過程來做。

誤差上限:\frac{1}{N}\sum I\leq \frac{1}{N}\sum exp(-y_{i}f(x_{i}))=\sum Z_{m}

Adaboost算法模型爲加法模型、損失函數爲指數函數,學習函數爲錢箱分佈算法時的二類學習方法。

前向分佈算法

總結:AdaBoost系列誤差是以指數速率下降的的;不需要實現事先知道下界;是自適應的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章