如何選擇機器學習分類器?
你 知道如何為你的分類問題選擇合適的機器學習算法嗎?當然,如果你真正關心準確率,那么最佳方法是測試各種不同的算法(同時還要確保對每個算法測試不同參 數),然后通過交叉驗證選擇最好的一個。但是,如果你只是為你的問題尋找一個“足夠好”的算法,或者一個起點,這里有一些我這些年發現的還不錯的一般準 則。
你的訓練集有多大?
如果訓練集很小,那么高偏差/低方差分類器(如樸素貝葉斯分類器)要優于低偏差/高方差分類器(如k近鄰分類器),因為后者容易過擬合。然而,隨著訓練集的增大,低偏差/高方差分類器將開始勝出(它們具有較低的漸近誤差),因為高偏差分類器不足以提供準確的模型。
你也可以認為這是生成模型與判別模型的區別。
一些特定算法的優點
樸素貝葉斯的優點:超級簡單,你只是在做一串計算。如果樸素貝葉斯(NB)條件獨立性假設成立,相比于邏輯回歸這類的判別模型,樸素貝葉斯分類器將收斂得更快,所以你只需要較小的訓練集。而且,即使NB假設不成立,樸素貝葉斯分類器在實踐方面仍然表現很好。如果想得到簡單快捷的執行效果,這將是個好的選擇。它的主要缺點是,不能學習特征之間的相互作用(比如,它不能學習出:雖然你喜歡布拉德·皮特和湯姆·克魯斯的電影,但卻不喜歡他們一起合作的電影)。
邏輯回歸的優點: 有許多正則化模型的方法,你不需要像在樸素貝葉斯分類器中那樣擔心特征間的相互關聯性。與決策樹和支撐向量機不同,你還可以有一個很好的概率解釋,并能容 易地更新模型來吸收新數據(使用一個在線梯度下降方法)。如果你想要一個概率框架(比如,簡單地調整分類閾值,說出什么時候是不太確定的,或者獲得置信區 間),或你期望未來接收更多想要快速并入模型中的訓練數據,就選擇邏輯回歸。
決策樹的優點: 易于說明和解釋(對某些人來說—我不確定自己是否屬于這個陣營)。它們可以很容易地處理特征間的相互作用,并且是非參數化的,所以你不用擔心異常值或者數 據是否線性可分(比如,決策樹可以很容易地某特征x的低端是類A,中間是類B,然后高端又是類A的情況)。一個缺點是,不支持在線學習,所以當有新樣本 時,你將不得不重建決策樹。另一個缺點是,容易過擬合,但這也正是諸如隨機森林(或提高樹)之類的集成方法的切入點。另外,隨機森林往往是很多分類問題的 贏家(我相信通常略優于支持向量機),它們快速并且可擴展,同時你不須擔心要像支持向量機那樣調一堆參數,所以它們最近似乎相當受歡迎。
SVMs的優點: 高準確率,為過擬合提供了好的理論保證,并且即使你的數據在基礎特征空間線性不可分,只要選定一個恰當的核函數,它們仍然能夠取得很好的分類效果。它們在 超高維空間是常態的文本分類問題中尤其受歡迎。然而,它們內存消耗大,難于解釋,運行和調參也有些煩人,因此,我認為隨機森林正漸漸開始偷走它的“王 冠”。
然而…
盡管如此,回憶一下,更好的數據往往打敗更好的算法,設計好的特征大有裨益。并且,如果你有一個龐大數據集,這時你使用哪種分類算法在分類性能方面可能并不要緊(所以,要基于速度和易用性選擇算法)。
重申我上面說的,如果你真的關心準確率,一定要嘗試各種各樣的分類器,并通過交叉驗證選擇最好的一個。或者,從Netflix Prize(和Middle Earth)中吸取教訓,只使用了一個集成方法進行選擇。