小編給大家分享一下DM集成學習的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在解決分類問題時,假如分類模型不夠強大,對樣本的分類結果就不會很理想。這時如果我們多找一些分類模型,讓它們一起做決策,模型強度會不會高一點呢?
集成學習就是把多種分類器按策略組合起來,并根據所有分類器的分類結果做出最后的判斷。
如下圖,三種分類器的分類結果都有一點點錯誤,如果把三類組合在一起就可以完美地把所有形狀都區分開,而且分割曲線也較為平滑。
集成學習屬于監督學習中的分類問題,分為boosting和bagging兩大類。
一、Bagging
如何得到不同的分類器呢?我們可以調整同一訓練模型的不同參數,或者使用不同的訓練樣本訓練不同的模型。
有放回的采樣(Bootstrap Samples):
每次拿出一個小球,記錄之后放回。這樣既保留了數據規律,又得到了不同的訓練樣本。
Bagging算法框架如下圖:
根據有放回采樣(選出F%的樣本)訓練出T個分類器,分別對測試樣本進行分類,然后投票決定測試樣本到底屬于哪類。
少數服從多數,所有分類器的地位完全等同。
二、基于決策樹的Bagging:RandomForests,RF
n個樣本,有放回的取出n個樣本,取n次。當n趨近于無窮的時候,大概有2/3的樣本被選過。
剩下的1/3(out of bag,OOB)正好可以去做測試。
隨機森林:
樹的數量為500較為合適(滿足要求即可)。為了生成不同的樹,首先對樣本用有放回的采樣隨機選取出樣本,使用不同的屬性對樹進行分層。
樣本屬性數量,我們隨機選取個屬性對樹進行劃分。這樣可以有效加快樹的建立過程。
三、Boosting
Boosting中分類器的生成過程并不是平行的,下一個分類器的生成是根據上一個分類器中分類對錯情況來決定的。
而且在boosting中又增加了一個分類器,把所有子分類器的輸出當作該判別器的輸入,而且對每條輸入都設置了權重。分類器對權重進行訓練、學習后得到分類結果。
Boosting框架如下圖所示:
Boosting偽代碼:
四、Adaboost
Adaboost算法是boosting中的一個門類,算法思想與boosting一致??梢宰C明,adaboost的誤差上界會隨著訓練的進行而越來越小。
Adaboost算法框架如下:
D1(i)表示每個樣本的權重,如果某些樣本之前被分錯了,它們的Dt+1(i)就會增大,之后分類器對這些樣本劃分時就會越關注。
表示樣本訓練誤差。
由
生成,同時也表示每個分類器的權重。
Adaboost算法中的參數設置很少,訓練過程幾乎全靠數據驅動。而且隨著迭代代數的增加,訓練并不會出現過擬合的情況。
但因為最終的分類結果由50(或更多)個分類模型組合得到,所以分類依據的可解釋性并不好。
如下圖為adaboost算法在matlab中的實現。將50個簡單的線性分類器組合起來,就能形成一條相對復雜的分割界面。
以上是“DM集成學習的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。