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

步入量化學習艾莉絲發表於2018-12-07

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


K鄰近演算法(KNN)

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


k-近鄰演算法是基於例項的學習,使用演算法時我們必須有接近實際資料的訓練樣本資料。

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

k-均值演算法(K-means)

KMeans演算法是典型的基於距離的聚類演算法,採用距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大。該演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且**的簇作為最終目標。


K個初始聚類中心點的選取對聚類結果具有較大的影響,因為在該演算法第一步中是隨機地選取任意k個物件作為初始聚類中心,初始地代表一個簇。該演算法在每次迭代中對資料集中剩餘的每個物件,根據其與各個簇中心的距離賦給最近的簇。當考查完所有資料物件後,一次迭代運算完成,新的聚類中心被計算出來。


基本步驟 (1) 從 n個資料物件任意選擇 k 個物件作為初始聚類中心;

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

(3) 重新計算每個(有變化)聚類的均值(中心物件);

(4) 計算標準測度函式,當滿足一定條件,如函式收斂時,則演算法終止;如果條件不滿足則回到步驟(2)。


隨機森林 (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。

完.......

相關文章