如何選擇機器學習分類器?

你知道如何爲你的分類問題選擇合適的機器學習算法嗎?當然,如果你真正關心準確率,那麼最佳方法是測試各種不同的算法(同時還要確保對每個算法測試不同參數),然後通過交叉驗證選擇最好的一個。但是,如果你只是爲你的問題尋找一個“足夠好”的算法,或者一個起點,這裏有一些我這些年發現的還不錯的一般準則。

你的訓練集有多大?

如果訓練集很小,那麼高偏差/低方差分類器(如樸素貝葉斯分類器)要優於低偏差/高方差分類器(如k近鄰分類器),因爲後者容易過擬合。然而,隨着訓練集的增大,低偏差/高方差分類器將開始勝出(它們具有較低的漸近誤差),因爲高偏差分類器不足以提供準確的模型。

你也可以認爲這是生成模型與判別模型的區別。

一些特定算法的優點

樸素貝葉斯的優點:超級簡單,你只是在做一串計算。如果樸素貝葉斯(NB)條件獨立性假設成立,相比於邏輯迴歸這類的判別模型,樸素貝葉斯分類器將收斂得更快,所以你只需要較小的訓練集。而且,即使NB假設不成立,樸素貝葉斯分類器在實踐方面仍然表現很好。如果想得到簡單快捷的執行效果,這將是個好的選擇。它的主要缺點是,不能學習特徵之間的相互作用(比如,它不能學習出:雖然你喜歡布拉德·皮特和湯姆·克魯斯的電影,但卻不喜歡他們一起合作的電影)。

邏輯迴歸的優點:有許多正則化模型的方法,你不需要像在樸素貝葉斯分類器中那樣擔心特徵間的相互關聯性。與決策樹和支撐向量機不同,你還可以有一個很好的概率解釋,並能容易地更新模型來吸收新數據(使用一個在線梯度下降方法)。如果你想要一個概率框架(比如,簡單地調整分類閾值,說出什麼時候是不太確定的,或者獲得置信區間),或你期望未來接收更多想要快速併入模型中的訓練數據,就選擇邏輯迴歸。

決策樹的優點:易於說明和解釋(對某些人來說—我不確定自己是否屬於這個陣營)。它們可以很容易地處理特徵間的相互作用,並且是非參數化的,所以你不用擔心異常值或者數據是否線性可分(比如,決策樹可以很容易地某特徵x的低端是類A,中間是類B,然後高端又是類A的情況)。一個缺點是,不支持在線學習,所以當有新樣本時,你將不得不重建決策樹。另一個缺點是,容易過擬合,但這也正是諸如隨機森林(或提高樹)之類的集成方法的切入點。另外,隨機森林往往是很多分類問題的贏家(我相信通常略優於支持向量機),它們快速並且可擴展,同時你不須擔心要像支持向量機那樣調一堆參數,所以它們最近似乎相當受歡迎。

SVMs的優點:高準確率,爲過擬合提供了好的理論保證,並且即使你的數據在基礎特徵空間線性不可分,只要選定一個恰當的核函數,它們仍然能夠取得很好的分類效果。它們在超高維空間是常態的文本分類問題中尤其受歡迎。然而,它們內存消耗大,難於解釋,運行和調參也有些煩人,因此,我認爲隨機森林正漸漸開始偷走它的“王冠”。

然而…

儘管如此,回憶一下,更好的數據往往打敗更好的算法,設計好的特徵大有裨益。並且,如果你有一個龐大數據集,這時你使用哪種分類算法在分類性能方面可能並不要緊(所以,要基於速度和易用性選擇算法)。

重申我上面說的,如果你真的關心準確率,一定要嘗試各種各樣的分類器,並通過交叉驗證選擇最好的一個。或者,從Netflix Prize(和Middle Earth)中吸取教訓,只使用了一個集成方法進行選擇。


原文鏈接: Edwin Chen   翻譯: 伯樂在線 yixingqingkong
譯文鏈接: http://blog.jobbole.com/67671/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章