Python機器學習:7.1 集成學習
集成學習背後的思想是將不同的分類器進行組合得到一個元分類器,這個元分類器相對於單個分類器擁有更好的泛化性能。比如,假設我們從10位專家那裏分別得到了對於某個事件的預測結果,集成學習能夠對這10個預測結果進行組合,得到一個更準確的預測結果。
後面我們會學到,有不同的方法來創建集成模型,這一節我們先解決一個基本的問題:為什麽要用集成學習?她為什麽就比單個模型效果要好呢?
本書是為初學者打造的,所以集成學習這裏我們也只關註最基本的集成方法:投票法(majority voting)。投票法意味著我們在得到最後的預測類別時,看看哪個類別是大多數單分類器都預測的,這裏的大多數一般是大於50%。更嚴格來說,投票法只適用於二分類,當然他很容易就擴展到多分類情況: 多數表決(plurality voting).
下圖展示了一個投票法的例子,一共10個基本分類器:
我們先用訓練集訓練m個不同的分類器, 這裏的分類器可以是決策樹、SVM或者LR等。我們當然也可以用同一種分類器,只不過在訓練每一個模型時用不同的參數或者不同的訓練集(比如自主采樣法)。隨機森林就是一個采用這種策略的例子,它由不同的決策樹模型構成。這圖展示了用投票策略的集成方法步驟:
投票策略非常簡單,我們收集每個單分類器的預測類別,將票數最多的作為預測結果:
以二分類為例,類別class1=-1, class2=+1, 投票預測的過程如下, 把每個單分類器的預測結果相加,如果值大於0,預測結果為正類,否則為負類:
讀到這裏,我想大家都有一個疑問:憑啥集成學習就比單分類器效果好?道理很簡單(一點點組合數學知識),假設對於一個二分類問題,有n個單分類器,每個單分類器有相等的錯誤率
如果n=11,錯誤率為0.25,要想集成結果預測錯誤,至少要有6個單分類器預測結果不正確,錯誤概率是:
集成結果錯誤率才0.034哦,比0.25小太多。繼承結果比單分類器好,也是有前提的,就是你這個單分類器的能力不能太差,至少要比隨機猜測的結果好一點,至少。
從下圖可以看出,只要單分類器的表現不太差,集成學習的結果總是要好於單分類器的。
Python機器學習中文版目錄(http://www.aibbt.com/a/20787.html)
轉載請註明出處,Python機器學習(http://www.aibbt.com/a/pythonmachinelearning/)
Python機器學習:7.1 集成學習