天天看點

【機器學習算法-python實作】Adaboost的實作(1)-單層決策樹(decision stump)1.背景2.建構決策樹3.結果4.代碼下載下傳

     上一節學習支援向量機,感覺公式都太難了解了,弄得我有點頭大。不過這一章的Adaboost線比較起來就容易得多。Adaboost是用元算法的思想進行分類的。什麼事元算法的思想呢?就是根據資料集的不同的特征在決定結果時所占的比重來劃分資料集。就是要對每個特征值都建構決策樹,并且賦予他們不同的權值,最後集合起來比較。

      比如說我們可以通過是否有胡子和身高的高度這兩個特征來來決定一個人的性别,很明顯是否有胡子可能在判定性别方面比身高更準确,是以在判定的時候我們就賦予這個特征更大的權重,比如說我們把權重設成0.8:0.2。這樣就比0.5:0.5的權重來的更準确些。

    接着我們來建構決策樹。我們的決策樹要實作主要兩個功能,一個是找出對結果影響最大的特征值。另外一個功能是找到這個特征值得門檻值。門檻值就是,比方說門檻值是d,當特征值大于d結果為1,當特征值小于d結果為0。

首先看下資料集,是一個兩個特征值的矩陣。

接着是樹的分類函數。這個函數在下面的循環裡要用到,作用很簡單,就是比對每一列的特征值和目标函數,傳回比對的結果。四個參數分别是(輸入矩陣,第幾列,門檻值,lt或gt)

最後是建構二叉樹函數,通過循環比較得到最佳特征值和它的門檻值。D是初始矩陣的權重。

                當我們假設初始權重相同(5行資料也就是都是0.2),得到結果

{'dim': 0, 'ineq': 'lt', 'thresh': 1.3}——第一個特征值權重最大,門檻值是1.3

 [[ 0.2]]——錯誤率0.2,也就是五個錯一個

[[-1.]————判斷結果,第一個資料錯誤

 [ 1.]

 [-1.]

 [ 1.]]

<a target="_blank" href="https://github.com/X-Brain/MachineLearning"></a>

<a target="_blank" href="https://github.com/X-Brain/MachineLearning">下載下傳位址(Decision Stump)</a>

參考文獻:

    [1] machine learning in action,Peter Harrington