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

yixingqingkong發表於2014-05-20

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

你的訓練集有多大?

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

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

一些特定演算法的優點

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

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

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

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

然而…

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

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

相關文章