什麼是OOB錯誤?
簡介
OOB 或袋外錯誤和 OOB 分數是與隨機森林相關的術語。隨機森林是由決策樹組成的整合,它提高了單個決策樹的預測效果。OOB 錯誤用於衡量基於樹的模型(如隨機森林、決策樹和其他使用裝袋方法的機器學習模型)預測中的錯誤。在 OOB 樣本中,錯誤分類的數量就是 OOB 錯誤。
在本文中,讓我們探討 OOB 錯誤/分數。在繼續之前,讓我們先簡要概述一下隨機森林和決策樹。
隨機森林演算法
隨機森林是由決策樹組成的整合。決策樹模型使用基於規則的系統進行預測,該系統根據具有簡單決策的特徵劃分資料。每個做出決策的點都成為一個節點。當許多決策樹的預測結果結合起來時,就形成了一個隨機森林模型。隨機森林是一種自舉聚集模型。隨機森林用於迴歸和分類。
與決策樹相比,隨機森林更好,因為:
它們對異常值不敏感
可以處理非線性資料
過擬合較少
可以有效地處理大型資料集
準確率高於其他演算法
OOB(袋外分數)
它是隨機森林的效能指標。在隨機森林演算法中,一些樣本不用於訓練過程。這些被稱為袋外樣本。這些樣本用於測試模型效能,從而生成 OOB 分數。在訓練過程中,模型看不到這些樣本。
袋外 (OOB) 錯誤
OOB 錯誤是使用 scikit-learn 包計算的。它可以根據 OOB 樣本來估計隨機森林模型的效能。對於 OOB 計算,在選擇未用於訓練樹的樣本時會考慮每個決策樹。因此,為每個決策樹計算 OOB 錯誤,並對所有樹進行平均以找到隨機森林模型的 OOB 錯誤。
使用 Scikit Learn 的程式碼實現
import numpy as np from sklearn.datasets import make_classification from sklearn.ensemble import RandomForestClassifier ## dataset data_x, data_y = make_classification(n_samples=5000,n_features=20,n_informative=10,n_classes=2) ## create model model = RandomForestClassifier(n_estimators=200,oob_score=True) model.fit(data_x, data_y) err_OOB = 1 - model.oob_score_ print("err_OOB: {}".format(err_OOB))
輸出
err_OOB: 0.088
優勢:OOB 分數/錯誤
它確保模型具有更好的預測能力,因為計算分數的 OOB 樣本未使用在模型訓練中,並且模型從未見過這些樣本。
由於沒有資料暴露,因此它具有較小的方差且不過擬合。
可以在訓練過程中測試資料,因此每個測試集的計算時間較少。
缺點:OOB 分數/錯誤
訓練模型的總時間可能會增加,因為 OOB 的計算需要足夠的時間。
它適用於小型資料集,因為大型資料集會消耗更多時間。
結論
與其他關於隨機森林的驗證指標相比,OOB 錯誤有時更勝一籌。它提供了更好的預測結果,並且過擬合問題較少。但是,對於大型資料集,它需要花費一些時間。OOB 有助於更好地預測和減少模型的過擬合,同時在測試資料時減少計算時間。計算 OOB 錯誤的流行程度擴充套件到基於樹的模型以及其他機器學習演算法。