1. 程式人生 > >機器學習中的分類演算法之效能優劣

機器學習中的分類演算法之效能優劣


訓練集有多大?

如果你的訓練集很小,高偏差/低方差的分類器(如樸素貝葉斯)比低偏差/高方差的分類器(如K近鄰或Logistic迴歸)更有優勢,因為後者容易過擬合。但是隨著訓練集的增大,高偏差的分類器並不能訓練出非常準確的模型,所以低偏差/高方差的分類器會勝出(它們有更小的漸近誤差)。

你也可以從生成模型與鑑別模型的區別來考慮它們。

某些分類器的優勢

樸素貝葉斯(Naive Bayes, NB)

超級簡單,就像做一些數數的工作。如果條件獨立假設成立的話,NB將比鑑別模型(如Logistic迴歸)收斂的更快,所以你只需要少量的訓練資料。即使條件獨立假設不成立,NB在實際中仍然表現出驚人的好。如果你想做類似半監督學習,或者是既要模型簡單又要效能好,NB值得嘗試。

Logistic迴歸(Logistic Regression, LR)

LR有很多方法來對模型正則化。比起NB的條件獨立性假設,LR不需要考慮樣本是否是相關的。與決策樹與支援向量機(SVM)不同,NB有很好的概率解釋,且很容易利用新的訓練資料來更新模型(使用線上梯度下降法)。如果你想要一些概率資訊(如,為了更容易的調整分類閾值,得到分類的不確定性,得到置信區間),或者希望將來有更多資料時能方便的更新改進模型,LR是值得使用的。

決策樹(Decision Tree, DT)
DT容易理解與解釋(對某些人而言——不確定我是否也在他們其中)。DT是非引數的,所以你不需要擔心野點(或離群點)和資料是否線性可分的問題(例如,DT可以輕鬆的處理這種情況:屬於A類的樣本的特徵x取值往往非常小或者非常大,而屬於B類的樣本的特徵x取值在中間範圍)。DT的主要缺點是容易過擬合,這也正是隨機森林(Random Forest, RF)(或者Boosted樹)等整合學習演算法被提出來的原因。此外,RF在很多分類問題中經常表現得最好(我個人相信一般比SVM稍好),且速度快可擴充套件,也不像SVM那樣需要調整大量的引數,所以最近RF是一個非常流行的演算法。

支援向量機(Support Vector Machine, SVM)

很高的分類正確率,對過擬合有很好的理論保證,選取合適的核函式,面對特徵線性不可分的問題也可以表現得很好。SVM在維數通常很高的文字分類中非常的流行。由於較大的記憶體需求和繁瑣的調參,我認為RF已經開始威脅其地位了。

回到LR與DT的問題(我更傾向是LR與RF的問題),做個簡單的總結:兩種方法都很快且可擴充套件。在正確率方面,RF比LR更優。但是LR可以線上更新且提供有用的概率資訊。鑑於你在Square(不確定推斷科學家是什麼,應該不是有趣的化身),可能從事欺詐檢測:如果你想快速的調整閾值來改變假陽性率與假陰性率,分類結果中包含概率資訊將很有幫助。無論你選擇什麼演算法,如果你的各類樣本數量是不均衡的(在欺詐檢測中經常發生),你需要重新取樣各類資料或者調整你的誤差度量方法來使各類更均衡。

但是。。。


更好的資料往往比更好的演算法更重要,提取好的特徵也需要很大的功夫。如果你的資料集非常大,那麼分類演算法的選擇可能對最後的分類效能影響並不大(所以可以根據執行速度或者易用性來選擇)。

如果你很在意分類的正確率,那麼你得嘗試多種分類器,根據交叉驗證的結果來挑選效能最好的。或者,學習下Netflix Prize和Middle Earth, 使用某種整合的方法來組合多個分類器。