常見機器學習算法優缺點

轉自:http://www.cnblogs.com/zhizhan/p/4432943.htmlhtml

決策樹

1、  決策樹優勢

一、決策樹易於理解和解釋,能夠可視化分析,容易提取出規則。程序員

二、能夠同時處理標稱型和數值型數據。算法

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

四、決策樹能夠很好的擴展到大型數據庫中,同時它的大小獨立於數據庫大小。網絡

2、決策樹缺點

一、對缺失數據處理比較困難。數據結構

二、容易出現過擬合問題。dom

三、忽略數據集中屬性的相互關聯。機器學習

四、ID3算法計算信息增益時結果偏向數值比較多的特徵。分佈式

3、改進措施

一、對決策樹進行剪枝。能夠採用交叉驗證法和加入正則化的方法。函數

二、使用基於決策樹的combination算法,如bagging算法,randomforest算法,能夠解決過擬合的問題

3、應用領域

企業管理實踐,企業投資決策,因爲決策樹很好的分析能力,在決策過程應用較多。

 

KNN算法

1、KNN算法的優勢

 

一、KNN是一種在線技術,新數據能夠直接加入數據集而沒必要進行從新訓練

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

2、KNN算法的缺點

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

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

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

四、k值大小的選擇。

3、KNN算法應用領域

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

支持向量機(SVM)

1、  SVM優勢

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

二、解決非線性問題。

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

四、能夠很好的處理高維數據集。

五、泛化能力比較強。

2、SVM缺點

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

二、對缺失數據敏感。

3、SVM應用領域

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

AdaBoost算法

1、  AdaBoost算法優勢

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

二、能夠將不一樣的分類算法做爲弱分類器。

三、AdaBoost具備很高的精度。

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

2、Adaboost算法缺點

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

二、數據不平衡致使分類精度降低。

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

3、AdaBoost應用領域

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

樸素貝葉斯算法

1、  樸素貝葉斯算法優勢

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

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

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

2、樸素貝葉斯缺點

一、因爲使用了樣本屬性獨立性的假設,因此若是樣本屬性有關聯時其效果很差。

3、樸素貝葉斯應用領域

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

Logistic迴歸算法

1、logistic迴歸優勢

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

2、logistic迴歸缺點

一、容易產生欠擬合。

二、分類精度不高。

3、logistic迴歸應用領域

用於二分類領域,能夠得出機率值,適用於根據分類機率排名的領域,如搜索排名等。

Logistic迴歸的擴展softmax能夠應用於多分類領域,如手寫字識別等。

人工神經網絡

1、  神經網絡優勢

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

二、對噪聲數據魯棒性和容錯性較強。

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

2、神經網絡缺點

一、神經網絡參數較多,權值和閾值。

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

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

3、人工神經網絡應用領域

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

 ===============================================================================================

原文:http://suanfazu.com/t/qian-tan-wo-dui-ji-qi-xue-xi-de-dian-li-jie/305

機器學習方法很是多,也很成熟。下面我挑幾個說。

  1. 首先是SVM。由於我作的文本處理比較多,因此比較熟悉SVM。SVM也叫支持向量機,其把數據映射到多維空間中以點的形式存在,而後找到可以分類的最優超平面,最後根據這個平面來分類。SVM能對訓練集以外的數據作很好的預測、泛化錯誤率低、計算開銷小、結果易解釋,但其對參數調節和核函數的參數過於敏感。我的感受SVM是二分類的最好的方法,但也僅限於二分類。若是要使用SVM進行多分類,也是在向量空間中實現屢次二分類。
    SVM有一個核心函數SMO,也就是序列最小最優化算法。SMO基本是最快的二次規劃優化算法,其核心就是找到最優參數α,計算超平面後進行分類。SMO方法能夠將大優化問題分解爲多個小優化問題求解,大大簡化求解過程。某些條件下,把原始的約束問題經過拉格朗日函數轉化爲無約束問題,若是原始問題求解棘手,在知足KKT的條件下用求解對偶問題來代替求解原始問題,使得問題求解更加容易。 SVM還有一個重要函數是核函數。核函數的主要做用是將數據從低位空間映射到高維空間。詳細的內容我就不說了,由於內容實在太多了。總之,核函數能夠很好的解決數據的非線性問題,而無需考慮映射過程。

  2. 第二個是KNN。KNN將測試集的數據特徵與訓練集的數據進行特徵比較,而後算法提取樣本集中特徵最近鄰數據的分類標籤,即KNN算法採用測量不一樣特徵值之間的距離的方法進行分類。KNN的思路很簡單,就是計算測試數據與類別中心的距離。KNN具備精度高、對異常值不敏感、無數據輸入假定、簡單有效的特色,但其缺點也很明顯,計算複雜度過高。要分類一個數據,卻要計算全部數據,這在大數據的環境下是很可怕的事情。並且,當類別存在範圍重疊時,KNN分類的精度也不過高。因此,KNN比較適合小量數據且精度要求不高的數據。
    KNN有兩個影響分類結果較大的函數,一個是數據歸一化,一個是距離計算。若是數據不進行歸一化,當多個特徵的值域差異很大的時候,最終結果就會受到較大影響;第二個是距離計算。這應該算是KNN的核心了。目前用的最多的距離計算公式是歐幾里得距離,也就是咱們經常使用的向量距離計算方法。
    我的感受,KNN最大的做用是能夠隨時間序列計算,即樣本不能一次性獲取只能隨着時間一個一個獲得的時候,KNN能發揮它的價值。至於其餘的特色,它能作的,不少方法都能作;其餘能作的它卻作不了。

  3. 第三個就是Naive Bayes了。Naive Bayes簡稱NB(牛X),爲啥它牛X呢,由於它是基於Bayes機率的一種分類方法。貝葉斯方法能夠追溯到幾百年前,具備深厚的機率學基礎,可信度很是高。Naive Baye中文名叫樸素貝葉斯,爲啥叫「樸素」呢?由於其基於一個給定假設:給定目標值時屬性之間相互條件獨立。好比我說「我喜歡你」,該假設就會假定「我」、「喜歡」、「你」三者之間毫無關聯。仔細想一想,這幾乎是不可能的。馬克思告訴咱們:事物之間是有聯繫的。同一個事物的屬性之間就更有聯繫了。因此,單純的使用NB算法效率並不高,大都是對該方法進行了必定的改進,以便適應數據的需求。
    NB算法在文本分類中用的很是多,由於文本類別主要取決於關鍵詞,基於詞頻的文本分類正中NB的下懷。但因爲前面提到的假設,該方法對中文的分類效果很差,由於中文顧左右而言他的狀況太多,但對直來直去的老美的語言,效果良好。至於核心算法嘛,主要思想全在貝葉斯里面了,沒啥可說的。

  4. 第四個是迴歸。迴歸有不少,Logistic迴歸啊、嶺迴歸啊什麼的,根據不一樣的需求能夠分出不少種。這裏我主要說說Logistic迴歸。爲啥呢?由於Logistic迴歸主要是用來分類的,而非預測。迴歸就是將一些數據點用一條直線對這些點進行擬合。而Logistic迴歸是指根據現有數據對分類邊界線創建迴歸公式,以此進行分類。該方法計算代價不高,易於理解和實現,並且大部分時間用於訓練,訓練完成後分類很快;但它容易欠擬合,分類精度也不高。主要緣由就是Logistic主要是線性擬合,但現實中不少事物都不知足線性的。即使有二次擬合、三次擬合等曲線擬合,也只能知足小部分數據,而沒法適應絕大多數數據,因此迴歸方法自己就具備侷限性。但爲何還要在這裏提出來呢?由於迴歸方法雖然大多數都不合適,但一旦合適,效果就很是好。
    Logistic迴歸實際上是基於一種曲線的,「線」這種連續的表示方法有一個很大的問題,就是在表示跳變數據時會產生「階躍」的現象,說白了就是很難表示數據的忽然轉折。因此用Logistic迴歸必須使用一個稱爲「海維塞德階躍函數」的Sigmoid函數來表示跳變。經過Sigmoid就能夠獲得分類的結果。
    爲了優化Logistic迴歸參數,須要使用一種「梯度上升法」的優化方法。該方法的核心是,只要沿着函數的梯度方向搜尋,就能夠找到函數的最佳參數。但該方法在每次更新迴歸係數時都須要遍歷整個數據集,對於大數據效果還不理想。因此還須要一個「隨機梯度上升算法」對其進行改進。該方法一次僅用一個樣本點來更新迴歸係數,因此效率要高得多。

  5. 第五個是決策樹。據我瞭解,決策樹是最簡單,也是曾經最經常使用的分類方法了。決策樹基於樹理論實現數據分類,我的感受就是數據結構中的B+樹。決策樹是一個預測模型,他表明的是對象屬性與對象值之間的一種映射關係。決策樹計算複雜度不高、輸出結果易於理解、對中間值缺失不敏感、能夠處理不相關特徵數據。其比KNN好的是能夠了解數據的內在含義。但其缺點是容易產生過分匹配的問題,且構建很耗時。決策樹還有一個問題就是,若是不繪製樹結構,分類細節很難明白。因此,生成決策樹,而後再繪製決策樹,最後再分類,才能更好的瞭解數據的分類過程。
    決策樹的核心樹的分裂。到底該選擇什麼來決定樹的分叉是決策樹構建的基礎。最好的方法是利用信息熵實現。熵這個概念很頭疼,很容易讓人迷糊,簡單來講就是信息的複雜程度。信息越多,熵越高。因此決策樹的核心是經過計算信息熵劃分數據集。

  6. 我還得說一個比較特殊的分類方法:AdaBoost。AdaBoost是boosting算法的表明分類器。boosting基於元算法(集成算法)。即考慮其餘方法的結果做爲參考意見,也就是對其餘算法進行組合的一種方式。說白了,就是在一個數據集上的隨機數據使用一個分類訓練屢次,每次對分類正確的數據賦權值較小,同時增大分類錯誤的數據的權重,如此反覆迭代,直到達到所需的要求。AdaBoost泛化錯誤率低、易編碼、能夠應用在大部分分類器上、無參數調整,但對離羣點敏感。該方法其實並非一個獨立的方法,而是必須基於元方法進行效率提高。我的認爲,所謂的「AdaBoost是最好的分類方法」這句話是錯誤的,應該是「AdaBoost是比較好的優化方法」纔對。

好了,說了這麼多了,我有點暈了,還有一些方法過幾天再寫。總的來講,機器學習方法是利用現有數據做爲經驗讓機器學習,以便指導之後再次碰到的決策。目前來講,對於大數據分類,仍是要藉助分佈式處理技術和雲技術纔有可能完成,但一旦訓練成功,分類的效率仍是很可觀的,這就比如人年齡越大看待問題越精準的道理是同樣的。這八個月裏,從最初的理解到一步步實現;從需求的邏輯推斷到實現的方法選擇,天天都是辛苦的,但天天也都是緊張刺激的。我天天都在想學了這個之後能夠實現什麼樣的分類,其實想一想都是讓人興奮的。當初,我逃避作程序員,主要緣由就是我不喜歡作已經知道結果的事情,由於那樣的工做沒有什麼期盼感;而如今,我能夠利用數據分析獲得我想象不到的事情,這不只知足了個人好奇感,也讓我能在工做中樂在其中。也許,我距離社會的技術需求還有很遠的距離,但我對本身充滿信心,由於,我不感到枯燥,不感到彷徨,雖然有些力不從心,但態度堅決。

 

 

===================================================

http://blog.csdn.net/vola9527/article/details/43347747

簡述機器學習十大算法的每一個算法的核心思想、工做原理、適用狀況及優缺點等。

1)C4.5算法:

ID3算法是以信息論爲基礎,以信息熵和信息增益度爲衡量標準,從而實現對數據的概括分類。ID3算法計算每一個屬性的信息增益,並選取具備最高增益的屬性做爲給定的測試屬性。

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

1)用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;

2)在樹構造過程當中進行剪枝

3)能處理非離散的數據

4)能處理不完整的數據

 C4.5算法優勢:產生的分類規則易於理解,準確率較高。

缺點:

1)在構造樹的過程當中,須要對數據集進行屢次的順序掃描和排序,於是致使算法的低效。

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

 

2)K means 算法

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

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

 

優勢:算法速度很快

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

 

 

3)樸素貝葉斯算法:

樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法。算法的基礎是機率問題,分類原理是經過某對象的先驗機率,利用貝葉斯公式計算出其後驗機率,即該對象屬於某一類的機率,選擇具備最大後驗機率的類做爲該對象所屬的類。樸素貝葉斯假設是約束性很強的假設,假設特徵條件獨立,但樸素貝葉斯算法簡單,快速,具備較小的出錯率。

在樸素貝葉斯的應用中,主要研究了電子郵件過濾以及文本分類研究。

 

4)K最近鄰分類算法(KNN)

分類思想比較簡單,從訓練樣本中找出K個與其最相近的樣本,而後看這k個樣本中哪一個類別的樣本多,則待斷定的值(或說抽樣)就屬於這個類別。

缺點:

1)K值須要預先設定,而不能自適應

2)當樣本不平衡時,如一個類的樣本容量很大,而其餘類樣本容量很小時,有可能致使當輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本佔多數。

該算法在分類時有個重要的不足是,當樣本不平衡時,即:一個類的樣本容量很大,而其餘類樣本數量很小時,頗有可能致使當輸入一個未知樣本時,該樣本的K個鄰居中大數量類的樣本佔多數。 可是這類樣本並不接近目標樣本,而數量小的這類樣本很靠近目標樣本。這個時候,咱們有理由認爲該位置樣本屬於數量小的樣本所屬的一類,可是,KNN卻不關心這個問題,它只關心哪類樣本的數量最多,而不去把距離遠近考慮在內,所以,咱們能夠採用權值的方法來改進。和該樣本距離小的鄰居權值大,和該樣本距離大的鄰居權值則相對較小,由此,將距離遠近的因素也考慮在內,避免因一個樣本過大致使誤判的狀況

該算法適用於對樣本容量比較大的類域進行自動分類。

  

5)EM最大指望算法

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

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

 

6)PageRank算法

是google的頁面排序算法,是基於從許多優質的網頁連接過來的網頁,一定仍是優質網頁的迴歸關係,來斷定全部網頁的重要性。(也就是說,一我的有着越多牛X朋友的人,他是牛X的機率就越大。)

優勢:

徹底獨立於查詢,只依賴於網頁連接結構,能夠離線計算。

缺點:

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

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

 

7)AdaBoost

Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不一樣的分類器(弱分類器),而後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。其算法自己是經過改變數據分佈來實現的,它根據每次訓練集之中每一個樣本的分類是否正確,以及上次的整體分類的準確率,來肯定每一個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練獲得的分類器最後融合起來,做爲最後的決策分類器。

整個過程以下所示:
1. 先經過對N個訓練樣本的學習獲得第一個弱分類器;
2. 將分錯的樣本和其餘的新數據一塊兒構成一個新的N個的訓練樣本,經過對這個樣本的學習獲得第二個弱分類器;
3. 將和都分錯了的樣本加上其餘的新樣本構成另外一個新的N個的訓練樣本,經過對這個樣本的學習獲得第三個弱分類器;
4. 如此反覆,最終獲得通過提高的強分類器。

目前AdaBoost算法普遍的應用於人臉檢測、目標識別等領域。

 

8)Apriori算法

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

Apriori算法分爲兩個階段:

1)尋找頻繁項集

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

算法缺點:

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

2) 每次計算項集的支持度時,都對數據庫中    的所有記錄進行了一遍掃描比較,須要很大的I/O負載。

 

9)SVM支持向量機

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

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

SVM在解決小樣本、非線性及高維模式識別問題中表現出許多特有的優點,並可以推廣應用到函數擬合等其餘機器學習問題中。

 

10)CART分類與迴歸樹

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

據集生成的決策樹的拓展形。若是目標變量是標稱的,稱爲分類樹;若是目標變量是連續的,稱爲迴歸樹。分類樹是使用樹結構算法將數據分紅離散類的方法。

優勢

1)很是靈活,能夠容許有部分錯分紅本,還可指定先驗機率分佈,可以使用自動的成本複雜性剪枝來獲得概括性更強的樹。

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

相關文章
相關標籤/搜索