集成學習(ensemble learning)
/ ahn-SAHM-bul LER-ning /
集成學習是機器學習版的「三個臭皮匠,頂個諸葛亮」——把許多不完美的模型合成一個,比其中任何單獨一個都更好。最經典的直覺,是遊園會上那罐糖豆:任何單人對「裡面有多少顆」的一次猜測都錯得離譜,可把所有人的猜測一平均,你就驚人地接近了真相。錯誤指向隨機的方向、相互抵消,而那一點共有的正確判斷則存活下來。集成,正是有意去複刻這同一份魔法。
組合模型主要有三種方式。袋裝(bagging)在資料的不同隨機樣本上訓練同一種模型的許多副本,再把它們的票平均——隨機森林做的就是這個,它主要削減神經質模型的抖動(方差)。提升(boosting)則按順序建模型,每一個都專注於修正前一個的錯誤——梯度提升做的就是這個,它主要削減系統性誤差(偏差)。堆疊(stacking)訓練一個最終的「經理」模型,去學習如何最好地把幾種不同模型的預測調和在一起。每種策略都讓成員們犯各不相同的錯誤,再把存活者匯聚起來。
正因如此,表格資料上和競賽裡最準的方案,幾乎從不是單一模型——它們能穩穩地再榨出一點準頭。但天下沒有免費的午餐。它們訓練和執行的成本更高,會把一個可解釋的模型變成黑箱,而且這把戲只在成員們犯不同錯誤時才奏效;把同一個有缺陷模型的十個副本合在一起,不過是把同一個缺陷重複了十遍。多樣性、而非數量,才是那味起作用的成分。
在一場鄉村集市上,800個人猜一頭牛的體重。個人的猜測從500到2000磅四散亂飛——可它們的平均值落在1197磅,離真實的1198磅只差一磅。沒有任何單個猜測者有這麼準;是這群人,靠抵消錯誤,做到了。這就是一句話的袋裝。
高爾頓1906年那場猜牛重的人群——把彼此獨立的錯誤平均掉,正是集成的種子。
那味秘密成分是多樣性,而非數量:只有當成員們犯不同的錯誤時,集成才勝過它的成員。把同一個有偏模型堆十份,你不過是把同一份偏見重複了十遍。