原文:
各種分類演算法比較
最近在學習分類演算法,順便整理了各種分類演算法的優缺點。
1決策樹(decision trees)的優缺點
決策樹的優點:
一、 決策樹易於理解和解釋.人們在通過解釋後都有能力去理解決策樹所表達的意義。
二、 對於決策樹,資料的準備往往是簡單或者是不必要的.其他的技術往往要求先把資料一般化,比如去掉多餘的或者空白的屬性。
三、 能夠同時處理資料型和常規型屬性。其他的技術往往要求資料屬性的單一。
四、 決策樹是乙個白盒模型。如果給定乙個觀察的模型,那麼根據所產生的決策樹很容易推出相應的邏輯表示式。
五、 易於通過靜態測試來對模型進行評測。表示有可能測量該模型的可信度。
六、在相對短的時間內能夠對大型資料來源做出可行且效果良好的結果。
七、 可以對有許多屬性的資料集構造決策樹。
八、 決策樹可很好地擴充套件到大型資料庫中,同時它的大小獨立於資料庫的大小。
決策樹的缺點:
一、 對於那些各類別樣本數量不一致的資料,在決策樹當中,資訊增益的結果偏向於那些具有更多數值的特徵。
二、 決策樹處理缺失資料時的困難。
三、 過度擬合問題的出現。
四、 忽略資料集中屬性之間的相關性。
2 人工神經網路的優缺點
人工神經網路的優點:分類的準確度高,並行分布處理能力強,分布儲存及學習能力強,對雜訊神經有較強的魯棒性和容錯能力,能充分逼近複雜的非線性關係,具備聯想記憶的功能等。
人工神經網路的缺點:神經網路需要大量的引數,如網路拓撲結構、權值和閾值的初始值;不能觀察之間的學習過程,輸出結果難以解釋,會影響到結果的可信度和可接受程度;學習時間過長,甚至可能達不到學習的目的。
3 遺傳演算法的優缺點
遺傳演算法的優點:
一、 與問題領域無關切快速隨機的搜尋能力。
二、 搜尋從群體出發,具有潛在的並行性,可以進行多個個體的同時比較,魯棒性好。
三、 搜尋使用評價函式啟發,過程簡單。
四、 使用概率機制進行迭代,具有隨機性。
五、 具有可擴充套件性,容易與其他演算法結合。
遺傳演算法的缺點:
一、 遺傳演算法的程式設計實現比較複雜,首先需要對問題進行編碼,找到最優解之後還需要對問題進行解碼,
二、 另外三個運算元的實現也有許多引數,如交叉率和變異率,並且這些引數的選擇嚴重影響解的品質,而目前這些引數的選擇大部分是依靠經驗.沒有能夠及時利用網路的反饋資訊,故演算法的搜尋速度比較慢,要得要較精確的解需要較多的訓練時間。
三、 演算法對初始種群的選擇有一定的依賴性,能夠結合一些啟發演算法進行改進。
4 knn演算法(k-nearest neighbour) 的優缺點
knn演算法的優點:
一、簡單、有效。
二、重新訓練的代價較低(類別體系的變化和訓練集的變化,在web環境和電子商務應用中是很常見的)。
三、計算時間和空間線性於訓練集的規模(在一些場合不算太大)。
四、 由於knn方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,knn方法較其他方法更為適合。
五、 該演算法比較適用於樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域採用這種演算法比較容易產生誤分。
knn演算法缺點:
一、 knn演算法是懶散學習方法(lazy learning,基本上不學習),一些積極學習的演算法要快很多。
二、 類別評分不是規格化的(不像概率評分)。
三、 輸出的可解釋性不強,例如決策樹的可解釋性較強。
四、 該演算法在分類時有個主要的不足是,當樣本不平衡時,如乙個類的樣本容量很大,而其他類樣本容量很小時,有可能導致當輸入乙個新樣本時,該樣本的k個鄰居中大容量類的樣本占多數。該演算法只計算「最近的」鄰居樣本,某一類的樣本數量很大,那麼或者這類樣本並不接近目標樣本,或者這類樣本很靠近目標樣本。無論怎樣,數量並不能影響執行結果。可以採用權值的方法(和該樣本距離小的鄰居權值大)來改進。
五、 計算量較大。目前常用的解決方法是事先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。
5 支援向量機(svm)的優缺點
svm的優點:
一、 可以解決小樣本情況下的機器學習問題。
二、 可以提高泛化效能。
三、 可以解決高維問題。
四、 可以解決非線性問題。
五、 可以避免神經網路結構選擇和區域性極小點問題。
svm的缺點:
一、 對缺失資料敏感。
二、 對非線性問題沒有通用解決方案,必須謹慎選擇kernelfunction來處理。
6 樸素貝葉斯的優缺點
優點:
一、 樸素貝葉斯模型發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。
二、 nbc模型所需估計的引數很少,對缺失資料不太敏感,演算法也比較簡單。
缺點:
一、 理論上,nbc模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為nbc模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的(可以考慮用聚類演算法先將相關性較大的屬性聚類),這給nbc模型的正確分類帶來了一定影響。在屬性個數比較多或者屬性之間相關性較大時,nbc模型的分類效率比不上決策樹模型。而在屬性相關性較小時,nbc模型的效能最為良好。
二、 需要知道先驗概率。
三、 分類決策存在錯誤率
7 adaboosting方法的優點
一、 adaboost是一種有很高精度的分類器。
二、 可以使用各種方法構建子分類器,adaboost演算法提供的是框架。
三、 當使用簡單分類器時,計算出的結果是可以理解的。而且弱分類器構造極其簡單。
四、 簡單,不用做特徵篩選。
五、 不用擔心overfitting。
8 rocchio的優點
rocchio演算法的突出優點是容易實現,計算(訓練和分類)特別簡單,它通常用來實現衡量分類系統效能的基準系統,而實用的分類系統很少採用這種演算法解決具體的分類問題。
9各種分類演算法比較
根據這篇**所得出的結論,
calibrated boosted trees的效能最好,隨機森林第二,uncalibrated bagged trees第三,calibratedsvms第四, uncalibrated neural nets第五。
效能較差的是樸素貝葉斯,決策樹。
有些演算法在特定的資料集下表現較好。
[1] 羅森林, 馬俊, 潘麗敏.資料探勘理論與技術[m].電子工業出版社.2013.126-126
[2] 楊曉帆,陳廷槐.人工神經網路固有的優點和缺點[j].電腦科學.1994(vol.21).23-26
[3] steve.遺傳演算法的優缺點.
[4] 楊建武.文字自動分類技術.
www.icst.pku.edu.cn/course/mining/12-13spring/textmining04-%e5%88%86%e7%b1%bb.pdf
[5] 白雲球工作室. svm(支援向量機)綜述.
[6] 張夏天. 統計學習理論和svm的不足(1).
[7] richcaruana,alexandruniculescu-mizil.an empirical comparison of supervised learningalgorithms.2006
各種排序演算法比較
花了很長時間終於把排序的基礎學了一下,這段時間學了很多東西,總結一下 學的排序演算法有 插入排序,合併排序,氣泡排序,選擇排序,希爾排序,堆排序,快速排序,計數排序,基數排序,桶排序 沒有實現 比較一下學習後的心得。我不是很清楚他們的時間複雜度,也真的不知道他們到底誰快誰慢,因為書上的推導我確實只是...
各種排序演算法比較
排序相關的演算法複雜度分析 下邊分別實現下各個演算法 簡單選擇排序 1 簡單選擇排序 2void select sort int a,intn 3 16 17swap a i a index 18 19 這裡簡單選擇排序之所以不穩定是因為交換的時候會打亂順序,例如 5,4,5,1,6。第一次交換後會...
各種排序演算法的比較
穩定的排序演算法有 直接插入,冒泡,歸併,基數排序。一.快速排序 快排的三個步驟 1.選取樞紐元,一般用三數中值法,即求得left,center,right的中位數 不要用第乙個數,如果原始資料是倒序,效率將會很低 2.根據樞紐元把輸入資料劃分成為兩部分,左半部分的數比樞紐元小,右半部分比樞紐元大。...