回答

76

我將試圖解釋:

假設我們的訓練數據集是由T和假設數據集表示有M個特徵(或屬性或變量)。 RF的

T = {(X1,y1), (X2,y2), ... (Xn, yn)}

Xi is input vector {xi1, xi2, ... xiM} 

yi is the label (or output or class). 

摘要:

隨機森林算法是一種基於主要有兩種方法分類 -

  • 套袋
  • 隨機子空間米ethod。

假設我們決定有S一些在我們的林木那麼我們首先創建從數據的隨機採樣與-更換時間創建"same size as original"S數據集(N次,每個數據集)。這將導致{T1, T2, ... TS}數據集。這些中的每一個都稱爲引導數據集。由於「帶替換」,每個數據集Ti可能有重複的數據記錄,並且Ti可能會丟失來自原始數據集的多個數據記錄。這叫做Bootstrapping。 (en.wikipedia.org/wiki/Bootstrapping_(statistics))

套袋是將bootstraps &然後聚合在每個bootstrap上學習的模型的過程。

現在,RF創建S樹並使用m (=sqrt(M) or =floor(lnM+1))隨機子特性出M可能的功能來創建任何樹。這被稱爲隨機子空間方法。

因此,對於每個Ti引導數據集,您都會創建一棵樹Ki。如果你想分類一些輸入數據D = {x1, x2, ..., xM},你讓它通過每棵樹併產生S輸出(每棵樹一個),可以用Y = {y1, y2, ..., ys}表示。最終的預測是對這組數的多數票。

出球袋錯誤:

在原來的訓練創建分類(S樹),每個(Xi,yi)後設置即T,選擇所有Tk不包括(Xi,yi)。注意,這個子集是一組boostrap數據集,它不包含原始數據集中的特定記錄。這個集合被稱爲out-of-bag示例。有這樣的子集(原始數據集T中的每個數據記錄一個)。OOB分類器是僅在Tk之上的投票集合,使得它不包含(xi,yi)

泛化誤差的袋外估計值是訓練集上的袋外分類器的誤差率(將其與已知的yi進行比較)。

爲什麼它很重要? Breiman [1996b]對袋裝分類器的誤差估計的研究給出了經驗證據,表明袋外估計與使用與訓練集相同大小的測試集一樣準確。因此,使用袋外誤差估計消除了對預留測試集的需求。

(感謝@Rudolf更正。下面他的評論。)

+2

精彩的解釋@Manoj Awasthi –

+0

謝謝@RushdiShams –

+2

不錯的解釋,如果更短,會更好 – bourneli

28

在Breiman最初實現的隨機森林算法中,每棵樹都在約2/3的總訓練數據上進行訓練。隨着森林的建成,每棵樹都可以進行測試(類似於對一棵樹進行交叉驗證),而不用於構建該樹的樣本。這是包差錯估計 - 對正在構建的隨機森林的內部誤差估計。

+1

發佈您的問題謝謝你的簡潔明瞭的答案。 – ays0110