比方說,我正在創建這樣的學習曲線(代碼中可能出現的小錯誤,它只是一個示例)。我想要的是一個經典的學習曲線,您可以放大訓練集,使驗證/測試集保持相同的大小。R mlr - 從訓練數據子集和整個測試數據(不是整個訓練數據)創建學習曲線?
learningCurve <- generateLearningCurveData("regr.glmnet",
bh.task,
makeResampleDesc(method = "cv", iters = 5, predict = "both"),
seq(0.1, 1, by = 0.1),
list(setAggregation(auc, train.mean), setAggregation(auc, test.mean))
)
與上述代碼的問題是,學習者確實上訓練的訓練數據的分數,但auc.train.mean
量度上整個訓練集評估。這不會導致我想要的學習曲線。我想這項措施,以評估該用於學習的訓練集的部分性能,喜歡這裏:
http://www.astroml.org/sklearn_tutorial/practical.html#learning-curves
我相信這句話可以解釋這一切:
注意當我們訓練一小部分訓練數據時,使用這個子集來計算訓練誤差,而不是整個訓練集。
如何實現這一目標?
'train.mean'應該給你,你是訓練數據的表現尋找,請參閱https://mlr-org.github.io/mlr-tutorial/devel/html/learning_curve/index.html。你得到的數字沒有意義嗎? –
是的,我看過那個頁面,我正在廣泛使用它。我並不是說結果沒有意義 - 他們確實是,但他們不是我要找的。問題是,當你訓練數據的10%的訓練數據時,'train.mean'仍然衡量100%訓練數據(我選中)的表現。結果是,「訓練錯誤」曲線和「測試錯誤」曲線隨着樣本的增加而下降,在傳統的「學習曲線」中,火車錯誤最常增加,就像我提供的scikit鏈接一樣。不知道這是否清楚。 – Matek
我對代碼的閱讀是它按照你的描述進行。你是否有直接比較mlr和scikit-learn的結果,表明情況並非如此? –