機器學習分類算法總結


數據和模型 https://blog.csdn.net/u010986753/article/details/98526886

0、監督學習

0.1 監督學習介紹

  監督學習可以分爲兩類:分類和迴歸。

0.2 分類

  分類問題預測數據所屬的類別;

分類的例子包括垃圾郵件檢測、客戶流失預測、情感分析、犬種檢測等。

0.3 迴歸

  迴歸問題根據先前觀察到的數據預測數值;

  迴歸的例子包括房價預測、股價預測、身高-體重預測等。

一、線性迴歸

1.1 線性迴歸介紹

  線性迴歸可能是統計和機器學習中最著名和最容易理解的算法之一。
  線性迴歸的表示是描述一條最適合輸入變量(X)和輸出變量(Y)之間關係的方程,它通過爲輸入變量找到稱爲係數(w)的特定權重。
例如:y=b+wxy=b+w*x

  在給定輸入x的情況下,我們預測y,線性迴歸學習算法的目標是找到係數b和w的值。

1.2 線性迴歸在統計學意義

  在統計學中,線性迴歸(Linear Regression)是利用稱爲線性迴歸方程的最小平方函數對一個或多個自變量和因變量之間關係進行建模的一種迴歸分析。這種函數是一個或多個稱爲迴歸係數的模型參數的線性組合。只有一個自變量的情況稱爲簡單迴歸,大於一個自變量情況的叫做多元迴歸。(這反過來又應當由多個相關的因變量預測的多元線性迴歸區別,而不是一個單一的標量變量。)
  迴歸分析中,只包括一個自變量和一個因變量,且二者的關係可用一條直線近似表示,這種迴歸分析稱爲一元線性迴歸分析。如果迴歸分析中包括兩個或兩個以上的自變量,且因變量和自變量之間是線性關係,則稱爲多元線性迴歸分析。

1.3 變量的選擇

  迴歸分析中有多個自變量:這裏有一個原則問題,這些自變量的重要性,究竟誰是最重要,誰是比較重要,誰是不重要。所以,spss線性迴歸有一個和逐步判別分析的等價的設置。
  原理:是F檢驗。spss中的操作是“分析”~“迴歸”~“線性”主對話框方法框中需先選定“逐步”方法~“選項”子對話框

  如果是選擇“用F檢驗的概率值”,越小代表這個變量越容易進入方程。原因是這個變量的F檢驗的概率小,說明它顯著,也就是這個變量對迴歸方程的貢獻越大,進一步說就是該變量被引入迴歸方程的資格越大。究其根本,就是零假設分水嶺,例如要是把進入設爲0.05,大於它說明接受零假設,這個變量對迴歸方程沒有什麼重要性,但是一旦小於0.05,說明,這個變量很重要應該引起注意。這個0.05就是進入迴歸方程的通行證。

二、LOGISTIC迴歸

2.1 LOGISTIC迴歸介紹

  Logistic迴歸類似於線性迴歸,它的目標是爲每個輸入變量的權重找到係數的值。與線性迴歸不同,對輸出的預測使用一個稱爲Logistic函數的非線性函數進行轉換。

  邏輯函數看起來像一個大S,並將任何值轉換爲0到1。這是有用的,因爲我們可以將規則應用於邏輯函數的輸出,將值壓縮到0和1(例如,如果小於0.5,則輸出1)並預測類值。

2.2 舉例

  邏輯斯蒂迴歸還有一個優點,那就是它不是硬性地將分類結果定爲0或者1,而是給出了0和1之間的概率。這就相當於對每條數據的分類結果給出了一個打分。打分越高的數據越是我們想要的。如果我們要從一個數據集中篩選出一批數據(比如100個),就只要選出打分排名前100的數據就可以了。我們也可以根據實際情況設定一個閥值,大於這個閥值的歸爲一類,小於這個閥值的歸爲另一類。

  邏輯迴歸(雖然稱作迴歸,但是不是一個迴歸方法,卻是一個分類算法。很蛋疼的說)將線性分類器的超平面方程計算結果通過logistic函數從正負無窮映射到0到1。這樣,映射的結果就可以認爲是分類器將x判定爲類別1的概率,從而指導後面的學習過程。

  舉個例子,看天氣預報,用感知器的天氣預報只會告訴你明天要下雨(y=1),或者明天不下雨(y=-1);而用了邏輯迴歸的天氣預報就能告訴你明天有90%的概率要下雨,10%的概率不下雨。

  邏輯迴歸用於預測二分類的輸出。例如,如果信用卡公司構建一個模型來決定是否通過向客戶的發行信用卡申請,它將預測客戶的信用卡是否會“違約”。

  • 首先對變量之間的關係進行線性迴歸以構建模型。
    y=b+wx y = b+w*x
  • 然後將Logistic函數應用於迴歸分析,得到兩類的概率,分類的閾值假設爲0.5
    p=1/(1+ey) p = 1/(1+e^{-y})
  • 該函數給出了事件發生和不發生概率的對數。最後,根據這兩類中較高的概率對變量進行分類。

2.3 線性迴歸和邏輯迴歸區別

  邏輯迴歸類似於線性迴歸,適用於因變量不是一個數值字的情況 (例如,一個“是/否”的響應)。它雖然被稱爲迴歸,但卻是基於根據迴歸的分類,將因變量分爲兩類。

2.4 特徵個數的選擇

  只要特徵找的準,數據量足夠大,邏輯斯蒂迴歸將會非常好用。另外,還要注意避免過擬合。

  特徵選擇的話,由於邏輯斯蒂迴歸的優點,開始的時候不用考慮各個特徵之間是否有相關性,直接把能用的特徵全部線性加權起來就好。經過初步訓練,觀察各個特徵的權值,如果權值接近爲0,那麼就可以將這個特徵看做是不相關的可以去除的特徵。總結起來就是:先做加法再做減法。

  解決過擬合的方法不過兩種,一種是減少特徵的個數;另一種是模型選擇的正則化方法。正則化的話,可以參考嶺迴歸方法。

三、線性判別分析

3.1 線性判別分析介紹

  Logistic迴歸是一種傳統的僅限於兩類分類問題的分類算法.如果有兩個以上的類,則線性判別分析算法是首選的線性分類技術。

  LDA的表示非常直接。它由爲每個類計算的數據的統計屬性組成。對於單個輸入變量,這包括:

  • 每個類的平均值。

  • 跨所有類計算的差異。
      預測是通過計算每個類的判別值和對值最大的類進行預測來進行的。該技術假設數據具有高斯分佈(鐘形曲線),所以最好先從數據中刪除異常值。它是一種簡單而有力的分類預測建模方法。

3.2 LDA監督學習降維技術

  LDA是一種監督學習的降維技術,也就是說它的數據集的每個樣本是有類別輸出的,這點和PCA不同。PCA是不考慮樣本類別輸出的無監督降維技術。LDA的思想可以用一句話概括,就是“投影后類內方差最小,類間方差最大”,如下圖所示。 我們要將數據在低維度上進行投影,投影后希望每一種類別數據的投影點儘可能的接近,而不同類別的數據的類別中心之間的距離儘可能的大。

3.3 舉例

  假設有兩類數據,分別爲紅色和藍色,如下圖所示,這些數據特徵是二維的,希望將這些數據投影到一維的一條直線,讓每一種類別數據的投影點儘可能的接近,而紅色和藍色數據中心之間的距離儘可能的大。

  上圖中提供了兩種投影方式,哪一種能更好的滿足我們的標準呢?從直觀上可以看出,右圖要比左圖的投影效果好,因爲右圖的黑色數據和藍色數據各個較爲集中,且類別之間的距離明顯。左圖則在邊界處數據混雜。以上就是LDA的主要思想了,當然在實際應用中,數據是多個類別的,我們的原始數據一般也是超過二維的,投影后的也一般不是直線,而是一個低維的超平面。

3.4 LDA和PCA區別

  LDA用於降維,和PCA有很多相同,也有很多不同的地方,因此值得好好的比較一下兩者的降維異同點。注意,降維只是減小特徵量的個數(即n)而不是減小訓練集的個數(即m)。

相同點

1)兩者均可以對數據進行降維。

2)兩者在降維時均使用了矩陣特徵分解的思想。

3)兩者都假設數據符合高斯分佈。

不同點

1)LDA是有監督的降維方法,而PCA是無監督的降維方法

2)LDA降維最多降到類別數k-1的維數,而PCA沒有這個限制。

3)LDA除了可以用於降維,還可以用於分類。

4)LDA選擇分類性能最好的投影方向,而PCA選擇樣本點投影具有最大方差的方向。這點可以從下圖形象的看出,在某些數據分佈下LDA比PCA降維較優。

3.5 LDA小結

  LDA算法既可以用來降維,又可以用來分類,但是目前來說,主要還是用於降維。在進行圖像識別相關的數據分析時,LDA是一個有力的工具。下面總結下LDA算法的優缺點。

優點

1)在降維過程中可以使用類別的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類別先驗知識。

2)LDA在樣本分類信息依賴均值而不是方差的時候,比PCA之類的算法較優。

缺點

1)LDA不適合對非高斯分佈樣本進行降維,PCA也有這個問題。

2)LDA降維最多降到類別數k-1的維數,如果我們降維的維度大於k-1,則不能使用LDA。當然目前有一些LDA的進化版算法可以繞過這個問題。

3)LDA在樣本分類信息依賴方差而不是均值的時候,降維效果不好。

4)LDA可能過度擬合數據。

5.6 將爲中K值的選擇

  如何選擇k(又稱爲主成分的個數)的值?

  在實際應用中,我們只需利用svd()函數Xapprox。即通過計算差異值來確定k https://blog.csdn.net/u010986753/article/details/97679816
  PCA的原理是,爲了將數據從n維降低到k維,需要找到k個向量,用於投影原始數據,是投影誤差(投影距離)最小。

四、決策樹

4.0 常用的決策樹算法

  常用的決策樹算法有ID3,C4.5,CART三種。三種算法的模型構建思想都十分類似,只是採用了不同的指標。決策樹的構建過程大致如下:

ID3,C4.5決策樹的生成 輸入:訓練集D,特徵集A,閾值eps 輸出:決策樹

  • 若D中所有樣本屬於同一類Ck,則T爲單節點樹,將類Ck作爲該節點的類標記,返回T
  • 若A爲空集,即沒有特徵作爲劃分依據,則T爲單節點樹,並將D中實例數最大的類Ck作爲該節點的類標記,返回T
  • 否則,計算A中各特徵對D的信息增益(ID3)/信息增益比(C4.5),選擇信息增益最大的特徵Ag
  • 若Ag的信息增益(比)小於閾值eps,則置T爲單節點樹,並將D中實例數最大的類Ck作爲該節點的類標記,返回T
  • 否則,依照特徵Ag將D劃分爲若干非空子集Di,將Di中實例數最大的類作爲標記,構建子節點,由節點及其子節點構成樹T,返回T
  • 對第i個子節點,以Di爲訓練集,以A-{Ag}爲特徵集,遞歸地調用1~5,得到子樹Ti,返回Ti

4.1 分類和迴歸樹介紹

  分類迴歸樹算法:CART(Classification And Regression Tree)算法也屬於一種決策樹,和之前介紹了C4.5算法相類似的決策樹。CART採用一種二分遞歸分割的技術,將當前的樣本集分爲兩個子樣本集,使得生成的的每個非葉子節點都有兩個分支。因此,CART算法生成的決策樹是結構簡潔的二叉樹

CART算法是由以下兩部組成:

(1)決策樹生成:基於訓練數據集生成的決策樹,生成的決策樹要儘量大;

(2)決策樹剪枝:用驗證數據集對已生成的樹進行剪枝並選擇最優子樹,用損失函數最小作爲剪枝的標準。

4.2 CART算法步驟

  CART算法由以下兩步組成:

  • 樹的生成:基於訓練數據集生成決策樹,生成的決策樹要儘量大;
  • 樹的剪枝:用驗證數據集對已生成的樹進行剪枝並選擇最優子樹,這時損失函數最小作爲剪枝的標準。

  決策樹的生成就是通過遞歸地構建二叉決策樹的過程,對迴歸樹用平方誤差最小化準則,對分類樹用基尼指數最小化準則,進行特徵選擇,生成二叉樹。

  • 一個迴歸樹對應着輸入空間(即特徵空間)的一個劃分以及在劃分的但單元上的輸出值。 在構建迴歸樹時,主要有兩種不同的樹:
      1) 迴歸樹(Regression Tree),其每個葉節點是單個值
      2) 模型樹(Model Tree),其每個葉節點是一個線性方程
  • 分類樹用基尼指數選擇最優特徵,同時決定該特徵的最優二值切分點。基尼指數:假如總共有K類,樣本屬於第k類的概率爲:pk,則該概率分佈的基尼指數爲:(基尼指數越大,說明不確定性就越大。)

4.3 GINI 指數

GINI 指數
1、是一種不等性度量;
2、是介於 0~1 之間的數,0-完全相等,1-完全不相等;
3、總體內包含的類別越雜亂,GINI指數就越大(跟熵的概念很相似)
其中算法的停止條件有
1、節點中的樣本個數小於預定閾值,
2、樣本集的Gini係數小於預定閾值(此時樣本基本屬於同一類),
3、或沒有更多特徵。

4.4 CART與ID3和C4.5的區別

  • CART樹是二叉樹,而ID3和C4.5可以是多叉樹
  • CART在生成子樹時,選擇一個特徵一個取值作爲切分點,生成兩個子樹
  • 選擇特徵和切分點的依據是Gini指數,選擇Gini指數最小的特徵及切分點生成子樹

4.5 決策樹的減枝

  決策樹的減枝主要是爲了預防過擬合。主要思路是從葉子節點向上回溯,嘗試對某個節點進行剪枝,比較剪枝前後決策樹的損失函數值。最後通過動態規劃(樹形dp,)就可以得到全局最優的剪枝方案。

五、樸素貝葉斯

5.1 樸素貝葉斯介紹

  樸素貝葉斯是一個簡單但令人驚訝的強大的預測建模算法。

  該模型由兩類概率組成,它們可以直接從您的培訓數據中計算:1)每個類的概率;2)給定每個x值的每個類的條件概率。一旦計算出概率模型,就可以利用Bayes定理對新數據進行預測。當數據是實值時,通常假設爲高斯分佈(鐘形曲線),這樣就可以很容易地估計出這些概率。
  樸素貝葉斯之所以被稱爲樸素,是因爲它假定每個輸入變量是獨立的。這是一個強有力的假設和不現實的實際數據,然而,這項技術是非常有效的範圍廣泛的複雜問題。

5.2 樸素貝葉斯分類的優缺點優點

  優點:算法邏輯簡單,易於實現(算法思路很簡單,只要使用貝葉斯公式轉化!)分類過程中時空開銷小(假設特徵相互獨立,只會涉及到二維存儲)
  缺點:理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因爲樸素貝葉斯模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。而在屬性相關性較小時,樸素貝葉斯性能最爲良好。對於這一點,有半樸素貝葉斯之類的算法通過考慮部分關聯性適度改進。

5.3 總結

實際應用場景

  • 文本分類
  • 垃圾郵件過濾
  • 病人分類
  • 拼寫檢查
  • 樸素貝葉斯模型

樸素貝葉斯常用的三個模型有:

  • 高斯模型:處理特徵是連續型變量的情況
  • 多項式模型:最常見,要求特徵是離散數據
  • 伯努利模型:要求特徵是離散的,且爲布爾類型,即true和false,或者1和0

六、K近鄰

6.1 K近鄰介紹

  KNN(K最近鄰分類算法)是一種在機器學習中比較簡單的算法,它的原理如下:對於一個需要分類的物品A,定義某一種刻畫物品之間距離方法,找出該物品最鄰近k個有已知類別的物品,這k物品中出現最多的類別即爲物品A的類別。如下圖:

注:k=3,距離黑點X最近的三個點中,有兩個圓圈是一類,一個三角形是一類,所以判定X是圓圈。
  在KNN算中,最核心的一點是怎麼定義物品之間的距離,這裏我們簡單列舉幾種計算物品距離的方法:歐式距離、曼哈頓距離、切比雪夫距離、傑卡德係數、夾角餘弦、皮爾遜係數。

  關鍵在於如何確定數據實例之間的相似性。如果屬性都是相同的比例尺(例如,以英寸爲單位),最簡單的技術是使用歐幾里德距離,這是一個可以根據每個輸入變量之間的差異直接計算的數字。

  KNN可能需要大量內存或空間來存儲所有數據,但只在需要預測時才執行計算(或學習)。隨着時間的推移,您還可以更新和管理您的培訓實例,以保持預測的準確性。

6.2 KNN 業務實踐

  業務場景1:以應用商店爲例,在用戶下載完一個應用時,觸發一個“大家還下載”的推薦。
  業務場景2:網絡購物中,在“猜你喜歡”場景推薦一批物品給用戶,通過用戶的歷史購物清單,運用傑卡德公式計算用戶與用戶的相關係數。

七、學習矢量量化

7.1 矢量量化介紹

  Vector Quantization常用於數據壓縮,Vector Quantization 這個名字聽起來有些玄乎,其實它本身並沒有這麼高深。大家都知道,模擬信號是連續的值,而計算機只能處理離散的數字信號,在將模擬信號轉換爲數字信號的時候,我們可以用區間內的某一個值去代替着一個區間,比如,[0, 1) 上的所有值變爲 0 ,[1, 2) 上的所有值變成 1 ,如此類推。其這就是一個 VQ 的過程。一個比較正式一點的定義是:  VQ 是將一個向量空間中的點用其中的一個有限子集來進行編碼的過程。
VQ 是將一個向量空間中的點用其中的一個有限子集來進行編碼的過程。並用聚類後的中心點的標籤替代該簇中其他點的標籤,以此達到縮小子集大小,壓縮數據的目的。

  K近鄰的一個缺點是你需要保存你的整個訓練數據集。學習矢量量化算法(簡稱LVQ)是一種人工神經網絡算法,它允許您選擇要保存多少訓練實例,並確切地瞭解這些實例應該是什麼樣子。
  LVQ的表示是碼本向量的集合。這些方法在開始時隨機選擇,並適合於在學習算法的多次迭代中最好地總結訓練數據集。經過學習,碼本向量可以像K近鄰一樣用來進行預測.通過計算每個碼本向量與新數據實例之間的距離,找出最相似的鄰域(最佳匹配碼本向量)。然後返回最佳匹配單元的類值或(在迴歸情況下的實際值)作爲預測。如果您重新確定數據具有相同的範圍,例如0到1,則可以獲得最好的結果。

  如果您發現KNN在您的數據集上提供了良好的結果,請嘗試使用LVQ來減少存儲整個訓練數據集所需的內存。

7.2 總結

  學習矢量量化(Learning Vector Quantization,簡稱LVQ),與1988年提出的一種用於模式分類的有監督學習算法,是一種結構簡單、功能強大的有監督式神經網絡分類算法。典型的學習矢量量化算法有:LVQ1、LVQ2、LVQ3,其中,前兩種算法應用較爲廣泛,尤其以LVQ2應用最爲廣泛和有效。

八、支持向量機

8.1 支持向量機介紹

  支持向量機Support vector machines可能是最流行的機器學習算法之一。支持向量機,英文爲Support Vector Machine,簡稱SV機。它是一種監督式學習的方法,它廣泛的應用於統計分類以及迴歸分析中。支持向量機將向量映射到一個更高維的空間裏,在這個空間裏建立有一個最大間隔超平面。在分開數據的超平面的兩邊建有兩個互相平行的超平面,分隔超平面使兩個平行超平面的距離最大化。

  超平面是分割輸入變量空間的一條線。在支持向量機中,選擇一個超平面來最好地將輸入變量空間中的點按類分離,無論是0類還是1類。在二維中,您可以將其形象化爲一條線,讓我們假設我們所有的輸入點都可以被這條線完全分開。支持向量機學習算法通過超平面找到導致類間最優分離的係數。
  超平面與最近的數據點之間的距離稱爲邊距。能夠將這兩個類分開的最佳或最優超平面是具有最大邊距的線。在定義超平面和構造分類器時,只有這些點是相關的。這些點被稱爲支持向量。它們支持或定義超平面。在實際應用中,採用了一種優化算法來尋找最大裕度係數的值。

  支持向量機可能是最強大的開箱即用的分類器之一,值得在您的數據集上試用。

8.2 支持向量機

  

  • 線性可分SVM:當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性可分支持向量機;表示可以用一根線非常清晰的劃分兩個區域;線到支持向量的距離 d 就是最小的。
  • 線性 SVM:當訓練樣本近似線性可分時,通過軟間隔最大化,學習一個線性支持向量機;表示用一根線劃分區域後,可能存在誤判點,但還是線性的;線到支持向量的距離不一定是最小的,但忽略其他非規則的支持向量。
  • 非線性 SVM:當訓練樣本線性不可分時,通過核技巧和軟間隔最大化,學習一個非線性支持向量機;把低維的非線性轉換爲高維線性。

8.3 邏輯斯蒂迴歸和SVM聯繫

  • LR和SVM都是分類算法
  • LR和SVM都是監督學習算法。
  • LR和SVM都是判別模型。
  • 如果不考慮核函數,LR和SVM都是線性分類算法,也就是說他們的分類決策面都是線性的。
  • LR採用log損失,SVM採用合頁(hinge)損失。
  • LR對異常值敏感,SVM對異常值不敏感(抗燥能力,SVM要強)
  • 計算複雜度不同。對於海量數據,SVM的效率較低,LR效率比較高。
  • SVM的損失函數就自帶正則!!!(損失函數中的1/2||w||^2項),這就是爲什麼SVM是結構風險最小化算法的原因!!!而LR必須另外在損失函數上添加正則項!!!

說明:LR也是可以用核函數的.但LR通常不採用核函數的方法.(計算量太大)

九、套袋隨機林

9.1 套袋隨機林介紹

  隨機森林就是通過集成學習的思想將多棵樹集成的一種算法,它的基本單元是決策樹,而它的本質屬於機器學習的一大分支–集成學習(Ensemble Learning)方法。

  從直觀角度來解釋,每棵樹都是一個分類器(假設現在爲分類問題),那麼對於一個輸入樣本,N棵樹會有N個分類結果。而隨機森林集成了所有的分類投票結果,將投票次數最多的類別指定爲最終的輸出,這就是一種最簡單的Bagging思想。

9.2 隨機森林的優缺點

優點

  • 在當前所有算法中,具有極高的準確率
  • 隨機性的引入,使得隨機森林不容易過擬合
  • 隨機性的引入,使得隨機森林有很好的抗噪聲能力
  • 能夠有效的運行在大數據集上
  • 能夠評估各個特徵在分類問題上的重要性
  • 能夠處理具有高維特徵的輸入樣本,而不需要降維,並且不用做特徵選擇
  • 既能處理離散型數據,也能處理連續型數據,數據集無需規範化
  • 訓練速度快,可以得到變量重要性排序
  • 容易實現並行化
  • 在生成過程中,能夠獲取到內部生成誤差的一種無偏估計
    對於缺省值問題也能夠獲得很好的結果

缺點

  • 當隨機森林中的決策樹個數很多時,訓練需要的空間和時間會較大
  • 隨機森林模型有許多不好解釋的地方,算個黑盒模型

9.3 隨機森林的評價指標–袋外誤差(oob error)

  隨機森林的關鍵問題是如何選擇最優的m(特徵個數),要解決這個問題主要依據袋外誤差率oob error(out-of-bag error)

  隨機森林一個重要的優點是,沒有必要進行交叉驗證或者用一個獨立的測試集來獲得誤差的一個無偏估計。它可以在內部進行評估,也就是說在生成的過程中就可以對誤差建立一個無偏估計。

  在構建每棵樹時,對訓練集使用了不同的bootstrap sample(隨機有放回的抽取)。所以對每棵樹而言(假設對第K棵樹),大約有1/3的訓練實例沒有參與第K棵樹的生成,它們成爲第K棵樹的oob樣本。

而這樣的採樣特點就允許我們進行oob估計,它的計算方法如下:

  • 對每個樣本,計算它作爲oob樣本的樹對它的分類情況(約1/3的樹)
  • 然後以簡單多數投票作爲該樣本的分類結果
  • 最後用誤分個數佔樣本總數的比率作爲隨機森林的oob誤分率。
    注意:oob誤分率是隨機森林泛化誤差的一個無偏估計,它的結構近似於需要大量計算的k折交叉驗證。

9.4 隨機森林的生成過程

  • 從原始訓練集中使用Bootstraping方法隨機有放回採用選出m個樣本,共進行n_tree次採樣,生成n_tree個訓練集
  • 對於n_tree個訓練集,分別訓練n_tree個決策樹模型
  • 對於單個決策樹模型,假設訓練樣本特徵的個數爲n,那麼每次分裂時根據信息增益/信息增益比/Gini指數選擇最好的特徵進行分裂
  • 每棵樹都一直這樣分裂下去,直到該節點的所有訓練樣例都屬於同一類。在決策樹的分裂過程中不需要剪枝
  • 將生成的多棵決策樹組成隨機森林。對於分類問題,按多棵樹分類器投票決定最終分類結果;對於迴歸問題,由多棵樹預測的均值決定最終預測結果。

十、助推和ADABOOST

10.1 Bagging算法(套袋法)

Bagging的算法過程如下:

  • 從原始樣本集中使用Bootstrap方法隨機抽取n個訓練樣本,共進行k輪抽取,得到k個訓練集。(k個訓練集之間相互獨立,元素可以有重複)
  • 對於k個訓練集,我們訓練k個模型(這個k個模型可以選擇決策樹,knn等)
  • 對於分類問題:由投票表決產生分類結構;對於迴歸問題:有k個模型預測結果的均值作爲最後預測結構(所有模型的重要性相同)

10.2 Boosting(提升法)

思路:主要從兩個方面考慮(數據集合和學習器)

boosting的算法過程如下:

  • 對於訓練集的每個樣本建立權值wi,增大被誤分類的樣本的權值
    進行迭代的過程中,每一步迭代都是一個弱分類器,需要用某種策略將其組合,作爲- 最終模型。(例如AdaBoost給每個弱分類器一個權值,將其線性組合爲最終分類器。誤差越小的弱分類器,權值越大)

10.3 Bagging,Boosting的主要區別

  • 樣本選擇上:Bagging採用的是Bootstrap隨機有放回抽樣;而Boosting每一輪的訓練集是不變的,改變的只是每一個樣本的權重。
  • 樣本權重:Bagging使用的是均勻取樣,每個樣本權重相等;Boosting根據錯誤率調整樣本權重,錯誤率越大的樣本權重越大。
  • 預測函數:Bagging所有的預測函數的權重相等;Boosting中誤差越小的預測函數(分類器)權重越大
  • 並行計算:Bagging各個預測函數可以並行生成;Boosting各個預測函數(分類器)必須按照順序迭代生成,就是不能並行計算

10.4 決策樹與集成學習結合得到的新的算法

  • Bagging + 決策樹=隨機森林
  • Boosting + 決策樹=提升樹
  • Gradient Boosting+決策樹=GBDT

10.5 AdaBoost 介紹

  AdaBoost是典型的Boosting算法,屬於Boosting家族的一員。由於採用的損失函數不同,Boosting算法也因此有了不同的類型,AdaBoost就是損失函數爲指數損失的Boosting算法。

10.6 AdaBoost 原理理解

基於Boosting的理解,對於AdaBoost,我們要搞清楚兩點:

  • 每一次迭代的弱學習h(x;am)有何不一樣,如何學習?
    AdaBoost改變了訓練數據的權值,也就是樣本的概率分佈,其思想是將關注點放在被錯誤分類的樣本上,減小上一輪被正確分類的樣本權值,提高那些被錯誤分類的樣本權值。然後,再根據所採用的一些基本機器學習算法進行學習,比如邏輯迴歸。
  • 弱分類器權值βm如何確定?
    AdaBoost採用加權多數表決的方法,加大分類誤差率小的弱分類器的權重,減小分類誤差率大的弱分類器的權重。這個很好理解,正確率高分得好的弱分類器在強分類器中當然應該有較大的發言權。

十一、裝袋法(bagging)和隨機森林(random forests)的區別

  bagging method 和random forests 一般都是應用在決策樹中。

  bagging method 的思想: 假設一個數據集L,通過Boostrap(自助抽樣)有放回的抽樣n次,那麼產生了n個樣本數據集,記爲n個train集。

  • 第一步:我們將這n個train集進行訓練,因此產生了n個基分類器,也可以說是n個決策樹

  • 第二步:利用這n個基分類器對測試集進行預測,因此會得到n個結果。

  • 第三步:採取多數投票(majorty vote):將n個預測的結果出現頻率最高的類作爲總體預測。

  仔細思考下會出現一些新的問題,如果一個數據集有一個很強的預測變量和一些中等強度的預測變量,那麼可以想到,大多數(甚至所有)的樹都會將最強的預測變量用於頂部分裂點,這會造成所有的裝袋法樹看起來都很相似。與不相關的量求平均相比,對許多高度相關的量求平均帶來的方差減小程度是無法與前者相提並論的。在這種情況下,裝袋法與單棵樹相比不會帶來方差的重大降低。這個問題是裝袋法一個很致命的問題。那麼下面我們來看看random forests method.

  random forests 我們稱爲隨機森林,其實隨機森林是對裝袋法的一種改進,隨機森林也需要對自助抽樣訓練集建立一系列的決策樹,這和決策樹類似。不過,隨機森林在建立樹的時候,不和裝袋法一樣,裝袋法建樹的時候是將所有預測變量都考慮進去,而隨機森林則是考慮每一個分裂點時,都是從所有的預測變量p中隨機選取m個預測變量,分裂點所用的預測變量只能從這m個變量中選擇。在每個分裂點處都重新進行抽樣,選出m個預測變量,通常m≈√p,對每一個分裂點來說,這個算法將大部分可用預測變量排除在外,雖然聽起來crazy,但是這個原理是很巧妙的。

  其實當隨機森林中的m=p時,隨機森林和裝袋法是一樣的。隨機森林考慮每個分裂點的子集相對來說比裝袋法少很多。這樣得到的樹的平均值有更小的方差,因而樹的可信度相對來說比較高。

總結

  • 邏輯迴歸通過擬合曲線(或者學習超平面)實現分類
  • 決策樹通過尋找最佳劃分特徵進而學習樣本路徑實現分類
  • 支持向量機通過尋找分類超平面進而最大化類別間隔實現分類
  • 樸素貝葉斯獨闢蹊徑,通過考慮特徵概率來預測分類。

  我應該使用哪種算法?”這個問題的答案取決於許多因素,包括:

  • 數 據的大小、質量和性質;
  • 可用的計算時間;
  • 任務的緊迫性;
  • 你想對數據做什麼。
      即使是經驗豐富的數據科學家在嘗試不同的算法之前,也無法判斷哪種算法的性能最好。儘管有許多其他的機器學習算法,但這些算法是最流行的。如果你是機器學習的新手,這將是一個很好的學習起點。
'''
【乾貨來了|小麥苗IT資料分享】
★小麥苗DB職場乾貨:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w
★小麥苗數據庫健康檢查:https://share.weiyun.com/5lb2U2M
★小麥苗微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
★各種操作系統下的數據庫安裝文件(Linux、Windows、AIX等):鏈接:https://pan.baidu.com/s/19yJdUQhGz2hTgozb9ATdAw  提取碼:4xpv
★小麥苗分享的資料:https://share.weiyun.com/57HUxNi
★小麥苗課堂資料:https://share.weiyun.com/5fAdN5m
★小麥苗課堂試聽資料:https://share.weiyun.com/5HnQEuL
★小麥苗出版的相關書籍:https://share.weiyun.com/5sQBQpY
★小麥苗博客文章:https://share.weiyun.com/5ufi4Dx
★數據庫系列(Oracle、MySQL、NoSQL):https://share.weiyun.com/5n1u8gv
★公開課錄像文件:https://share.weiyun.com/5yd7ukG
★其它常用軟件分享:https://share.weiyun.com/53BlaHX
★其它IT資料(OS、網絡、存儲等):https://share.weiyun.com/5Mn6ESi
★Python資料:https://share.weiyun.com/5iuQ2Fn
★已安裝配置好的虛擬機:https://share.weiyun.com/5E8pxvT
★小麥苗騰訊課堂:https://lhr.ke.qq.com/
★小麥苗博客:http://blog.itpub.net/26736162/
'''

有趣的事,Python永遠不會缺席

歡迎關注小婷兒的博客

  文章內容來源於小婷兒的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解!!!

  如需轉發,請註明出處:小婷兒的博客python    https://blog.csdn.net/u010986753

  CSDN https://blog.csdn.net/u010986753

  博客園 https://www.cnblogs.com/xxtalhr/

有問題請在博客下留言或加作者:
  微信tinghai87605025 聯繫我加微信羣
  QQ87605025
  QQ交流羣:py_data 483766429
  公衆號DB寶

證書說明

  OCP考試說明連接 https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

  OCM考試說明連接 https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

   小婷兒的python正在成長中,其中還有很多不足之處,隨着學習和工作的深入,會對以往的博客內容逐步改進和完善噠。重要的事多說幾遍。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章