2016-11-23 99 views
2

比方說,我正在創建這樣的學習曲線(代碼中可能出現的小錯誤,它只是一個示例)。我想要的是一個經典的學習曲線,您可以放大訓練集,使驗證/測試集保持相同的大小。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

我相信這句話可以解釋這一切:

注意當我們訓練一小部分訓練數據時,使用這個子集來計算訓練誤差,而不是整個訓練集。

如何實現這一目標?

+0

'train.mean'應該給你,你是訓練數據的表現尋找,請參閱https://mlr-org.github.io/mlr-tutorial/devel/html/learning_curve/index.html。你得到的數字沒有意義嗎? –

+0

是的,我看過那個頁面,我正在廣泛使用它。我並不是說結果沒有意義 - 他們確實是,但他們不是我要找的。問題是,當你訓練數據的10%的訓練數據時,'train.mean'仍然衡量100%訓練數據(我選中)的表現。結果是,「訓練錯誤」曲線和「測試錯誤」曲線隨着樣本的增加而下降,在傳統的「學習曲線」中,火車錯誤最常增加,就像我提供的scikit鏈接一樣。不知道這是否清楚。 – Matek

+0

我對代碼的閱讀是它按照你的描述進行。你是否有直接比較mlr和scikit-learn的結果,表明情況並非如此? –

回答

1

此問題的解決方法是在this pull request,我們會盡快合併。

到位後修復,我得到的評論全比如下面的學習曲線:

enter image description here

相關問題