2016-11-23 4 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%のパフォーマンスを測定します(チェックしました)。その結果、 "train errror"曲線と "test error"曲線の両方がサンプルが増加するにつれて減少し、古典的な "学習曲線"では列車誤差が最も頻繁に増加します。これがはっきりしているかどうかは不明です。 – Matek

+0

コードを読んだことは、あなたがそれを記述する必要があるときに起こることです。あなたはmlrとscikit-learnを直接比較していますか?これはそうではないことを示していますか? –

答えて

1

この問題に対する修正はすぐにマージされるべき、this pull requestです。代わりに修正して

、私はコメントでいっぱいたとえば、次の学習曲線を得る:

enter image description here

関連する問題