這兩天學的是随機森林 、提升算法、GBDT、Adaboost算法,今天導師讓我們沒事的時候看看論文,學習機器學習和深度學習,現在學習這些知識終于成為了“合法”(前些天都是自己抽時間學的),導師看到了就不樂意了。視訊看完了,大概知道講的什麼,可是隻是大概還不夠啊,我得一點點往下整理啊,開講了!
前邊講到了決策樹,是一種分類算法,建構一棵樹(分類器)進行分類。內建學習思想是将若幹個學習器(分類器和回歸器)組合之後産生一個新學習器。
弱分類器(weak learner) 指那些分類準确率稍好于随機猜測,比如準确率在60%-80%,反之90%以上的準确率成為強分類器。
為什麼要學習內建學習?
- 若分類器間存在一定的差異性,這會導緻分類的邊界不同,也就是說可能存在錯誤。那麼将多個弱分類器合并後,就可以得到更加合理的邊界,減少整體的錯誤率,實作更好的效果。
- 對于資料集過大或者過小,可以分别進行劃分和有放回地操作産生不同的資料子集,然後使用資料子集訓練不同的分類器,最終再合并成為一個大的分類器。
- 如果資料的劃分邊界過于複雜, 使用線性模型很難描述情況,那麼可以訓練多個模型,然後再進行模型的融合。
- 對于多個異構的特征集的時候,很難進行融合,那麼可以考慮每個資料集建構一個分類模型,然後再将多個模型融合。比如:ABC是一個特征集,BCD是一個特征集,這個時候可以用ABC訓練模型m1,BCD訓練模型m2,BC訓練模型m3,最後把模型m1,m2,m3做一個融合。
內建算法的成功之處在于保證弱分類器的多樣性。而且內建不穩定的算法也能得到一個比較明顯的提升。
內建學習的一個直覺了解:如下圖三個弱分類器進行線性組合,得到一個融合在一起的強分類器,
常見的內建學習思想:
- Bagging
- Boosting
- Stacking
Bagging方法
一、bagging方法原理
- 此方法又叫自舉彙聚法(Bootstrap Aggregating),其思想是:在原始資料集上通過有放回的抽樣的方式,更新選擇出S個新資料集來分别訓練S個分類器的內建技術(這些模型的訓練資料允許出現重複的資料)
- Bagging方法訓練出來的模型在預測新樣本分類的時候,會使用多數投票或者求均值的方式來統計最終的分類效果。
- Bagging方法的弱學習分類器可以是基本的算法模型,eg:Linear,ridge,Lasso, Logistic, Softmax, ID3,
-
Bagging方式是有放回的抽樣,并且每個子集的樣本數量必須和原始樣本數量一緻,但是子集中允許存在重複資料。
二、訓練過程
三、決策過程 學習器1會有一個結果,學習器2有一個結果,,,學習器s有一個結果,最後把這幾個結果進行求均值或者多數投票。
随機森林(Random Forest)
一、算法原理
- 從原始樣本集(n個樣本)中用Bootstrap采樣(有放回重采樣)選出n個樣本;
- 從所有屬性中随機選擇K個屬性,選擇出最佳分割屬性作為節點建立決策樹;
- 重複以上兩步m次,即建立m棵決策樹;
-
這m個決策樹形成随機森林,通過投票表決結果決定資料屬于那一類。
建構成的決策樹,有如下操作:
,建構了多棵決策樹,第一棵決策樹的第二個節點認為目前是2,第二棵認為目前節點是2,第三棵認為目前節點是1,那個最終通過多數投票認為目前預測是2。
加入目前森林由三顆決策樹構成的,決策樹一第一個節點預測的一條資料值為,第二棵決策樹第一個節點預測為2,第三棵決策樹預測為3,那麼怎樣區分呢?通過一個機率的方法,請看下圖,第三棵決策樹認為目前預測的3為90%,那麼就認為這條資料的值為3。
,總之還是用過多數投票的方式進行決策。
随機森林中決策樹分裂特征
随機森林是在多個特征中,選擇最優的一個,而随機森林中的決策樹是從多個待選特征中,随機抽出幾個待選特征,然後再從随機選擇的特征中找出最優的一個。
二、随機森林的推廣
RF算法在實際應用中具有比較好的特性,應用也比較廣泛,主要應用在:分類、回歸、特征轉換、異常點檢測等。常見的RF變種算法如下:
- Extra Tree
- Totally Random Trees Embedding(TRTE)
-
Isolation Forest
Extra Tree
Extra Tree是RF的一個變種,原理基本和RF一樣,差別如下:
- RF會随機采樣來作為子決策樹的訓練集,而Extra Tree每個子決策樹采用原始資料集訓練;
-
-
RF在選擇劃分特征點的時候會和傳統決策樹一樣,會基于資訊增益、資訊增益率、基尼系數、均方差等原則來選擇最優特征值;而Extra Tree會随機的選擇一個特征值來劃分決策樹。
Extra Tree因為是随機選擇特征值的劃分點,這樣會導緻決策樹的規模一般大于
RF所生成的決策樹。也就是說Extra Tree模型的方差相對于RF進一步減少。在某
些情況下,Extra Tree的泛化能力比RF的強。
Totally Random Trees Embedding(TRTE)
TRTE是一種非監督的資料轉化方式。将低維的資料集映射到高維,進而讓映射
到高維的資料更好的應用于分類回歸模型。
TRTE算法的轉換過程類似RF算法的方法,建立T個決策樹來拟合資料。當決策樹建構完成後,資料集裡的每個資料在T個決策樹中葉子節點的位置就定下來了,将位置資訊轉換為向量就完成了特征轉換操作。
案例:有3棵決策樹,每棵決策樹有5個葉子節點,某個資料x劃分到第一個決策樹的第3個葉子節點,第二個決策樹的第一個葉子節點,第三個決策樹的第第五個葉子節點,那麼最終的x映射特征編碼為:(0,0,1,0,0, 1,0,0,0,0, 0,0,0,0,1)
Isolation Forest(IForest)
IForest是一種異常點檢測算法,使用類似RF的方式來檢測異常點;IForest算法和RF算法的差別在于:
-
- 在随機采樣的過程中,一般隻需要少量資料即可;
- 在進行決策樹建構過程中,IForest算法會随機選擇一個劃分特征,并對劃分特征随機選擇一個劃分門檻值;
-
IForest算法建構的決策樹一般深度max_depth是比較小的。
對于異常點的判斷,則是将測試樣本x拟合到T棵決策樹上。計算在每棵樹上該樣本的葉子節點的深度h t (x)。進而計算出平均深度h(x);然後就可以使用下列公式計算樣本點x的異常機率值,p(s,m)的取值範圍為[0,1],越接近于1,則是異常點的機率越大。
RF随機森林總結
RF的主要優點:
- 訓練可以并行化,對于大規模樣本的訓練具有速度的優勢;
- 由于進行随機選擇決策樹劃分特征清單,這樣在樣本次元比較高的時候,仍然具有比較高的訓練性能;
- 給以給出各個特征的重要性清單;
- 由于存在随機抽樣,訓練出來的模型方差小,泛化能力強;
- RF實作簡單;
-
對于部分特征的缺失不敏感。
RF的主要缺點:
- 在某些噪音比較大的特征上,RF模型容易陷入過拟合;
- 取值比較多的劃分特征對RF的決策會産生更大的影響,進而有可能影響模型的效果。
Boosting提升算法
一、算法原理
- 提升算法是一種機器學習技術,可以用于回歸和分類中,它每一步都産生弱預測模型(如決策樹),并權重累加到總模型中;如果每一步的弱預測模型的生成都是依據損失函數的梯度方式的,那麼就稱為梯度提升(Gradientboosting);
-
提升技術的意義:如果一個問題存在弱預測模型,那麼可以通過提升技術的辦法得到一個強預測模型;
二、Boosting算法直覺了解圖
上圖是将訓練好的多個弱學習器權重融合成為一個強分類器。
三、常見的Boosting方法
- AdaBoost
-
Gradient Boosting(GBT/GBDT/GBRT)
1. AdaBoost算法原理
AdaBoost(Adaptive适應的 Boosting)是一種疊代算法。每輪疊代中都會在訓練集上産生一個新的學習器,然後使用該學習器對所有樣本進行預測,以評估每個樣本的重要性(Informative)。換句話來講就是,算法會為每個樣本賦予一個權重,每次用訓練好的學習器标注/預測各個樣本,如果某個樣本點被預測的越正确,則将其權重降低;否則提高樣本的權重。權重越高的樣本在下一個疊代訓練中所占的比重就越大,也就是說越難區分的樣本在訓練過程中會變得越重要;
整個疊代過程直到錯誤率足夠小或者達到一定的疊代次數為止。
Adaboost算法将基本分類器的線性組合作為強分類器,同時給分類誤差率較小的基本分類器以大的權值,給分類誤差率較大的基分類器以小的權重值,建構的線性組合為:
樣本權重的例子第1步結束後,綠線左邊分類錯誤的紅色樣本權重,于是第2步就再把權重大的紅色分開。第3步的時候,在最下邊畫一條線,此線段認為上邊是藍色的,下邊是紅色的。第4步發現兩個藍色的仍然是錯誤的,繼續加大權重,繼續疊代分類。繼續第5步,接着第6步,把上邊每一步的疊代結果進行融合得到了第6步的結果:變成一個一個的框框的形式。
2,損失函數
損失函數其實就是錯誤率,I(true)=1.I(false)=0,I(G(x)!=yi)的意思是,如果分類錯誤了,傳回1,分類正确了傳回0;這樣把所有的分類錯誤的樣本,進行累加,最後除n得到的就是錯誤的占比(錯誤率)。
我把這個都寫在紙上了,歡迎一起讨論哦。
梯度提升疊代決策樹GBDT
GBDT(Gradient Boosting Decison Tree)也是Boosting算法的一種,但是和AdaBoost算法不同,差別如下:AdaBoost算法是利用前一輪的的弱學習器的誤差來更新樣本權重值,然後一輪一輪地疊代。GBDT也是疊代,但是GBDT要求弱學習器必須是CART模型,而且GBDT在模型訓練的時候,是要求模型預測的樣本損失盡可能的小。
梯度提升疊代決策樹GBDT直覺了解
以殘差作為新的樣本特征值:
假如現在新來了一個樣本,收入值大于1K,并且上網大于·1H,那麼此時就認為,這個人的年齡為26歲。
給定步長的時候,給定一個步長step(step>1),在建構下一棵樹的時候使用step*殘內插補點作為輸入值,這樣可以防止過拟合。
梯度提升疊代決策樹GBDT,由三部分組成,DT(Regression Decistion Tree)、GB(Gradient Boosting)
和Shrinkage(衰減)。
由多棵決策樹組成,所有樹的結果累加起來就是最終結果。
疊代決策樹和随機森林的差別:
1.随機森林使用抽取不同的樣本建構不同的子樹,也就是說第m棵樹的建構和前m-1棵樹的結果是沒有關系的。
2.疊代決策樹在建構子樹的時候,使用之前子樹建構結果後形成的殘差作為輸入資料建構下一個子樹;然後最終預測的時候按照子樹建構的順序進行預測,并将預測結果相加。
GBDT算法原理
給定輸入向量X和輸出變量Y組成的若幹訓練樣本,(X1,Y1,)(X2,Y2)…(Xn,Yn),目标是找到近似函數F(x),使得損失函數L(Y,F(x))最小。
L損失函數一般采用最小二乘損失函數或者絕對值損失函數:
最優解為:
假定F(X)是一族最優基函數F(X)的權重和,那麼為了防止每個學習器能力過強,可能導緻過拟合,給定一個縮放系數:
以貪心算法的思想擴張到**F(X),**求最優解f,
用貪心算法在每次選擇最優基函數f時,仍然困難,使用梯度下降的方法近似計算。
在給定基函數F0(X)
這個函數是找到一個葉子的最優解,最優解也就是一個常數C。根據梯度下降計算計算導數值:
(實際值和預測值之間的偏內插補點),使用資料
最後更新疊代模型:
,
GBDT回歸算法和分類算法的差別
兩者的差別就選擇不同的損失函數。
回歸算法選擇的損失函數一般式均方差(最小二乘)或者絕對值誤差:
而分類算法中一般的損失函數選擇對數函數來表示(資訊熵):
GBDT總結:
GBDT的優點:
可以處理連續值和離散值;
在相對少的調參情況下,模型的預測效果也會不錯;
模型的魯棒性比較強。
GBDT的缺點如下:
由于弱學習器之間存在關聯關系,難以并行訓練模型。
Bagging、Boosting的差別
-
樣本選擇:Bagging算法是有放回的随機采樣;Boosting算法是每一輪訓練集不變,隻是訓練集中
的每個樣例在分類器中的權重發生變化,而權重根據上一輪的分類結果進行調整;
-
樣例權重:Bagging使用随機抽樣,樣例的權重;Boosting根據錯誤率不斷的調整樣例的權重值,
錯誤率越大則權重越大;
- 預測函數:Bagging所有預測模型的權重相等;Boosting算法對于誤差小的分類器具有更大的權重。
-
并行計算:Bagging算法可以并行生成各個基模型;Boosting理論上隻能順序生産,因為後一個模
型需要前一個模型的結果;
- Bagging是減少模型的variance(方差);Boosting是減少模型的Bias(偏度)。
-
Bagging裡每個分類模型都是強分類器,因為降低的是方差,方差過高需要降低是過拟合;
Boosting裡每個分類模型都是弱分類器,因為降低的是偏度,偏度過高是欠拟合。