美文网首页
[監督式]Ensemble learning

[監督式]Ensemble learning

作者: RJ阿杰 | 来源:发表于2019-05-16 14:51 被阅读0次

    Ensemble learning(集成學習)

    二進制通訊時使用vote避免丟失
    • 做法
      假設我們有多個模型(假設3個),每個模型準確率都大於50%(假設80%),而每個模型之間都會存在差異,那麼我們混合模型,分類問題使用每個模型投票(vote)多數作為預測結果、而回歸問題使用平均(avg)作為預測結果,如此一來我們的模型不會比原來最低準確率的模型的差,但有可能讓模型準確率更高。

    Bagging(bootstrap aggregating)

    • 做法
      我們有一個樣本池有N個樣本,我們從樣本池中取N'次,每一次的取出的樣本都會放回樣本池中(表示會抽到重複的樣本),然後我們做C次得到C組樣本,我們分別以4個相同或不同的模型進行訓練,然後預測時使用投票或平均作為預測結果,通常會比只使用一個模型時效果還要來的好,模型比較robust。

    • 使用時機
      在模型容易overfitting的時候,使用Bagging。
      因為我們把數據分成多個子集,分別從各個子集訓練後使用投票或平均作為預測結果,所以結果會比較平滑,比較不會overfitting,因為噪聲可能會在投票或平均被忽視掉。

    Boosting

    • 使用時機
      在模型underfitting的時候,使用Boosting。

    AdaBoost

    AdaBoost方法對於噪聲數據和異常數據很敏感。
    AdaBoost方法的自適應在於:前一個model分錯的樣本讓判斷錯誤的train data提高權重,被用來訓練下一個model,我們在loss function上乘上一組weight,錯誤的資料有更高的weight,使得錯誤的資料有更高的loss。

    \varepsilon代表錯誤率
    Z代表樣本數(例如: u_1^1=0.4 , u_1^2=1,Z=1.4 表示共有1.4筆樣本 )

    我們第一個(model( f_1 ))錯誤率小於0.5,我們要找一個u_2使得model( f_1 )錯誤率等於0.5,我們使用model( f_2 )來訓練這組新weight的資料(資料本身沒改變我們只是在loss function乘上一個每一筆資料對應的weight),然後model( f_2 )的錯誤率會小於0.5,就這樣可以重複的做下去,直到你想訓練的model數量。


    怎麼找u_2呢?
    假設我們某一筆資料model( f_1 )預測錯誤,我們將u_1乘上d_1,如果資料model( f_1 )預測正確,我們將u_1除以d_1,而d_1可以經過推倒求出,詳細推導可以參考李宏毅老師的課程


    我們訓練完成多個模型要預測時,我們要讓訓練完錯誤率較低的模型他佔比較大的weight,所以預測時我們將每個模型的預測結果乘上然後相加,取預測結果最高的類別、或平均。

    Stacking

    stacking概念有點類似transfer(遷移學習),我們手上有訓練了幾個不同的模型,然後我們使用這些模型的輸出作為另一個新模型的輸入進行訓練,新模型從現有模型的基礎上再學習如何運用不同模型的輸出差異來增加準確率。

    參考:
    1234

    相关文章

      网友评论

          本文标题:[監督式]Ensemble learning

          本文链接:https://www.haomeiwen.com/subject/laivaqtx.html