算法小知識點
1. Bootstrap 自助法
- 一種抽樣方法:有放回地從 N 個樣本中抽樣 n 個樣本
- 核心思想:子樣本之於樣本,可以類比樣本之於總體
- 適用於小樣本
2. Bagging - Random Forest
- Bagging 和 Boosting都是 集成學習(ensemble learning) 領域的基本算法
- Bagging (bootstrap aggregation):
- 從樣本集中用Bootstrap採樣選出n個訓練樣本(放回,因爲別的分類器抽訓練樣本的時候也要用);
- 在所有屬性上,用這n個樣本訓練分類器(CART or SVM or …);
- 重複以上兩步m次,就可以得到m個分類器(CART or SVM or …);
- 將數據放在這m個分類器上跑,最後投票機制(多數服從少數)看到底分到哪一類(分類問題)。
- Bagging代表算法 - Random Forest(隨機森林):
- 用Random的方式(詳見第4點)構造一棵決策樹(CART, Classification and Regression Tree)
- 用1的方法構造很多決策樹,每棵決策樹都最大可能地進行生長而不進行剪枝,許多決策樹構成一片森林,決策樹之間沒有聯繫
- 測試數據進入每一棵決策樹,每棵樹做出自己的判斷,然後進行投票選出最終所屬類別(默認每棵樹權重一致)
- 隨機森林中Random指:
- 訓練樣本選擇方面的Random - Bootstrap方法隨機選擇子樣本;
- 特徵選擇方面的Random - 屬性集中隨機選擇k個屬性,每個樹節點分裂時,從這隨機的k個屬性,選擇最優的。
- 隨機森林的優缺點:
- 不容易出現過擬合,因爲選擇訓練樣本的時候就不是全部樣本
- 既可以處理屬性爲離散值的量,也可以處理屬性爲連續值的量,但是不能給出一個連續型的輸出
- 可以處理成千上萬的輸入特徵,並確定最重要的特徵,因此被認爲是一個不錯的降維方法。
- 分類不平衡的情況時,隨機森林是能夠平衡數據集誤差的有效方法,
- 注意:
- Bagging樹"並行"生成,如Random Forest;Boosting樹"串行"生成,如Adaboost
- Boosting中的基模型爲弱模型,而Random Forest中的基樹是強模型(大多數情況)
- Boosting重採樣的不是樣本,而是樣本的分佈,每次迭代之後,樣本的分佈會發生變化,也就是被分錯的樣本會更多的出現在下一次訓練集中
3. Boosting - Adaboost
- Bagging 和 Boosting都是 集成學習(Ensemble Learning) 領域的基本算法
- Boosting算法代表 - Adaboost(Adaptive Boosting,自適應提升算法):
- 針對同一個訓練集訓練不同的分類器(弱分類器),然後進行分類,對於分類正確的樣本權值低,分類錯誤的樣本權值高(通常是邊界附近的樣本),最後的分類器是很多弱分類器的線性疊加(加權組合)
- Boosting算法更加關注錯分的樣本。這些分錯的樣本,在給下一個分類器的時候權重就得到提高,也就是會影響到下次取訓練樣本的分佈。
- Adaboost算法中有兩種權重,一種是數據的權重,另一種是弱分類器的權重。其中,數據的權重主要用於弱分類器尋找其分類誤差最小的決策點,找到之後用這個最小誤差計算出該弱分類器的權重。
- AdaBoost算法是模型爲加法模型、損失函數爲指數函數、學習算法爲前向分步算法的二類分類學習方法。
- Adaboost優缺點:
- 不用做特徵篩選,可以使用各種方法構造子分類器,Adaboost算法提供的是框架
- 相比較於隨機森林,更不用擔心過擬合問題
- 在每次迭代時候會給噪聲點較大的權重,因此對於噪音數據和異常數據是十分敏感的
- Adaboost是一種"串行"算法,運行速度慢
- 注意:
- 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. 梯度提升樹
- 梯度提升決策樹(Gradient Boosting Decision Tree - CBDT)也叫做累加回歸樹(Multiple Additive Regression Tree - MART),梯度提升樹是以 CART 作爲基函數,採用加法模型和前向分步算法的一種梯度提升方法。
- GBDT中的樹是迴歸樹(不是分類樹),GBDT用來做迴歸預測,調整後也可以用於分類。
- GBDT也是Boosting家族的成員。與Adaboost的相同點 - GBDT也是迭代,使用了前向分佈算法;不同點 - 弱學習器限定了只能使用CART迴歸樹模型,同時GBDT是基於殘差學習的算法,沒有AdaBoost中的樣本權重的概念。
- 迴歸樹:迴歸樹總體流程類似於分類樹,區別在於,迴歸樹的每一個節點都會得一個預測值,以年齡爲例,該預測值等於屬於這個節點的所有人年齡的平均值。分枝是窮舉每一個特徵的每個閾值找最好的分割點,但衡量最好的標準不再是ID3中的最大熵,而是最小化平方誤差,通過最小化平方誤差能夠找到最可靠的分枝依據。
- 提升樹:提升樹是迭代多棵迴歸樹來共同決策。當採用平方誤差損失函數時,每一棵迴歸樹學習的是之前所有樹的結論和殘差,擬合得到一個當前的殘差迴歸樹。殘差 = 真實值 - 預測值 。提升樹即是整個迭代過程生成的迴歸樹的累加。
6. ID3、C4.5、CART
- ID3:
- ID3算法是以信息論爲基礎,以信息熵和信息增益度爲衡量標準,從而實現對數據的歸納分類。每次根據“最大信息熵增益”選取當前最佳的特徵來分割數據,並按照該特徵的所有取值來切分,也就是說如果一個特徵有4種取值,數據將被切分4份,一旦按某特徵切分後,該特徵在之後的算法執行中,將不再起作用。
- 最大信息熵增益,即信息不確定性減少的程度最大。
- ID3算法計算每個屬性的信息增益,並選取具有最高增益的屬性作爲給定的測試屬性。在建立決策樹的過程中,根據特徵屬性劃分數據,使得原本“混亂”的數據的熵(混亂度)減少,按照不同特徵劃分數據熵減少的程度會不一樣。在ID3中選擇熵減少程度最大的特徵來劃分數據(貪心),也就是“最大信息熵增益”原則。
- ID3採用的信息增益度量存在一個缺點,它一般會優先選擇有較多屬性值的Feature,因爲屬性值多的Feature會有相對較大的信息增益。
- C4.5:
- C4.5算法核心思想是ID3算法,是ID3算法的改進,改進方面有四方面,第一就是用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足。第二就是在樹構造過程中進行剪枝。第三就是能處理連續(非離散)的數據。第四就是能處理不完整的數據。
- 信息增益率=信息增益/IV(a),說明信息增益率是信息增益除了一個屬性a的固有值得來的。
- 增益率準則其實對可取類別數目較少的特徵有所偏好,於是C4.5算法不直接選擇增益率最大的候選劃分屬性,候選劃分屬性中找出信息增益高於平均水平的屬性(這樣保證了大部分好的的特徵),再從中選擇增益率最高的。
- CART:
- ID3和C4.5雖然在對訓練樣本集的學習中可以儘可能多的挖掘信息,但其生成的決策樹分支較大,規模較大。爲了簡化決策樹的規模,提高生成決策樹的效率,就出現了根據基尼指數來選擇的CART。
- CART爲分類和迴歸樹,既可以用於分類也可以用於迴歸。對迴歸樹用平方誤差最小準則,對分類樹用基尼指數最小化準則。