機器學習之AdaBoost
Adaboost是一種組合學習的提升算法,能將多個弱學習算法(甚至只比隨機猜測好一點)組合起來,構成一個足夠強大的學習模型。
組合學習
組合學習是將多個假說組合起來,并集成它們的預測。比如對于一個問題,我們可以生成20棵決策樹,讓它們對新樣例的分類進行預測,最后通過投票決定最終的預測。這樣可以有效的降低錯誤率。
提升
提升是一種廣泛使用的組合學習。首先解釋加權訓練集的概念。在這樣的訓練集中,每個樣例都有一個權重w(不小于0)來表示一個樣例的重要程度。提升算法開始于所有樣例的權重均為1,從這樣的訓練集中產生了第一個假說H1,這個假說也許會對一些測試樣例進行錯誤的分類,于是我們把這些樣例挑選出來并增加它們的權重,然后把修改后的訓練集提供給下一個假說H2進行訓練。直到K個假說都產生之后,我們輸出一個組合假說,它是這K個假說的加權多數函數,某個假說的權重大小取決于它在訓練集上的表現。
例如下圖所示,我們通過增加被錯誤分類的樣例的權重,可以使得下一個弱學習算法在錯誤分類樣例上表現得更好。
AdaBoost function AdaBoost(examples, L, K) returns a weighted hypothesis
inputs: exmaples, a set of example for learning
L, a learning algorithm
K, the number of hypotheses
local variable: w, a vector of weight
h, a vector of K hypotheses, initially 1/N
z, a vector of K hypothesis weight
for k = 1 to K do
h[k] = L(examples, w)
error = 0
for i = 1 to N do
if h[k](x_i) != y_i then error = error+w[i]
for i = 1 to N do
if h[k](x_i) == y_i then w[i] = w[i]*error/(1-error)
w = Normalize(w)
z[k] = log(1-error)/error
return (h, z)</pre></h1>
for k = 1 to K do
h[k] = L(examples, w)
error = 0
for i = 1 to N do
if h[k](x_i) != y_i then error = error+w[i]
for i = 1 to N do
if h[k](x_i) == y_i then w[i] = w[i]*error/(1-error)
w = Normalize(w)
z[k] = log(1-error)/error
return (h, z)</pre></h1>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!