k 層交叉檢驗之後,我們得到 k 個不同的模型誤差估算值(e1, e2 …..ek)。理想的情況是,這些誤差值相加得 0 。要計算模型的偏誤,我們把所有這些誤差值相加。平均值越低,模型越優秀。
模型表現變化程度的計算與之類似。取所有誤差值的標準差,標準差越**明模型隨訓練資料的變化越小。
from sklearn import cross_validation
model = randomforestclassifier(n_estimators=100)
#簡單k層交叉驗證,10層。
cv = cross_validation.kfold(len(train), n_folds=10, indices=false)
results =
# "error_function" 可由你的分析所需的error function替代
for traincv, testcv in cv:
probas = model.fit(train[traincv], target[traincv]).predict_proba(train[testcv])
print "results: " + str( np.array(results).mean() )
應該使用較大比例的資料集來訓練模型,否則會導致失敗,最終得到偏誤很大的模型。
驗證用的資料點,其比例應該恰到好處。如果太少,會導致驗證模型有效性時,得到的結果波動較大。
訓練和驗證過程應該重複多次。訓練集和驗證集不能一成不變。這樣有助於驗證模型有效性。
官方對交叉驗證的解釋以及**
k折交叉驗證
在做機器學習這方面研究的時候,例如pcr和pls等演算法時常會遇到最佳潛變數的選取,神經元個數的選取 這些引數的選取對模型的質量產生極大的影響。如果人為選取,這樣是十分不可靠的也是不現實的。進行交叉驗證是乙個優秀模型形成必不可少的過程。交叉驗證的目的是為了得到更為穩健可靠的模型。交叉驗證的方法有許多...
K折交叉驗證 (cv)
之前一直理解錯了 我知道k折交叉驗證是在模型選擇過程 model selection 中用來評估候選模型的。把整個訓練集分成k份,一共進行k次評估,每次用k 1份訓練,用1份來驗證。之前以為這k次是對同乙個模型迭代訓練的,其實不是!其實是產生了k個模型,對他們的誤差取平均,來評估你選擇的模型好不好,...
K折交叉驗證學習
交叉驗證主要用於防止模型過於複雜而引起的過擬合,是一種評價訓練資料的資料集泛化 能力的統計方法。其基本思想是將原始資料進行劃分,分成訓練集和測試集,訓練集用來對模型進行訓練,測試集用來測試訓練得到的模型,以此來作為模型的評價指標。講原始資料d按比例劃分,比如7 3,從資料集中隨機選取70 作為訓練集...