小白機器學習基礎算法學習必經之路(下)

咱們在上文小白機器學習基礎算法學習必經之路(上)簡述了線性迴歸 (Linear Regression) ,邏輯迴歸 (Logistic Regression) ,決策樹 (Decision Tree) ,支持向量機(SVM) ,樸素貝葉斯 (Naive Bayes) 如今咱們接着繼續學習另五個算法:html

 

K鄰近算法(KNN)

k-NN算法是最簡單的分類算法,主要的思想是計算待分類樣本與訓練樣本之間的差別性,並將差別按照由小到大排序,選出前面K個差別最小的類別,並統計在K箇中類別出現次數最多的類別爲最類似的類,最終將待分類樣本分到最類似的訓練樣本的類中。與投票(Vote)的機制相似。算法

 

k-近鄰算法是基於實例的學習,使用算法時咱們必須有接近實際數據的訓練樣本數據。框架

  • 優勢:精度高,對異常值不敏感,無數據輸入假定
  • 缺點:時間和空間複雜度高,沒法獲取樣本特徵
  • 數據:數值型和標稱型

 

k-均值算法(K-means)

KMeans算法是典型的基於距離的聚類算法,採用距離做爲類似性的評價指標,即認爲兩個對象的距離越近,其類似度就越大。該算法認爲簇是由距離靠近的對象組成的,所以把獲得緊湊且**的簇做爲最終目標。dom

 

K個初始聚類中心點的選取對聚類結果具備較大的影響,由於在該算法第一步中是隨機地選取任意k個對象做爲初始聚類中心,初始地表明一個簇。該算法在每次迭代中對數據集中剩餘的每一個對象,根據其與各個簇中心的距離賦給最近的簇。當考查完全部數據對象後,一次迭代運算完成,新的聚類中心被計算出來。機器學習

 

基本步驟 (1) 從 n個數據對象任意選擇 k 個對象做爲初始聚類中心;函數

(2) 根據每一個聚類對象的均值(中心對象),計算每一個對象與這些中心對象的距離;並根據最小距離從新對相應對象進行劃分;學習

(3) 從新計算每一個(有變化)聚類的均值(中心對象);大數據

(4) 計算標準測度函數,當知足必定條件,如函數收斂時,則算法終止;若是條件不知足則回到步驟(2)。spa

 

隨機森林 (Random Forest)

隨機森林是指利用多棵決策樹對樣本進行訓練並預測的一種算法。也就是說隨機森林算法是一個包含多個決策樹的算法,其輸出的類別是由個別決策樹輸出的類別的衆樹來決定的。在Sklearn模塊庫中,與隨機森林算法相關的函數都位於集成算法模塊ensemble中,相關的算法函數包括隨機森林算法(RandomForestClassifier)、袋裝算法(BaggingClassifier)、徹底隨機樹算法(ExtraTreesClassifier)、迭代算法(Adaboost)、GBT梯度Boosting樹算法(GradientBoostingClassifier)、梯度迴歸算法(GradientBoostingRegressor)、投票算法(VotingClassifier)。調試

隨機森林

隨機森林的特色

它有以下幾個特色: 在當前全部算法中,具備極好的準確率 可以有效地運行在大數據集上 可以處理具備高維特徵的輸入樣本,並且不須要降維 可以評估各個特徵在分類問題上的重要性 在生成過程當中,可以獲取到內部生成偏差的一種無偏估計 對於缺省值問題也可以得到很好得結果

 

實際上,隨機森林的特色不僅有這六點,它就至關於機器學習領域的Leatherman(多面手),你幾乎能夠把任何東西扔進去,它基本上都是可供使用的。在估計推斷映射方面特別好用,以至都不須要像SVM那樣作不少參數的調試。

 

GradientBoost和Adaboost算法

AdaBoost分類器就是一種元算法分類器,adaBoost分類器利用同一種基分類器(弱分類器),基於分類器的錯誤率分配不一樣的權重參數,最後累加加權的預測結果做爲輸出。

 

adaboost算法的一些實際可使用的場景:

1)用於二分類或多分類的應用場景

2)用於作分類任務的baseline無腦化,簡單,不會overfitting,不用調分類器

3)用於特徵選擇(feature selection)

4)Boosting框架用於對badcase的修正

 

只須要增長新的分類器,不須要變更原有分類器

 

因爲adaboost算法是一種實現簡單,應用也很簡單的算法。Adaboost算法經過組合弱分類器而獲得強分類器,同時具備分類錯誤率上界隨着訓練增長而穩定降低,不會過擬合等的性質,應該說是一種很適合於在各類分類場景下應用的算法。

 

GradientBoost算法

和Adaboost不一樣,Gradient Boosting 在迭代的時候選擇梯度降低的方向來保證最後的結果最好。損失函數用來描述模型的「靠譜」程度,假設模型沒有過擬合,損失函數越大,模型的錯誤率越高若是咱們的模型可以讓損失函數持續的降低,則說明咱們的模型在不停的改進,而最好的方式就是讓損失函數在其梯度方向上降低。

 

下面這個流程圖是Gradient Boosting的經典圖了,數學推導並不複雜,只要理解了Boosting的思想,不難看懂

GradientBoost算法

這裏是直接對模型的函數進行更新,利用了參數可加性推廣到函數空間。訓練F0-Fm一共m個基學習器,沿着梯度降低的方向不斷更新ρm和am。

完.......

相關文章
相關標籤/搜索