Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting的區別

來源:互聯網
上載者:User

標籤:blog   c   http   a   strong   使用   

引自http://blog.csdn.net/xianlingmao/article/details/7712217

Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting

這些術語,我經常搞混淆,現在把它們放在一起,以示區別。(部分文字來自網路,由于是之前記的筆記,忘記來源了,特此向作者抱歉)

Bootstraping: 名字來自成語“pull up by your own bootstraps”,意思是依靠你自己的資源,稱為自助法,它是一種有放回的抽樣方法,它是非參數統計中一種重要的估計統計量方差進而進行區間估計的統計方法。其核心思想和基本步驟如下:
  (1) 採用重抽樣技術從原始樣本中抽取一定數量(自己給定)的樣本,此過程允許重複抽樣。 
  (2) 根據抽出的樣本計算給定的統計量T。 
  (3) 重複上述N次(一般大於1000),得到N個統計量T。 
  (4) 計算上述N個統計量T的樣本方差,得到統計量的方差。
  應該說Bootstrap是現代統計學較為流行的一種統計方法,在小樣本時效果很好。通過方差的估計可以構造信賴區間等,其運用範圍得到進一步延伸。

Jackknife: 和上面要介紹的Bootstrap功能類似,只是有一點細節不一樣,即每次從樣本中抽樣時候只是去除幾個樣本(而不是抽樣),就像小刀一樣割去一部分。

(pku, sewm,shinningmonster.)

============================================================================================================================

下列方法都是上述Bootstraping思想的一種應用。

bagging:bootstrap aggregating的縮寫。讓該學習演算法訓練多輪,每輪的訓練集由從初始的訓練集中隨機取出的n個訓練樣本組成,某個初始訓練樣本在某輪訓練集中可以出現多次或根本不出現,訓練之後可得到一個預測函數序列h_1,? ?h_n ,最終的預測函數H對分類問題採用投票方式,對迴歸問題採用簡單平均方法對新樣本進行判別。

[訓練R個分類器f_i,分類器之間其他相同就是參數不同。其中f_i是通過從訓練集合中(N篇文檔)隨機取(取後放回)N次文檔構成的訓練集合訓練得到的。對於新文檔d,用這R個分類器去分類,得到的最多的那個類別作為d的最終類別。]  boosting: 其中主要的是AdaBoost(Adaptive Boosting)。初始化時對每一個訓練例賦相等的權重1/n,然後用該學演算法對訓練集訓練t輪,每次訓練後,對訓練失敗的訓練例賦以較大的權重,也就是讓學習演算法在後續的學習中集中對比較難的訓練例進行學習,從而得到一個預測函數序列h_1,?, h_m , 其中h_i也有一定的權重,預測效果好的預測函數權重較大,反之較小。最終的預測函數H對分類問題採用有權重的投票方式,對迴歸問題採用加權平均的方法對新樣本進行判別。(類似Bagging方法,但是訓練是串列進行的,第k個分類器訓練時關注對前k-1分類器中錯分的文檔,即不是隨機取,而是加大取這些文檔的機率。) (pku, sewm,shinningmonster.)  Bagging與Boosting的區別:二者的主要區別是取樣方式不同。Bagging採用均勻取樣,而Boosting根據錯誤率來取樣,因此Boosting的分類精度要優於Bagging。Bagging的訓練集的選擇是隨機的,各輪訓練集之間相互獨立,而Boostlng的各輪訓練集的選擇與前面各輪的學習結果有關;Bagging的各個預測函數沒有權重,而Boosting是有權重的;Bagging的各個預測函數可以並行產生,而Boosting的各個預測函數只能順序產生。對於象神經網路這樣極為耗時的學習方法。Bagging可通過並行訓練節省大量時間開銷。bagging和boosting都可以有效地提高分類的準確性。在大多數資料集中,boosting的準確性比bagging高。在有些資料集中,boosting會引起退化--- Overfit。
Boosting思想的一種改進型 AdaBoost方法在郵件過濾、文本分類方面都有很好的效能。 

gradient boosting(又叫Mart, Treenet):Boosting是一種思想,Gradient Boosting是一種實現Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型損失函數的梯度下降方向。損失函數(loss function)描述的是模型的不靠譜程度,損失函數越大,則說明模型越容易出錯。如果我們的模型能夠讓損失函數持續的下降,則說明我們的模型在不停的改進,而最好的方式就是讓損失函數在其梯度(Gradient)的方向上下降。

Rand forest: 隨機森林,顧名思義,是用隨機的方式建立一個森林,森林裡面有很多的決策樹組成,隨機森林的每一棵決策樹之間是沒有關聯的。在得到森林之後,當有一個新的輸入樣本進入的時候,就讓森林中的每一棵決策樹分別進行一下判斷,看看這個樣本應該屬於哪一類(對於分類演算法),然後看看哪一類被選擇最多,就預測這個樣本為那一類。 在建立每一棵決策樹的過程中,有兩點需要注意 - 採樣與完全分裂。首先是兩個隨機採樣的過程,random forest對輸入的資料要進行行、列的採樣。對於行採樣,採用有放回的方式,也就是在採樣得到的樣本集合中,可能有重複的樣本。假設輸入樣本為N個,那麼採樣的樣本也為N個。這樣使得在訓練的時候,每一棵樹的輸入樣本都不是全部的樣本,使得相對不容易出現over-fitting。然後進行列採樣,從M個feature中,選擇m個(m << M)。之後就是對採樣之後的資料使用完全分裂的方式建立出決策樹,這樣決策樹的某一個葉子節點要麼是無法繼續分裂的,要麼裡面的所有樣本的都是指向的同一個分類。一般很多的決策樹演算法都一個重要的步驟 - 剪枝,但是這裡不這樣幹,由於之前的兩個隨機採樣的過程保證了隨機性,所以就算不剪枝,也不會出現over-fitting。 按這種演算法得到的隨機森林中的每一棵都是很弱的,但是大家組合起來就很厲害了。可以這樣比喻隨機森林演算法:每一棵決策樹就是一個精通於某一個窄領域的專家(因為我們從M個feature中選擇m讓每一棵決策樹進行學習),這樣在隨機森林中就有了很多個精通不同領域的專家,對一個新的問題(新的輸入資料),可以用不同的角度去看待它,最終由各個專家,投票得到結果。

Rand forest與bagging的區別:1). Rand forest是選與輸入樣本的數目相同多的次數(可能一個樣本會被選取多次,同時也會造成一些樣本不會被選取到),而bagging一般選取比輸入樣本的數目少的樣本;2). bagging是用全部特徵來得到分類器,而rand forest是需要從全部特徵中選取其中的一部分來訓練得到分類器; 一般Rand forest效果比bagging效果好!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.