面試過程中經常被問到各種算法的優(yōu)缺點,特此整理,持續(xù)更新中。
1、決策樹
優(yōu)點
一、 決策樹易于理解和解釋.人們在通過解釋后都有能力去理解決策樹所表達的意義。
二、 對于決策樹,數據的準備往往是簡單或者是不必要的.其他的技術往往要求先把數據一般化,比如去掉多余的或者空白的屬性。
三、 能夠同時處理數據型和常規(guī)型屬性。其他的技術往往要求數據屬性的單一。
四、 決策樹是一個白盒模型。如果給定一個觀察的模型,那么根據所產生的決策樹很容易推出相應的邏輯表達式。
五、 易于通過靜態(tài)測試來對模型進行評測。表示有可能測量該模型的可信度。
六、 在相對短的時間內能夠對大型數據源做出可行且效果良好的結果。
七、 可以對有許多屬性的數據集構造決策樹。
八、 決策樹可很好地擴展到大型數據庫中,同時它的大小獨立于數據庫的大小。
缺點
一、 對于那些各類別樣本數量不一致的數據,在決策樹當中,信息增益的結果偏向于那些具有更多數值的特征。
二、 決策樹處理缺失數據時的困難。
三、 過度擬合問題的出現。
四、 忽略數據集中屬性之間的相關性。
2、人工神經網絡
優(yōu)點
分類的準確度高,并行分布處理能力強,分布存儲及學習能力強,對噪聲神經有較強的魯棒性和容錯能力,能充分逼近復雜的非線性關系,具備聯想記憶的功能等。
缺點
神經網絡需要大量的參數,如網絡拓撲結構、權值和閾值的初始值;不能觀察之間的學習過程,輸出結果難以解釋,會影響到結果的可信度和可接受程度;學習時間過長,甚至可能達不到學習的目的。
3、KNN算法
優(yōu)點
一、 簡單、有效。
二、 重新訓練的代價較低(類別體系的變化和訓練集的變化,在Web環(huán)境和電子商務應用中是很常見的)。
三、 計算時間和空間線性于訓練集的規(guī)模(在一些場合不算太大)。
四、 由于KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。
五、 該算法比較適用于樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域采用這種算法比較容易產生誤分。
缺點
一、 KNN算法是懶散學習方法(lazy learning,基本上不學習),一些積極學習的算法要快很多。
二、 類別評分不是規(guī)格化的(不像概率評分)。
三、 輸出的可解釋性不強,例如決策樹的可解釋性較強。
四、 該算法在分類時有個主要的不足是,當樣本不平衡時,如一個類的樣本容量很大,而其他類樣本容量很小時,有可能導致當輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本占多數。該算法只計算“最近的”鄰居樣本,某一類的樣本數量很大,那么或者這類樣本并不接近目標樣本,或者這類樣本很靠近目標樣本。無論怎樣,數量并不能影響運行結果。可以采用權值的方法(和該樣本距離小的鄰居權值大)來改進。
五、 計算量較大。目前常用的解決方法是事先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。
4、支持向量機(SVM)
優(yōu)點
一、 可以解決小樣本情況下的機器學習問題。
二、 可以提高泛化性能。
三、 可以解決高維問題。
四、 可以解決非線性問題。
五、 可以避免神經網絡結構選擇和局部極小點問題。
缺點
一、 對缺失數據敏感。
二、 對非線性問題沒有通用解決方案,必須謹慎選擇Kernelfunction來處理。
5、樸素貝葉斯
優(yōu)點
一、 樸素貝葉斯模型發(fā)源于古典數學理論,有著堅實的數學基礎,以及穩(wěn)定的分類效率。
二、 NBC模型所需估計的參數很少,對缺失數據不太敏感,算法也比較簡單。
缺點
一、 理論上,NBC模型與其他分類方法相比具有最小的誤差率。但是實際上并非總是如此,這是因為NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的(可以考慮用聚類算法先將相關性較大的屬性聚類),這給NBC模型的正確分類帶來了一定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最為良好。
二、 需要知道先驗概率。
三、 分類決策存在錯誤率
6、Adaboost算法
優(yōu)點
一、 adaboost是一種有很高精度的分類器。
二、 可以使用各種方法構建子分類器,Adaboost算法提供的是框架。
三、 當使用簡單分類器時,計算出的結果是可以理解的。而且弱分類器構造極其簡單。
四、 簡單,不用做特征篩選。
五、 不用擔心overfitting。
缺點
一、AdaBoost迭代次數也就是弱分類器數目不太好設定,可以使用交叉驗證來進行確定。
二、數據不平衡導致分類精度下降。
三、訓練比較耗時,每次重新選擇當前分類器最好切分點。
7、邏輯回歸
優(yōu)點
一、預測結果是界于0和1之間的概率;
二、可以適用于連續(xù)性和類別性自變量;
三、容易使用和解釋;
缺點
一、對模型中自變量多重共線性較為敏感,例如兩個高度相關自變量同時放入模型,可能導致較弱的一個自變量回歸符號不符合預期,符號被扭轉。?需要利用因子分析或者變量聚類分析等手段來選擇代表性的自變量,以減少候選變量之間的相關性;
二、預測結果呈“S”型,因此從log(odds)向概率轉化的過程是非線性的,在兩端隨著?log(odds)值的變化,概率變化很小,邊際值太小,slope太小,而中間概率的變化很大,很敏感。 導致很多區(qū)間的變量變化對目標概率的影響沒有區(qū)分度,無法確定閥值。
8、隨機森林
優(yōu)點
一、 在當前的很多數據集上,相對其他算法有著很大的優(yōu)勢,表現良好
二、它能夠處理很高維度(feature很多)的數據,并且不用做特征選擇
三、在訓練完后,它能夠給出哪些feature比較重要
四、在創(chuàng)建隨機森林的時候,對generlization error使用的是無偏估計,模型泛化能力強
五、訓練速度快,容易做成并行化方法
六、在訓練過程中,能夠檢測到feature間的互相影響
七、 實現比較簡單
八、對于不平衡的數據集來說,它可以平衡誤差。
九、如果有很大一部分的特征遺失,仍可以維持準確度。
缺點
一、隨機森林已經被證明在某些噪音較大的分類或回歸問題上會過擬
二、對于有不同取值的屬性的數據,取值劃分較多的屬性會對隨機森林產生更大的影響,所以隨機森林在這種數據上產出的屬性權值是不可信的。
9、GBDT
優(yōu)點
一、可以靈活處理各種類型的數據,包括連續(xù)值和離散值。
二、在相對少的調參時間情況下,預測的準備率也可以比較高。這個是相對SVM來說的。
三、使用一些健壯的損失函數,對異常值的魯棒性非常強。比如 Huber損失函數和Quantile損失函數。
缺點
一、由于弱學習器之間存在依賴關系,難以并行訓練數據。不過可以通過自采樣的SGBT來達到部分并行。
參考原文
1、http://bbs.pinggu.org/thread-2604496-1-1.html
2、http://www.cnblogs.com/milkcoffeesugar/p/5769977.html
3、http://blog.csdn.net/u012422446/article/details/53034260
4、http://blog.sina.com.cn/s/blog_5dd0aaa50102vjq3.html
5、http://blog.csdn.net/keepreder/article/details/47273297
6、http://www.cnblogs.com/pinard/p/6140514.html