機器學習之整合學習(二)

2022-05-24 18:39:11 字數 2399 閱讀 4377

1.隨機森林(rf)

rf是對bagging的進化版,首先都是有放回的進行取樣,獲得n個訓練集從而訓練n個弱分類器,但是rf在隨機選取的訓練集的基礎上對於特徵的選擇也是隨機的,隨機的選取一部分的特徵進行弱分類器的構建,同時在劃分建樹的過程中也是從這些隨機選取的部分特徵中選擇最優的特徵。(使用的為同質個體學習器樹模型,對於分類問題的整合策略為投票表決法,對於回歸問題的整合策略為平均法)

2.adaboost

adaboost是先為訓練資料賦予相等的乙個權重,然後基於訓練資料訓練出乙個弱分類器,隨後計算出該分類器的錯誤率(錯誤分類的樣本/所有樣本的數目),再結合錯誤率對每個樣本的權重進行更新,使得分錯的樣本其權重變大,同時還會結合錯誤率為每個分類器賦予不同的權重值。(使用的為同質個體學習器樹模型,對於分類問題的整合策略為加權表決法,對於回歸問題的整合策略為採用的是對加權的弱學習器取權重中位數對應的弱學習器作為強學習器的方法)

3.gbdt(gradient boosting decision tree)

首先需要明確一點,gbdt中的樹都是回歸樹,為什麼?因為該演算法由多棵決策樹組成,所有樹的結論累加起來做最終答案。回歸樹用於**實數值,只有實數值其加減才是有意義的,若用分類樹,類別的相加毫無意義。

梯度提公升同其他boosting方法一樣,通過整合(ensemble)多個弱學習器,通常是決策樹,來構建最終的**模型,boosting方法通過分步迭代(stage-wise)的方式來構建模型,在迭代的每一步構建的弱學習器都是為了彌補已有模型的不足(就是不斷的對負梯度進行擬合,最小化損失函式)

對於建樹過程可以參考:

乙個建樹過程的簡單案例:

什麼時候建樹停止,根據以下設定的值

gbdt屬於一種加法模型,通過前向分布演算法進行求解。

對於回歸問題損失函式一般用平方差,它的優點是實現簡單便於理解,但是它的缺點也很突出,對於異常值的點會因為平方而得到放大,使得模型的魯棒性變差。通過建樹的過程可以發現,第二棵樹是對第一顆樹的殘差進行擬合,但是這裡有一點需要明確,因為案例中所給的損失函式是平方損失函式,因此對它求導之後恰巧和殘差的計算方法相同,所以說gbdt並不是說不斷的對殘差進行擬合,而是對負梯度進行擬合,那裡的殘差應該是理解為負梯度,上面也分析了平方損失函式的缺點,所以可以把損失函式換成別的損失函式(回歸問題常用的還有絕對值損失函式和huber損失函式(對於遠離中心值的點使用絕對值損失函式,對於離中心值比較近的點使用平方差損失函式)),一定要明確gbdt是不斷對負梯度進行擬合,只是損失函式為平方損失函式時梯度演算法恰巧和殘差相同,換用其它損失函式負梯度不一定和殘差相等,這時候可以稱為偽殘差。跟普通的梯度下降比,這裡的引數是乙個模型,梯度也是通過學習到的乙個模型,相當於模型的梯度下降

。對於分類問題,gbdt的分類演算法從思想上和gbdt的回歸演算法沒有區別,但是由於樣本輸出不是連續的值,而是離散的類別,導致我們無法直接從輸出類別去擬合類別輸出的誤差。

為了解決這個問題,主要有兩個方法,乙個是用指數損失函式,此時gbdt退化為adaboost演算法。另一種方法是用類似於邏輯回歸的對數似然損失函式的方法。也就是說,我們用的是類別的**概率值和真實概率值的差來擬合損失。

這個損失函式並不是像logistic回歸的損失函式那樣是通過極大似然推導出來的,而是設計出來的。

4.xgboost

對於xgboost講解最好的文章:

通過一步步分析推導來理解

xgboost為什麼用二階泰勒展開

關於xgboost用泰勒二階展開的原因,主要有兩點:

1)xgboost官網上有說,當目標函式是mse時,展開是一階項(殘差)+二階項的形式(官網說這是乙個nice form),而其他目標函式,如logloss的展開式就沒有這樣的形式。為了能有個統一的形式,所以採用泰勒展開來得到二階項,這樣就能把mse推導的那套直接復用到其他自定義損失函式上。簡短來說,就是為了統一損失函式求導的形式以支援自定義損失函式。這是從為什麼會想到引入泰勒二階的角度來說的。

2)二階資訊本身就能讓梯度收斂更快更準確。這一點在優化演算法裡的牛頓法里已經證實了。可以簡單認為一階導指引梯度方向,二階導指引梯度方向如何變化。這是從二階導本身的性質,也就是為什麼要用泰勒二階展開的角度來說的。

機器學習之整合學習

整合學習 ensemble learning 通過構建並結合多個弱學習器來完成學習任務。一般來說整合學習可以分為三大類 bagging又叫做自舉匯聚法,思想是 常見的推廣演算法有 extra tree是隨機森林的變種,原理和隨機森林一樣,區別如下 主要用於異常點檢測 在隨機取樣的過程中,一般只需要少...

機器學習演算法之整合學習

在機器學習問題中,對於乙個複雜的任務來說,能否將很多的機器學習演算法組合在一起,這樣計算出來的結果會不會比使用單一的演算法效能更好?這樣的思路就是整合學習方法。三個臭皮匠,頂個諸葛亮。實際操作中,整合學習把大大小小的多種演算法融合在一起,共同協作來解決乙個問題。這些演算法可以是不同的演算法,也可以是...

機器學習之整合學習(一)

詳細參考 首先明確整合學習它本身不是乙個單獨的機器學習演算法,而是通過構建並結合多個機器學習器來完成學習任務。整合學習有兩個主要的問題需要解決,第一是如何得到若干個個體學習器,第二是如何選擇一種結合策略,將這些個體學習器集合成乙個強學習器。對於個體學習器第一種就是所有的個體學習器都是乙個種類的,或者...