機器學習常見演算法分類,演算法優缺點彙總
機器學習無疑是當前資料分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的演算法。本文為您總結一下常見的機器學習演算法,以供您在工作和學習中參考。
機器學習的演算法很多。很多時候困惑人們都是,很多演算法是一類演算法,而有些演算法又是從其他演算法中延伸出來的。這裡,我們從兩個方面來給大家介紹,第一個方面是學習的方式,第二個方面是演算法的類似性。
學習方式
根據資料型別的不同,對一個問題的建模有不同的方式。在機器學習或者人工智慧領域,人們首先會考慮演算法的學習方式。在機器學習領域,有幾種主要的學習方式。將演算法按照學習方式分類是一個不錯的想法,這樣可以讓人們在建模和演算法選擇的時候考慮能根據輸入資料來選擇最合適的演算法來獲得最好的結果。
監督式學習:
在監督式學習下,輸入資料被稱為“訓練資料”,每組訓練資料有一個明確的標識或結果,如對防垃圾郵件系統中“垃圾郵件”“非垃圾郵件”,對手寫數字識別中的“1“,”2“,”3“,”4“等。在建立預測模型的時候,監督式學習建立一個學習過程,將預測結果與“訓練資料”的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。監督式學習的常見應用場景如分類問題和迴歸問題。常見演算法有邏輯迴歸(Logistic Regression)和反向傳遞神經網路(Back Propagation Neural Network)。
非監督式學習:
在非監督式學習中,資料並不被特別標識,學習模型是為了推斷出資料的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。常見演算法包括Apriori演算法以及k-Means演算法。
半監督式學習:
在此學習方式下,輸入資料部分被標識,部分沒有被標識,這種學習模型可以用來進行預測,但是模型首先需要學習資料的內在結構以便合理的組織資料來進行預測。應用場景包括分類和迴歸,演算法包括一些對常用監督式學習演算法的延伸,這些演算法首先試圖對未標識資料進行建模,在此基礎上再對標識的資料進行預測。如圖論推理演算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM.)等。
強化學習:
在這種學習模式下,輸入資料作為對模型的反饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接反饋到模型,模型必須對此立刻作出調整。常見的應用場景包括動態系統以及機器人控制等。常見演算法包括Q-Learning以及時間差學習(Temporal difference learning)
在企業資料應用的場景下, 人們最常用的可能就是監督式學習和非監督式學習的模型。 在影象識別等領域,由於存在大量的非標識的資料和少量的可標識資料, 目前半監督式學習是一個很熱的話題。 而強化學習更多的應用在機器人控制及其他需要進行系統控制的領域。
演算法類似性
根據演算法的功能和形式的類似性,我們可以把演算法分類,比如說基於樹的演算法,基於神經網路的演算法等等。當然,機器學習的範圍非常龐大,有些演算法很難明確歸類到某一類。而對於有些分類來說,同一分類的演算法可以針對不同型別的問題。這裡,我們儘量把常用的演算法按照最容易理解的方式進行分類。
迴歸演算法:
迴歸演算法是試圖採用對誤差的衡量來探索變數之間的關係的一類演算法。迴歸演算法是統計機器學習的利器。在機器學習領域,人們說起迴歸,有時候是指一類問題,有時候是指一類演算法,這一點常常會使初學者有所困惑。常見的迴歸演算法包括:最小二乘法(Ordinary Least Square),邏輯迴歸(Logistic Regression),逐步式迴歸(Stepwise Regression),多元自適應迴歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)。
基於例項的演算法
基於例項的演算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本資料,然後根據某些近似性把新資料與樣本資料進行比較。通過這種方式來尋找最佳的匹配。因此,基於例項的演算法常常也被稱為“贏家通吃”學習或者“基於記憶的學習”。常見的演算法包括 k-Nearest Neighbor(KNN), 學習向量量化(Learning Vector Quantization, LVQ),以及自組織對映演算法(Self-Organizing Map , SOM)
正則化方法
正則化方法是其他演算法(通常是迴歸演算法)的延伸,根據演算法的複雜度對演算法進行調整。正則化方法通常對簡單模型予以獎勵而對複雜演算法予以懲罰。常見的演算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網路(Elastic Net)。
決策樹學習
決策樹演算法根據資料的屬性採用樹狀結構建立決策模型, 決策樹模型常常用來解決分類和迴歸問題。常見的演算法包括:分類及迴歸樹(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機森林(Random Forest), 多元自適應迴歸樣條(MARS)以及梯度推進機(Gradient Boosting Machine, GBM)
貝葉斯方法
貝葉斯方法演算法是基於貝葉斯定理的一類演算法,主要用來解決分類和迴歸問題。常見演算法包括:樸素貝葉斯演算法,平均單依賴估計(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。
基於核的演算法
基於核的演算法中最著名的莫過於支援向量機(SVM)了。 基於核的演算法把輸入資料對映到一個高階的向量空間, 在這些高階向量空間裡, 有些分類或者回歸問題能夠更容易的解決。 常見的基於核的演算法包括:支援向量機(Support Vector Machine, SVM), 徑向基函式(Radial Basis Function ,RBF), 以及線性判別分析(Linear Discriminate Analysis ,LDA)等
聚類演算法
聚類,就像迴歸一樣,有時候人們描述的是一類問題,有時候描述的是一類演算法。聚類演算法通常按照中心點或者分層的方式對輸入資料進行歸併。所以的聚類演算法都試圖找到資料的內在結構,以便按照最大的共同點將資料進行歸類。常見的聚類演算法包括 k-Means演算法以及期望最大化演算法(Expectation Maximization, EM)。
關聯規則學習
關聯規則學習通過尋找最能夠解釋資料變數之間關係的規則,來找出大量多元資料集中有用的關聯規則。常見演算法包括 Apriori演算法和Eclat演算法等。
人工神經網路
人工神經網路演算法模擬生物神經網路,是一類模式匹配演算法。通常用於解決分類和迴歸問題。人工神經網路是機器學習的一個龐大的分支,有幾百種不同的演算法。(其中深度學習就是其中的一類演算法,我們會單獨討論),重要的人工神經網路演算法包括:感知器神經網路(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網路,自組織對映(Self-Organizing Map, SOM)。學習向量量化(Learning Vector Quantization, LVQ)
深度學習
深度學習演算法是對人工神經網路的發展。 在近期贏得了很多關注, 特別是百度也開始發力深度學習後, 更是在國內引起了很多關注。 在計算能力變得日益廉價的今天,深度學習試圖建立大得多也複雜得多的神經網路。很多深度學習的演算法是半監督式學習演算法,用來處理存在少量未標識資料的大資料集。常見的深度學習演算法包括:受限波爾茲曼機(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷積網路(Convolutional Network), 堆疊式自動編碼器(Stacked Auto-encoders)。
降低維度演算法
像聚類演算法一樣,降低維度演算法試圖分析資料的內在結構,不過降低維度演算法是以非監督學習的方式試圖利用較少的資訊來歸納或者解釋資料。這類演算法可以用於高維資料的視覺化或者用來簡化資料以便監督式學習使用。常見的演算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘迴歸(Partial Least Square Regression,PLS), Sammon對映,多維尺度(Multi-Dimensional Scaling, MDS), 投影追蹤(Projection Pursuit)等。
整合演算法:
整合演算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體預測。整合演算法的主要難點在於究竟整合哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的演算法,同時也非常流行。常見的演算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆疊泛化(Stacked Generalization, Blending),梯度推進機(Gradient Boosting Machine, GBM),隨機森林(Random Forest)。
決策樹
一、 決策樹優點
1、決策樹易於理解和解釋,可以視覺化分析,容易提取出規則。
2、可以同時處理標稱型和數值型資料。
3、測試資料集時,執行速度比較快。
4、決策樹可以很好的擴充套件到大型資料庫中,同時它的大小獨立於資料庫大小。
二、決策樹缺點
1、對缺失資料處理比較困難。
2、容易出現過擬合問題。
3、忽略資料集中屬性的相互關聯。
4、ID3演算法計算資訊增益時結果偏向數值比較多的特徵。
三、改進措施
1、對決策樹進行剪枝。可以採用交叉驗證法和加入正則化的方法。
2、使用基於決策樹的combination演算法,如bagging演算法,randomforest演算法,可以解決過擬合的問題
三、應用領域
企業管理實踐,企業投資決策,由於決策樹很好的分析能力,在決策過程應用較多。
KNN演算法
一、KNN演算法的優點
1、KNN是一種線上技術,新資料可以直接加入資料集而不必進行重新訓練
2、KNN理論簡單,容易實現
二、KNN演算法的缺點
1、對於樣本容量大的資料集計算量比較大。
2、樣本不平衡時,預測偏差比較大。如:某一類的樣本比較少,而其它類樣本比較多。
3、KNN每一次分類都會重新進行一次全域性運算。
4、k值大小的選擇。
三、KNN演算法應用領域
文字分類、模式識別、聚類分析,多分類領域
支援向量機(SVM)
一、 SVM優點
1、解決小樣本下機器學習問題。
2、解決非線性問題。
3、無區域性極小值問題。(相對於神經網路等演算法)
4、可以很好的處理高維資料集。
5、泛化能力比較強。
二、SVM缺點
1、對於核函式的高維對映解釋力不強,尤其是徑向基函式。
2、對缺失資料敏感。
三、SVM應用領域
文字分類、影象識別、主要二分類領域
AdaBoost演算法
一、 AdaBoost演算法優點
1、很好的利用了弱分類器進行級聯。
2、可以將不同的分類演算法作為弱分類器。
3、AdaBoost具有很高的精度。
4、相對於bagging演算法和Random Forest演算法,AdaBoost充分考慮的每個分類器的權重。
二、Adaboost演算法缺點
1、AdaBoost迭代次數也就是弱分類器數目不太好設定,可以使用交叉驗證來進行確定。
2、資料不平衡導致分類精度下降。
3、訓練比較耗時,每次重新選擇當前分類器最好切分點。
三、AdaBoost應用領域
模式識別、計算機視覺領域,用於二分類和多分類場景
樸素貝葉斯演算法
一、 樸素貝葉斯演算法優點
1、對大數量訓練和查詢時具有較高的速度。即使使用超大規模的訓練集,針對每個專案通常也只會有相對較少的特徵數,並且對專案的訓練和分類也僅僅是特徵概率的數學運算而已。
2、支援增量式運算。即可以實時的對新增的樣本進行訓練。
3、樸素貝葉斯對結果解釋容易理解。
二、樸素貝葉斯缺點
1、由於使用了樣本屬性獨立性的假設,所以如果樣本屬性有關聯時其效果不好。
三、樸素貝葉斯應用領域
文字分類、欺詐檢測中使用較多
Logistic迴歸演算法
一、logistic迴歸優點
1、計算代價不高,易於理解和實現
二、logistic迴歸缺點
1、容易產生欠擬合。
2、分類精度不高。
三、logistic迴歸應用領域
用於二分類領域,可以得出概率值,適用於根據分類概率排名的領域,如搜尋排名等。
Logistic迴歸的擴充套件softmax可以應用於多分類領域,如手寫字識別等。
人工神經網路
一、 神經網路優點
1、分類準確度高,學習能力極強。
2、對噪聲資料魯棒性和容錯性較強。
3、有聯想能力,能逼近任意非線性關係。
二、神經網路缺點
1、神經網路引數較多,權值和閾值。
2、黑盒過程,不能觀察中間結果。
3、學習過程比較長,有可能陷入區域性極小值。
三、人工神經網路應用領域
目前深度神經網路已經應用與計算機視覺,自然語言處理,語音識別等領域並取得很好的效果。
===============================================================================================
原文:http://suanfazu.com/t/qian-tan-wo-dui-ji-qi-xue-xi-de-dian-li-jie/305
機器學習方法非常多,也很成熟。下面我挑幾個說。
-
首先是SVM。因為我做的文字處理比較多,所以比較熟悉SVM。SVM也叫支援向量機,其把資料對映到多維空間中以點的形式存在,然後找到能夠分類的最優超平面,最後根據這個平面來分類。SVM能對訓練集之外的資料做很好的預測、泛化錯誤率低、計算開銷小、結果易解釋,但其對引數調節和核函式的引數過於敏感。個人感覺SVM是二分類的最好的方法,但也僅限於二分類。如果要使用SVM進行多分類,也是在向量空間中實現多次二分類。
SVM有一個核心函式SMO,也就是序列最小最優化演算法。SMO基本是最快的二次規劃優化演算法,其核心就是找到最優引數α,計算超平面後進行分類。SMO方法可以將大優化問題分解為多個小優化問題求解,大大簡化求解過程。某些條件下,把原始的約束問題通過拉格朗日函式轉化為無約束問題,如果原始問題求解棘手,在滿足KKT的條件下用求解對偶問題來代替求解原始問題,使得問題求解更加容易。 SVM還有一個重要函式是核函式。核函式的主要作用是將資料從低位空間對映到高維空間。詳細的內容我就不說了,因為內容實在太多了。總之,核函式可以很好的解決資料的非線性問題,而無需考慮對映過程。 -
第二個是KNN。KNN將測試集的資料特徵與訓練集的資料進行特徵比較,然後演算法提取樣本集中特徵最近鄰資料的分類標籤,即KNN演算法採用測量不同特徵值之間的距離的方法進行分類。KNN的思路很簡單,就是計算測試資料與類別中心的距離。KNN具有精度高、對異常值不敏感、無資料輸入假定、簡單有效的特點,但其缺點也很明顯,計算複雜度太高。要分類一個數據,卻要計算所有資料,這在大資料的環境下是很可怕的事情。而且,當類別存在範圍重疊時,KNN分類的精度也不太高。所以,KNN比較適合小量資料且精度要求不高的資料。
KNN有兩個影響分類結果較大的函式,一個是資料歸一化,一個是距離計算。如果資料不進行歸一化,當多個特徵的值域差別很大的時候,最終結果就會受到較大影響;第二個是距離計算。這應該算是KNN的核心了。目前用的最多的距離計算公式是歐幾里得距離,也就是我們常用的向量距離計算方法。
個人感覺,KNN最大的作用是可以隨時間序列計算,即樣本不能一次性獲取只能隨著時間一個一個得到的時候,KNN能發揮它的價值。至於其他的特點,它能做的,很多方法都能做;其他能做的它卻做不了。 -
第三個就是Naive Bayes了。Naive Bayes簡稱NB(牛X),為啥它牛X呢,因為它是基於Bayes概率的一種分類方法。貝葉斯方法可以追溯到幾百年前,具有深厚的概率學基礎,可信度非常高。Naive Baye中文名叫樸素貝葉斯,為啥叫“樸素”呢?因為其基於一個給定假設:給定目標值時屬性之間相互條件獨立。比如我說“我喜歡你”,該假設就會假定“我”、“喜歡”、“你”三者之間毫無關聯。仔細想想,這幾乎是不可能的。馬克思告訴我們:事物之間是有聯絡的。同一個事物的屬性之間就更有聯絡了。所以,單純的使用NB演算法效率並不高,大都是對該方法進行了一定的改進,以便適應資料的需求。
NB演算法在文字分類中用的非常多,因為文字類別主要取決於關鍵詞,基於詞頻的文字分類正中NB的下懷。但由於前面提到的假設,該方法對中文的分類效果不好,因為中文顧左右而言他的情況太多,但對直來直去的老美的語言,效果良好。至於核心演算法嘛,主要思想全在貝葉斯里面了,沒啥可說的。 -
第四個是迴歸。迴歸有很多,Logistic迴歸啊、嶺迴歸啊什麼的,根據不同的需求可以分出很多種。這裡我主要說說Logistic迴歸。為啥呢?因為Logistic迴歸主要是用來分類的,而非預測。迴歸就是將一些資料點用一條直線對這些點進行擬合。而Logistic迴歸是指根據現有資料對分類邊界線建立迴歸公式,以此進行分類。該方法計算代價不高,易於理解和實現,而且大部分時間用於訓練,訓練完成後分類很快;但它容易欠擬合,分類精度也不高。主要原因就是Logistic主要是線性擬合,但現實中很多事物都不滿足線性的。即便有二次擬合、三次擬合等曲線擬合,也只能滿足小部分資料,而無法適應絕大多數資料,所以迴歸方法本身就具有侷限性。但為什麼還要在這裡提出來呢?因為迴歸方法雖然大多數都不合適,但一旦合適,效果就非常好。
Logistic迴歸其實是基於一種曲線的,“線”這種連續的表示方法有一個很大的問題,就是在表示跳變資料時會產生“階躍”的現象,說白了就是很難表示資料的突然轉折。所以用Logistic迴歸必須使用一個稱為“海維塞德階躍函式”的Sigmoid函式來表示跳變。通過Sigmoid就可以得到分類的結果。
為了優化Logistic迴歸引數,需要使用一種“梯度上升法”的優化方法。該方法的核心是,只要沿著函式的梯度方向搜尋,就可以找到函式的最佳引數。但該方法在每次更新迴歸係數時都需要遍歷整個資料集,對於大資料效果還不理想。所以還需要一個“隨機梯度上升演算法”對其進行改進。該方法一次僅用一個樣本點來更新迴歸係數,所以效率要高得多。 -
第五個是決策樹。據我瞭解,決策樹是最簡單,也是曾經最常用的分類方法了。決策樹基於樹理論實現資料分類,個人感覺就是資料結構中的B+樹。決策樹是一個預測模型,他代表的是物件屬性與物件值之間的一種對映關係。決策樹計算複雜度不高、輸出結果易於理解、對中間值缺失不敏感、可以處理不相關特徵資料。其比KNN好的是可以瞭解資料的內在含義。但其缺點是容易產生過度匹配的問題,且構建很耗時。決策樹還有一個問題就是,如果不繪製樹結構,分類細節很難明白。所以,生成決策樹,然後再繪製決策樹,最後再分類,才能更好的瞭解資料的分類過程。
決策樹的核心樹的分裂。到底該選擇什麼來決定樹的分叉是決策樹構建的基礎。最好的方法是利用資訊熵實現。熵這個概念很頭疼,很容易讓人迷糊,簡單來說就是資訊的複雜程度。資訊越多,熵越高。所以決策樹的核心是通過計算資訊熵劃分資料集。 -
我還得說一個比較特殊的分類方法: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個鄰居中大容量類的樣本佔多數。
該演算法適用於對樣本容量比較大的類域進行自動分類。
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 顯得非常穩健。