算法小知識點

1. Bootstrap 自助法

  1. 一種抽樣方法:有放回地從 N 個樣本中抽樣 n 個樣本
  2. 核心思想:子樣本之於樣本,可以類比樣本之於總體
  3. 適用於小樣本

2. Bagging - Random Forest

  1. Bagging 和 Boosting都是 集成學習(ensemble learning) 領域的基本算法
  2. Bagging (bootstrap aggregation)
  • 從樣本集中用Bootstrap採樣選出n個訓練樣本(放回,因爲別的分類器抽訓練樣本的時候也要用);
  • 在所有屬性上,用這n個樣本訓練分類器(CART or SVM or …);
  • 重複以上兩步m次,就可以得到m個分類器(CART or SVM or …);
  • 將數據放在這m個分類器上跑,最後投票機制(多數服從少數)看到底分到哪一類(分類問題)。
  1. Bagging代表算法 - Random Forest(隨機森林)
  • 用Random的方式(詳見第4點)構造一棵決策樹(CART, Classification and Regression Tree)
  • 用1的方法構造很多決策樹,每棵決策樹都最大可能地進行生長而不進行剪枝,許多決策樹構成一片森林,決策樹之間沒有聯繫
  • 測試數據進入每一棵決策樹,每棵樹做出自己的判斷,然後進行投票選出最終所屬類別(默認每棵樹權重一致)
  1. 隨機森林中Random指:
  • 訓練樣本選擇方面的Random - Bootstrap方法隨機選擇子樣本;
  • 特徵選擇方面的Random - 屬性集中隨機選擇k個屬性,每個樹節點分裂時,從這隨機的k個屬性,選擇最優的。
  1. 隨機森林的優缺點
  • 不容易出現過擬合,因爲選擇訓練樣本的時候就不是全部樣本
  • 既可以處理屬性爲離散值的量,也可以處理屬性爲連續值的量,但是不能給出一個連續型的輸出
  • 可以處理成千上萬的輸入特徵,並確定最重要的特徵,因此被認爲是一個不錯的降維方法。
  • 分類不平衡的情況時,隨機森林是能夠平衡數據集誤差的有效方法,
  1. 注意
  • Bagging樹"並行"生成,如Random Forest;Boosting樹"串行"生成,如Adaboost
  • Boosting中的基模型爲弱模型,而Random Forest中的基樹是強模型(大多數情況)
  • Boosting重採樣的不是樣本,而是樣本的分佈,每次迭代之後,樣本的分佈會發生變化,也就是被分錯的樣本會更多的出現在下一次訓練集中

3. Boosting - Adaboost

  1. Bagging 和 Boosting都是 集成學習(Ensemble Learning) 領域的基本算法
  2. Boosting算法代表 - Adaboost(Adaptive Boosting,自適應提升算法)
  • 針對同一個訓練集訓練不同的分類器(弱分類器),然後進行分類,對於分類正確的樣本權值低,分類錯誤的樣本權值高(通常是邊界附近的樣本),最後的分類器是很多弱分類器的線性疊加(加權組合)
  • Boosting算法更加關注錯分的樣本。這些分錯的樣本,在給下一個分類器的時候權重就得到提高,也就是會影響到下次取訓練樣本的分佈。
  • Adaboost算法中有兩種權重,一種是數據的權重,另一種是弱分類器的權重。其中,數據的權重主要用於弱分類器尋找其分類誤差最小的決策點,找到之後用這個最小誤差計算出該弱分類器的權重
  • AdaBoost算法是模型爲加法模型、損失函數爲指數函數、學習算法爲前向分步算法的二類分類學習方法。
    加法模型、前向分步算法
  1. Adaboost優缺點
  • 不用做特徵篩選,可以使用各種方法構造子分類器,Adaboost算法提供的是框架
  • 相比較於隨機森林,更不用擔心過擬合問題
  • 在每次迭代時候會給噪聲點較大的權重,因此對於噪音數據和異常數據是十分敏感的
  • Adaboost是一種"串行"算法,運行速度慢
  1. 注意
  • Bagging樹"並行"生成,如Random Forest;Boosting樹"串行"生成,如Adaboost
  • Boosting中的基模型爲弱模型,而Random Forest中的基樹是強模型(大多數情況)
  • Boosting重採樣的不是樣本,而是樣本的分佈,每次迭代之後,樣本的分佈會發生變化,也就是被分錯的樣本會更多的出現在下一次訓練集中

4. 模型評估方法

留出法(hold-out)

直接將數據集D劃分爲兩個互斥的部分,其中一部分作爲訓練集S,另一部分用作測試集T。

K-折交叉驗證法(cross-validation)

交叉驗證法先將數據集D劃分爲k個大小相似的互斥子集,每次採用k−1個子集的並集作爲訓練集,剩下的那個子集作爲測試集。進行k次訓練和測試,最終返回k個測試結果的均值。

留一法(leave-one-out,LOO)

留一法是k折交叉驗證k=m(m爲樣本總數)時候的特殊情況。即每次只用一個樣本作測試集。該方法計算開銷較大。

5. 梯度提升樹

  1. 梯度提升決策樹(Gradient Boosting Decision Tree - CBDT)也叫做累加回歸樹(Multiple Additive Regression Tree - MART),梯度提升樹是以 CART 作爲基函數,採用加法模型和前向分步算法的一種梯度提升方法。
  2. GBDT中的樹是迴歸樹(不是分類樹),GBDT用來做迴歸預測,調整後也可以用於分類。
  3. GBDT也是Boosting家族的成員。與Adaboost的相同點 - GBDT也是迭代,使用了前向分佈算法;不同點 - 弱學習器限定了只能使用CART迴歸樹模型,同時GBDT是基於殘差學習的算法,沒有AdaBoost中的樣本權重的概念。
  4. 迴歸樹:迴歸樹總體流程類似於分類樹,區別在於,迴歸樹的每一個節點都會得一個預測值,以年齡爲例,該預測值等於屬於這個節點的所有人年齡的平均值。分枝是窮舉每一個特徵的每個閾值找最好的分割點,但衡量最好的標準不再是ID3中的最大熵,而是最小化平方誤差,通過最小化平方誤差能夠找到最可靠的分枝依據。
  5. 提升樹:提升樹是迭代多棵迴歸樹來共同決策。當採用平方誤差損失函數時,每一棵迴歸樹學習的是之前所有樹的結論和殘差,擬合得到一個當前的殘差迴歸樹。殘差 = 真實值 - 預測值 。提升樹即是整個迭代過程生成的迴歸樹的累加。

6. ID3、C4.5、CART

  1. ID3
  • ID3算法是以信息論爲基礎,以信息熵和信息增益度爲衡量標準,從而實現對數據的歸納分類。每次根據“最大信息熵增益”選取當前最佳的特徵來分割數據,並按照該特徵的所有取值來切分,也就是說如果一個特徵有4種取值,數據將被切分4份,一旦按某特徵切分後,該特徵在之後的算法執行中,將不再起作用。
  • 最大信息熵增益,即信息不確定性減少的程度最大。
  • ID3算法計算每個屬性的信息增益,並選取具有最高增益的屬性作爲給定的測試屬性。在建立決策樹的過程中,根據特徵屬性劃分數據,使得原本“混亂”的數據的熵(混亂度)減少,按照不同特徵劃分數據熵減少的程度會不一樣。在ID3中選擇熵減少程度最大的特徵來劃分數據(貪心),也就是“最大信息熵增益”原則。
  • ID3採用的信息增益度量存在一個缺點,它一般會優先選擇有較多屬性值的Feature,因爲屬性值多的Feature會有相對較大的信息增益。
  1. C4.5
  • C4.5算法核心思想是ID3算法,是ID3算法的改進,改進方面有四方面,第一就是用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足。第二就是在樹構造過程中進行剪枝。第三就是能處理連續(非離散)的數據。第四就是能處理不完整的數據。
  • 信息增益率=信息增益/IV(a),說明信息增益率是信息增益除了一個屬性a的固有值得來的。
  • 增益率準則其實對可取類別數目較少的特徵有所偏好,於是C4.5算法不直接選擇增益率最大的候選劃分屬性,候選劃分屬性中找出信息增益高於平均水平的屬性(這樣保證了大部分好的的特徵),再從中選擇增益率最高的。
  1. CART
  • ID3和C4.5雖然在對訓練樣本集的學習中可以儘可能多的挖掘信息,但其生成的決策樹分支較大,規模較大。爲了簡化決策樹的規模,提高生成決策樹的效率,就出現了根據基尼指數來選擇的CART。
  • CART爲分類和迴歸樹,既可以用於分類也可以用於迴歸。對迴歸樹用平方誤差最小準則,對分類樹用基尼指數最小化準則。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章