博客地址:https://blog.csdn.net/CoderPai/article/details/97147488點擊閱讀原文,更好的閱讀體驗
CoderPai 是一個專注於人工智慧在量化交易應用的算法實戰平臺,主要關注人工智慧在量化交易上面的應用。如果你對人工智慧感興趣,請快快關注 「CoderPai」 微信號(coderpai)吧。
(一)機器學習中的集成學習入門
(二)bagging 方法
(三)使用Python進行交易的隨機森林算法
(四)Python中隨機森林的實現與解釋
(五)如何用 Python 從頭開始實現 Bagging 算法
(六)如何利用Python從頭開始實現隨機森林算法
(七)AdaBoost 簡介(當前文章)
Boosting 是一種集成技術,試圖從許多弱分類器中創建一個強分類器。這篇文章中,我們將介紹 AdaBoost 方法。讀完這篇文章後,你會知道:
這篇文章是為開發人員編寫的,沒有統計學或者數學背景。該文章重點介紹了算法的工作原理以及如何將其用於預測建模問題。如果你有任何疑問,可以在後臺留言。那麼,我們開始吧。
Boosting 集成方法Boosting 是一種通用的集成方法,可以從許多弱分類器中創建強分類器。這是通過從訓練數據構建模型,然後通過構建第二個模型來糾正第一個模型所犯的錯誤。直到添加的模型達到最大數量或者達到完美預測。AdaBoost 是第一個成功開發的 Boosting 算法,如果學習這個算法能更好的幫助我們學習。現代很多的 boosting 算法都是建立在 AdaBoost 算法之上的,最著名的就是隨機梯度提升。
從數據中學習 AdaBoost 模型AdaBoost 最適合用於提高決策樹在二元分類問題上的性能。
AdaBoost 最初被作者 Freund 和 Schapire 稱為 AdaBoost M1。最近,它又被稱為離散AdaBoost,因為它用於分類而不是回歸。
AdaBoost 可用於提高任何機器學習算法的性能。它最適合弱學習器使用,這些模型在分類問題上實現了高於隨機模型的準確性。
與 AdaBoost 一起使用的最適合的是具有一層結構的決策樹。因為這些樹很短,只包含一個分類決策,所以它們通常被稱為決策樹樁。
訓練數據集中的每個實例都是需要加權的,初始權重設置為:
$weight(xi) = 1/n$
其中,$x_i$ 是第 i 個訓練實例,n 是訓練實例的數量。
如何訓練一個模型使用加權樣本在訓練數據上準備弱分類器(決策樹樁)。這個模型只支持二分類問題,因此每個決策樹樁對一個輸入變量做出一個決策,並為第一類或者第二類值輸出 1.0 或者 -1.0 。
針對訓練的模型計算錯誤分類率。傳統上,計算如下:
$error = (correct – N) / N$
其中 error 是錯誤分類率,correct 是被模型正確分類的數量,N 是訓練實例的總數。例如,如果模型正確預測了 100 個訓練實例中的 78 個,則錯誤或者錯誤分類率將為 (100-78)/ 100 或者 0.22 。
但是我們需要修改訓練實例的錯誤:
$error = sum(w(i) * terror(i)) / sum(w)$
這是錯誤分類率的加權和,其中 wi 是訓練實例 i 的權重,terror 是訓練實例 i 的預測誤差,如果錯誤分類則為 1,如果正確分類則為 0 。
例如,如果我們有 3 個訓練實例,其權重為 0.01,0.5和0.2。預測值為 -1,-1和-1,實例中的真確輸出變量為 -1,1和-1。那麼 terror 為 0,1和0。誤分類率計算如下:
error = (0.010 + 0.51 + 0.2*0) / (0.01 + 0.5 + 0.2) = 0.704
為訓練模型計算階段值,該階段值為模型所做的任何預測提供加權。訓練模型的階段值計算如下:
stage = ln((1-error) / error)
其中,stage 是用於對模型進行加權預測的階段值,ln() 是自然對數,而 error 是模型的錯誤分類。階段權重的影響是更準確的模型對最終預測具有個更大的權重或者貢獻。
更新訓練權重,為錯誤預測的實例提供更多權重,對正確預測的實例權重更小。
例如,使用以下內容更新一個訓練實例(w)的權重:
w = w * exp(stage * terror)
其中,w 是特定訓練實例的權重,exp() 是數字常數 e ,stage 是弱分類器的誤分類率,terror 是弱分類器預測輸出變量的誤差,具體計算為:
terror = 0 if(y == p), otherwise 1
其中 y 是訓練實例的輸出變量,p 是來自弱分類器的預測。
如果訓練實例被正確分類了,那麼權重不會發生變化,如果訓練實例沒有被正確分類,那麼權重就會相應的增大。
使用 AdaBoost 進行預測通過計算弱分類器的加權平均值來進行預測。
對於新的輸入實例,每個弱分析器計算預測值為 +1 或者 -1。預測值由每個弱學習器的階段值進行加權。集成模型的預測被視為加權預測的總和。如果總和為正,則預測第一類,如果為負,則預測第二類。
例如, 5 個弱分類器的預測值為 1,1,-1,1和-1。從大多數投票看,模型看起來預測值為 1 或者第一類。但是我們還要計算權重,假設權重值為 0.2,0.5,0.8,0.2和0.9。計算這些預測的加權和,最終輸出為 -0.8 ,這將是 -1 或者第二類的預測。
總結在這篇文章中,你發現了用於機器學習的 boosting 方法,你可以了解到:
提升算法將弱分類器變成強分類器;
AdaBoost 是第一個成功運用的boosting算法;
通過加權訓練實例和弱分類器來學習 AdaBoost 模型;
通過加權來自弱分類器的預測來學習 AdaBoost 模型;
作者:chen_h
微信號&QQ:862251340