機器學習複習——各類算法優缺點總結

算法

優點

缺點

決策樹(Decision Trees)

1.   易於理解和解釋;

2.   數據的準備簡單或者是不必要的.其他的技術往往要求先把數據一般化,比如去掉多餘的或者空白的屬性。

3.   能夠同時處理數據型和常規型屬性。其他的技術往往要求數據屬性的單一。

4.   決策樹是一個白盒模型.如果給定一個觀察的模型,那麼根據所產生的決策樹很容易推出相應的邏輯表達式。

5.   易於通過靜態測試來對模型進行評測.表示有可能測量該模型的可信度。

6.   在相對短的時間內能夠對大型數據源做出可行且效果良好的結果。

7.   可以對有許多屬性的數據集構造決策樹。

8.   可很好地擴展到大型數據庫中,同時它的大小獨立於數據庫的大小。

1.  對於各類別樣本數量不一致的數據,在決策樹當中,信息增益的結果偏向於那些具有更多數值的特徵。

2.  決策樹處理缺失數據時的困難。

3.  過度擬合問題的出現。

4.  忽略數據集中屬性之間的相關性。

 

人工神經網絡

1.  分類的準確度高,並行分佈處理能力強,分佈存儲及學習能力強.

2.  對噪聲神經有較強的魯棒性和容錯能力.

3.  能充分逼近複雜的非線性關係.

4.  具備聯想記憶的功能等。

1.  需要大量的參數,如網絡拓撲結構、權值和閾值的初始值;

2.  不能觀察之間的學習過程,輸出結果難以解釋,會影響到結果的可信度和可接受程度;

3.  學習時間過長,甚至可能達不到學習的目的。

遺傳算法

1.   與問題領域無關切快速隨機的搜索能力。

2.   搜索從羣體出發,具有潛在的並行性,可以進行多個個體的同時比較,魯棒性好。

3.   搜索使用評價函數啓發,過程簡單。

4.   使用概率機制進行迭代,具有隨機性。

5.   具有可擴展性,容易與其他算法結合。

 

1.   實現比較複雜,首先需要對問題進行編碼,找到最優解之後還需要對問題進行解碼,

2.   另外三個算子的實現也有許多參數,如交叉率和變異率,並且這些參數的選擇嚴重影響解的品質,而目前這些參數的選擇大部分是依靠經驗.沒有能夠及時利用網絡的反饋信息,故算法的搜索速度比較慢,要得要較精確的解需要較多的訓練時間。

3.   算法對初始種羣的選擇有一定的依賴性,能夠結合一些啓發算法進行改進。

KNN算法(K-Nearest Neighbour)

1.  簡單、有效。

2.  重新訓練的代價較低(類別體系的變化和訓練集的變化,在Web環境和電子商務應用中是很常見的)。

3.  計算時間和空間線性於訓練集的規模(在一些場合不算太大)。

4.  由於KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更爲適合。

5.  該算法比較適用於樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域採用這種算法比較容易產生誤分。

1.   KNN算法是懶散學習方法(lazy learning,基本上不學習),一些積極學習的算法要快很多。

2.   類別評分不是規格化的(不像概率評分)。

3.   輸出的可解釋性不強,例如決策樹的可解釋性較強。

4.   該算法在分類時有個主要的不足是,當樣本不平衡時,有可能導致當輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本佔多數。該算法只計算“最近的”鄰居樣本,某一類的樣本數量很大,那麼或者這類樣本並不接近目標樣本,或者這類樣本很靠近目標樣本。無論怎樣,數量並不能影響運行結果。可以採用權值的方法(和該樣本距離小的鄰居權值大)來改進。

5.   計算量較大。目前常用的解決方法是事先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。

支持向量機(SVM)

1.  可以解決小樣本情況下的機器學習問題。

2.  可以提高泛化性能。

3.  可以解決高維問題。

4.  可以解決非線性問題。

5.  可以避免神經網絡結構選擇和局部極小點問題。

1.  對缺失數據敏感。

2.  對非線性問題沒有通用解決方案,必須謹慎選擇Kernelfunction來處理。

樸素貝葉斯

1.  樸素貝葉斯模型發源於古典數學理論,有着堅實的數學基礎,以及穩定的分類效率。

2.  NBC模型所需估計的參數很少,對缺失數據不太敏感,算法也比較簡單。

 

1.  理論上,NBC模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因爲NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的(可以考慮用聚類算法先將相關性較大的屬性聚類),這給NBC模型的正確分類帶來了一定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最爲良好。

2.  需要知道先驗概率。

3.  分類決策存在錯誤率

Adaboosting

1.  adaboost是一種有很高精度的分類器。

2.  可以使用各種方法構建子分類器,Adaboost算法提供的是框架。

3.  、當使用簡單分類器時,計算出的結果是可以理解的。而且弱分類器構造極其簡單。

4.  簡單,不用做特徵篩選。

5.  不用擔心overfitting。

 

Rocchio

1.  容易實現,計算(訓練和分類)特別簡單;

2.  它通常用來實現衡量分類系統性能的基準系統,而實用的分類系統很少採用這種算法解決具體的分類問題。

 


總結

Calibrated boosted trees的性能最好,隨機森林第二,uncalibrated bagged trees第三,calibratedSVMs第四, uncalibrated neural nets第五。

性能較差的是樸素貝葉斯,決策樹。

有些算法在特定的數據集下表現較好。


參考:http://bbs.pinggu.org/thread-2604496-1-1.html


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