Machine Learning-常見演算法優缺點匯總

Machine Learning-常見演算法優缺點匯總

來自專欄 Python程序員56 人贊了文章

作者:阿Sam Python愛好者社區專欄作者

個人公眾號:SAMshare

前文傳送門:

Machine Learning-演算法匯總介紹

Machine Learning-模型調優備忘錄

Machine Learning-模型結果的應用之道

機器學習演算法我們了解了很多,但是放在一起來比較優缺點是缺少的,本篇文章就一些常見的演算法來進行一次優缺點梳理。

決策樹演算法

一、決策樹優點

1、決策樹易於理解和解釋,可以可視化分析,容易提取出規則。

2、可以同時處理標稱型和數值型數據。

3、測試數據集時,運行速度比較快。

4、決策樹可以很好的擴展到大型資料庫中,同時它的大小獨立於資料庫大小。

二、決策樹缺點

1、對缺失數據處理比較困難。

2、容易出現過擬合問題。

3、忽略數據集中屬性的相互關聯。

4、ID3演算法計算信息增益時結果偏向數值比較多的特徵。

三、改進措施

1、對決策樹進行剪枝。可以採用交叉驗證法和加入正則化的方法。

2、使用基於決策樹的combination演算法,如bagging演算法,randomforest演算法,可以解決過擬合的問題

四、常見演算法

一)C4.5演算法

ID3演算法是以資訊理論為基礎,以信息熵和信息增益度為衡量標準,從而實現對數據的歸納分類。ID3演算法計算每個屬性的信息增益,並選取具有最高增益的屬性作為給定的測試屬性。

C4.5演算法核心思想是ID3演算法,是ID3演算法的改進,改進方面有:

  • 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;
  • 在樹構造過程中進行剪枝;
  • 能處理非離散的數據;
  • 能處理不完整的數據。

優點:產生的分類規則易於理解,準確率較高。

缺點:

1)在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致演算法的低效;

2)C4.5隻適合於能夠駐留於內存的數據集,當訓練集大得無法在內存容納時程序無法運行。

二)CART分類與回歸樹

是一種決策樹分類方法,採用基於最小距離的基尼指數估計函數,用來決定由該子數

據集生成的決策樹的拓展形。如果目標變數是標稱的,稱為分類樹;如果目標變數是連續的,稱為回歸樹。分類樹是使用樹結構演算法將數據分成離散類的方法。

優點

1)非常靈活,可以允許有部分錯分成本,還可指定先驗概率分布,可使用自動的成本複雜性剪枝來得到歸納性更強的樹。

2)在面對諸如存在缺失值、變數數多等問題時CART 顯得非常穩健。

分類演算法

一、KNN演算法

KNN演算法的優點

1、KNN是一種在線技術,新數據可以直接加入數據集而不必進行重新訓練

2、KNN理論簡單,容易實現

KNN演算法的缺點

1、對於樣本容量大的數據集計算量比較大。

2、樣本不平衡時,預測偏差比較大。如:某一類的樣本比較少,而其它類樣本比較多。

3、KNN每一次分類都會重新進行一次全局運算。

4、k值大小的選擇。

KNN演算法應用領域

文本分類、模式識別、聚類分析,多分類領域

二、支持向量機(SVM)

支持向量機是一種基於分類邊界的方法。其基本原理是(以二維數據為例):如果訓練數據分布在二維平面上的點,它們按照其分類聚集在不同的區域。基於分類邊界的分類演算法的目標是,通過訓練,找到這些分類之間的邊界(直線的――稱為線性劃分,曲線的――稱為非線性劃分)。對於多維數據(如N維),可以將它們視為N維空間中的點,而分類邊界就是N維空間中的面,稱為超面(超面比N維空間少一維)。線性分類器使用超平面類型的邊界,非線性分類器使用超曲面。

支持向量機的原理是將低維空間的點映射到高維空間,使它們成為線性可分,再使用線性劃分的原理來判斷分類邊界。在高維空間中是一種線性劃分,而在原有的數據空間中,是一種非線性劃分。

SVM優點

1、解決小樣本下機器學習問題。

2、解決非線性問題。

3、無局部極小值問題。(相對於神經網路等演算法)

4、可以很好的處理高維數據集。

5、泛化能力比較強。

SVM缺點

1、對於核函數的高維映射解釋力不強,尤其是徑向基函數。

2、對缺失數據敏感。

SVM應用領域

文本分類、圖像識別、主要二分類領域

三、樸素貝葉斯演算法

樸素貝葉斯演算法優點

1、對大數量訓練和查詢時具有較高的速度。即使使用超大規模的訓練集,針對每個項目通常也只會有相對較少的特徵數,並且對項目的訓練和分類也僅僅是特徵概率的數學運算而已。

2、支持增量式運算。即可以實時的對新增的樣本進行訓練。

3、樸素貝葉斯對結果解釋容易理解。

樸素貝葉斯缺點

1、由於使用了樣本屬性獨立性的假設,所以如果樣本屬性有關聯時其效果不好。

樸素貝葉斯應用領域

文本分類、欺詐檢測中使用較多

四、Logistic回歸演算法

logistic回歸優點

1、計算代價不高,易於理解和實現

logistic回歸缺點

1、容易產生欠擬合。

2、分類精度不高。

logistic回歸應用領域

用於二分類領域,可以得出概率值,適用於根據分類概率排名的領域,如搜索排名等。

Logistic回歸的擴展softmax可以應用於多分類領域,如手寫字識別等。

聚類演算法

一、K means 演算法

是一個簡單的聚類演算法,把n的對象根據他們的屬性分為k個分割,k< n。 演算法的核心就是要優化失真函數J,使其收斂到局部最小值但不是全局最小值。

其中N為樣本數,K是簇數,rnk b表示n屬於第k個簇,uk 是第k個中心點的值。然後求出最優的uk

優點:演算法速度很快

缺點:分組的數目k是一個輸入參數,不合適的k可能返回較差的結果。

二、EM最大期望演算法

EM演算法是基於模型的聚類方法,是在概率模型中尋找參數最大似然估計的演算法,其中概率模型依賴於無法觀測的隱藏變數。E步估計隱含變數,M步估計其他參數,交替將極值推向最大。

EM演算法比K-means演算法計算複雜,收斂也較慢,不適於大規模數據集和高維數據,但比K-means演算法計算結果穩定、準確。EM經常用在機器學習和計算機視覺的數據集聚(Data Clustering)領域。

集成演算法(AdaBoost演算法)

一、 AdaBoost演算法優點

1、很好的利用了弱分類器進行級聯。

2、可以將不同的分類演算法作為弱分類器。

3、AdaBoost具有很高的精度。

4、相對於bagging演算法和Random Forest演算法,AdaBoost充分考慮的每個分類器的權重。

二、Adaboost演算法缺點

1、AdaBoost迭代次數也就是弱分類器數目不太好設定,可以使用交叉驗證來進行確定。

2、數據不平衡導致分類精度下降。

3、訓練比較耗時,每次重新選擇當前分類器最好切分點。

三、AdaBoost應用領域

模式識別、計算機視覺領域,用於二分類和多分類場景

人工神經網路演算法

一、神經網路優點

1、分類準確度高,學習能力極強。

2、對雜訊數據魯棒性和容錯性較強。

3、有聯想能力,能逼近任意非線性關係。

二、神經網路缺點

1、神經網路參數較多,權值和閾值。

2、黑盒過程,不能觀察中間結果。

3、學習過程比較長,有可能陷入局部極小值。

三、人工神經網路應用領域

目前深度神經網路已經應用與計算機視覺,自然語言處理,語音識別等領域並取得很好的效果。

排序演算法(PageRank)

PageRank是google的頁面排序演算法,是基於從許多優質的網頁鏈接過來的網頁,必定還是優質網頁的回歸關係,來判定所有網頁的重要性。(也就是說,一個人有著越多牛X朋友的人,他是牛X的概率就越大。)

一、PageRank優點

完全獨立於查詢,只依賴於網頁鏈接結構,可以離線計算。

二、PageRank缺點

1)PageRank演算法忽略了網頁搜索的時效性。

2)舊網頁排序很高,存在時間長,積累了大量的in-links,擁有最新資訊的新網頁排名卻很低,因為它們幾乎沒有in-links。

關聯規則演算法(Apriori演算法)

Apriori演算法是一種挖掘關聯規則的演算法,用於挖掘其內含的、未知的卻又實際存在的數據關係,其核心是基於兩階段頻集思想的遞推演算法 。

Apriori演算法分為兩個階段:

1)尋找頻繁項集

2)由頻繁項集找關聯規則

演算法缺點:

1)在每一步產生侯選項目集時循環產生的組合過多,沒有排除不應該參與組合的元素;

2) 每次計算項集的支持度時,都對資料庫中 的全部記錄進行了一遍掃描比較,需要很大的I/O負載。

Python愛好者社區歷史文章大合集

Python愛好者社區歷史文章列表(每周append更新一次)


推薦閱讀:

TAG:深度學習DeepLearning | 機器學習 | 數據挖掘 |