機器學習之AdaBoost

jopen 9年前發布 | 13K 次閱讀 AdaBoost 機器學習

Adaboost是一種組合學習的提升算法,能將多個弱學習算法(甚至只比隨機猜測好一點)組合起來,構成一個足夠強大的學習模型。

組合學習

組合學習是將多個假說組合起來,并集成它們的預測。比如對于一個問題,我們可以生成20棵決策樹,讓它們對新樣例的分類進行預測,最后通過投票決定最終的預測。這樣可以有效的降低錯誤率。

提升

提升是一種廣泛使用的組合學習。首先解釋加權訓練集的概念。在這樣的訓練集中,每個樣例都有一個權重w(不小于0)來表示一個樣例的重要程度。提升算法開始于所有樣例的權重均為1,從這樣的訓練集中產生了第一個假說H1,這個假說也許會對一些測試樣例進行錯誤的分類,于是我們把這些樣例挑選出來并增加它們的權重,然后把修改后的訓練集提供給下一個假說H2進行訓練。直到K個假說都產生之后,我們輸出一個組合假說,它是這K個假說的加權多數函數,某個假說的權重大小取決于它在訓練集上的表現。
例如下圖所示,我們通過增加被錯誤分類的樣例的權重,可以使得下一個弱學習算法在錯誤分類樣例上表現得更好。
機器學習之AdaBoost

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>

來自:http://www.cnblogs.com/bgmind/p/4301723.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!