【问题标题】:About the specific shapes of learning curves关于学习曲线的具体形状
【发布时间】:2016-09-23 01:19:32
【问题描述】:

我的模型抛出了如下所示的学习曲线。这些都好吗?我是一个初学者,在整个互联网上,我看到随着训练示例的增加,训练分数应该降低然后收敛。但是这里训练分数在增加,然后收敛。因此我想知道这是否表明我的代码中有错误/我的输入有问题?

好的,我发现我的代码出了什么问题。

train_sizes , train_accuracy , cv_accuracy = lc(linear_model.LogisticRegression(solver='lbfgs',penalty='l2',multi_class='ovr'),trainData,multiclass_response_train,train_sizes=np.array([0.1,0.33,0.5,0.66,1.0]),cv=5)

我没有输入逻辑回归的正则化参数。

但是现在,

train_sizes , train_accuracy , cv_accuracy = lc(linear_model.LogisticRegression(C=1000,solver='lbfgs',penalty='l2',multi_class='ovr'),trainData,multiclass_response_train,train_sizes=np.array([0.1,0.33,0.5,0.66,1.0]),cv=5)

学习曲线看起来还不错。

谁能告诉我为什么会这样?即使用默认 reg 项,训练分数会增加,而使用较低的 reg 会降低?

数据详细信息:10 个类别。不同大小的图像。 (数字分类-街景数字)

【问题讨论】:

  • 我怀疑您的问题与您使用的数据有关。你能描述一下你的数据吗?几节课?每班多少人?我可以想象,您的数据可能会以这样的方式被拆分,以至于很难学习一个好的模型来区分所有类。
  • @NBartley 请检查已编辑的问题。谢谢!
  • 您是否多次运行此代码?每次都是这样吗?
  • @NBartley 是的!在这两种情况下,我都至少运行了 5 次以上的代码。
  • 每个班级有多少张图片?我很确定 learning_curve 调用了 StratifiedKFold,所以这可能是一个问题,在训练示例很少的情况下,您的分类器在某些拆分上表现不佳,并且这会反映在平均分数中。仅凭检查很难说......

标签: python machine-learning scikit-learn supervised-learning


【解决方案1】:

您需要更准确地了解您的指标。这里使用了哪些指标?

Loss一般表示:越低越好,而Score一般表示:越高越好。

这也意味着,您的图的解释取决于训练和交叉验证期间使用的指标。​​

【讨论】:

    【解决方案2】:

    看看scipy的相关网页: http://scikit-learn.org/stable/modules/learning_curve.html 分数通常是一些需要最大化的度量(ROCAUC,准确性,...)。直观地,您可以期望看到的训练示例越多,您的模型就越好,因此得分越高。但是,您应该牢记一些关于过拟合和欠拟合的微妙之处。

    【讨论】:

      【解决方案3】:

      根据 Alex 的回答,您的模型的默认正则化参数看起来有点欠拟合数据,因为当您放松正则化时,您会看到“更合适”的学习曲线。向不适合的模型抛出多少示例并不重要。

      至于您担心为什么在第一种情况下训练分数会增加而不是减少 - 这可能是您使用的多类数据的结果。训练样本越少,每个类的图像数量就越少(因为lc 试图在 cv 的每一折中保持相同的类分布),所以使用正则化(如果你调用 C=1 正则化),您的模型可能更难准确猜测某些类。

      【讨论】:

        猜你喜欢
        • 2016-01-19
        • 2019-05-04
        • 2019-06-17
        • 2011-01-21
        • 1970-01-01
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多