什么是机器学习中的学习曲线?
Posted
技术标签:
【中文标题】什么是机器学习中的学习曲线?【英文标题】:What is a Learning Curve in machine learning? 【发布时间】:2011-06-04 18:42:49 【问题描述】:我想知道机器学习中的学习曲线是什么。绘制它的标准方法是什么?我的意思是我的绘图的 x 和 y 轴应该是什么?
【问题讨论】:
从未听说过学习曲线。你是说ROC曲线吗? en.wikipedia.org/wiki/Receiver_operating_characteristic 不,学习曲线和 ROC 曲线不是同义词,我试图在下面描述。 @MattBagg:你说的完全正确,我回滚到了编辑之前。 见Analysis and Optimization of Convolutional Neural Network Architectures 【参考方案1】:它通常是指预测准确率/误差与训练集大小的关系图(即:模型在预测目标方面的表现如何?用于训练它的实例数量的增加)
通常将训练和测试/验证性能都绘制在一起,以便我们诊断bias-variance tradeoff(即确定我们是否从添加更多训练数据中受益,并通过控制正则化或特征数量来评估模型复杂性)。
【讨论】:
还有一篇比较新的文章:scikit-learn.org/stable/modules/learning_curve.html Wikipedia entry 提到了另一种学习曲线,即性能与性能对比。迭代次数。我对这两个定义有点困惑。对于性能大小的定义,对于每个训练大小x
,y轴值是从尽可能多地训练的模型中获得的(例如通过多次输入x
样本直到收敛),或者仅使用一次 x
样本进行训练?
... 继续上一页:对于性能迭代定义,随机训练的计算量一定很大,不是吗?因为对于每个输入样本,必须预测所有训练样本并获得平均分数,然后它将与n^2
缩放。
性能迭代:你在整个训练集上训练你的模型,并在当前模型的每次迭代上绘制损失函数,在整个训练/验证集上测量。模型优化是迭代的,所以让算法运行的时间越长,改进的可能性就越大,我们使用这样的图来决定何时停止学习,因为模型收敛或变得对训练数据过于敏感,失去对验证集的泛化.
性能样本:您在不断增加的训练数据子集大小上训练模型,并绘制在完整训练/验证集上测量的当前模型的损失函数。您通常会训练模型直到每次收敛(使用相同的固定标准来确定收敛)。它可用于确定模型是否欠拟合(我们可以使用更多数据)或过拟合(我们需要调整正则化以提高泛化能力并对嘈杂的训练数据不那么敏感)。【参考方案2】:
我只是想对这个老问题做一个简短的说明,以指出学习曲线和 ROC 曲线不是同义词。
如该问题的其他答案所示,学习曲线通常在另一个参数(横轴)(例如训练集)发生变化时,在纵轴上描述性能的改进大小(在机器学习中)或迭代/时间(在机器和生物学习中)。一个重点是模型的许多参数在图上的不同点发生变化。这里的其他答案在说明学习曲线方面做得很好。
(工业制造中的学习曲线还有另一种含义,起源于 1930 年代的观察,即生产单个产品所需的劳动小时数随着制造的产品数量翻倍而以均匀的速度减少。它是' 并不真正相关,但值得注意的是完整性并避免在网络搜索中混淆。)
相比之下,接受者操作特征曲线或ROC曲线不显示学习;它显示了性能。 ROC 曲线是分类器性能的图形描述,它显示了随着分类器的区分阈值的变化,增加的真阳性率(在垂直轴上)和增加的假阳性率(在水平轴上)之间的权衡。因此,只有与模型相关的单个参数(决策/判别阈值)在图上的不同点发生变化。这条 ROC 曲线 (from Wikipedia) 显示了三种不同分类器的性能。
这里没有描述学习,而是描述了两种不同类别的成功/错误的性能,因为分类器的决策阈值变得更加宽松/严格。通过查看曲线下的面积,我们可以看到分类器区分类别能力的总体指示。这个曲线下面积指标对两个类中的成员数量不敏感,因此如果类成员不平衡,它可能无法反映实际性能。 ROC曲线有很多字幕,有兴趣的读者可以看看:
Fawcett, Tom. "ROC graphs: Notes and practical considerations for researchers." Machine Learning 31 (2004): 1-38.
Swets, John A., Robyn M. Dawes, and John Monahan. "Better decisions through Science." Scientific American (2000): 83.
【讨论】:
【参考方案3】:有些人使用“学习曲线”来指代迭代过程的误差作为迭代次数的函数,即它说明了某些效用函数的收敛性。在下面的示例中,我将最小均方 (LMS) 算法的均方误差 (MSE) 绘制为迭代次数的函数。这说明了 LMS “学习”的速度有多快,在这种情况下,是通道脉冲响应。
【讨论】:
【参考方案4】:基本上,机器学习曲线可让您找到算法开始学习的点。如果你画一条曲线,然后在它开始达到常数的点切出斜率切线,这就是它开始建立学习能力的时候。
根据您的 x 和 y 轴的映射方式,您的一个轴将开始接近一个恒定值,而另一个轴的值将不断增加。这是你开始看到一些学习的时候。整个曲线几乎可以让您测量算法能够学习的速率。最大点通常是坡度开始后退的时候。您可以对最大/最小点采取一些衍生措施。
所以从上面的例子中你可以看到曲线逐渐趋向一个常数值。它最初开始通过训练示例利用其学习,并且斜率在最大/最小点处变宽,在该点它趋向于越来越接近恒定状态。在这一点上,它能够从测试数据中挑选新的例子,并从数据中找到新的和独特的结果。 您将有这样的 x/y 轴测量时间与错误。
【讨论】:
【参考方案5】:在 Andrew 的机器学习课程中,学习曲线是训练/交叉验证误差与样本量的关系图。学习曲线可用于检测模型是否具有高偏差或高方差。如果模型存在高偏差问题,随着样本量的增加,训练误差会增加,交叉验证误差会降低,最终它们会非常接近,但训练和分类误差仍然处于高错误率.并且增加样本量对高偏差问题没有多大帮助。
如果模型存在高方差,随着样本量的不断增加,训练误差会不断增加,交叉验证误差会不断减小,最终会以较低的训练和交叉验证错误率结束。因此,如果模型存在高方差,更多的样本将有助于提高模型的预测性能。
【讨论】:
【参考方案6】:对于给定的模型,您如何确定更多的训练点是否会有所帮助?对此有用的诊断是学习曲线。
• 预测准确度/误差与训练集大小的关系图(即:随着用于训练的实例数量的增加,模型在预测目标方面的效果如何)
• 学习曲线通常在垂直轴上描述当另一个参数(在水平轴上)发生变化时性能的改进,例如训练集大小(在机器学习中)或迭代/时间
• 学习曲线通常可用于绘制算法健全性检查或提高性能
• 学习曲线图可以帮助诊断您的算法将遇到的问题
就个人而言,以下两个链接帮助我更好地理解了这个概念
Learning Curve
Sklearn Learning Curve
【讨论】:
【参考方案7】:使用此代码进行绘图:
# Loss Curves
plt.figure(figsize=[8,6])
plt.plot(history.history['loss'],'r',linewidth=3.0)
plt.plot(history.history['val_loss'],'b',linewidth=3.0)
plt.legend(['Training loss', 'Validation Loss'],fontsize=18)
plt.xlabel('Epochs ',fontsize=16)
plt.ylabel('Loss',fontsize=16)
plt.title('Loss Curves',fontsize=16)
# Accuracy Curves
plt.figure(figsize=[8,6])
plt.plot(history.history['acc'],'r',linewidth=3.0)
plt.plot(history.history['val_acc'],'b',linewidth=3.0)
plt.legend(['Training Accuracy', 'Validation Accuracy'],fontsize=18)
plt.xlabel('Epochs ',fontsize=16)
plt.ylabel('Accuracy',fontsize=16)
plt.title('Accuracy Curves',fontsize=16)
请注意,history = model.fit(...)
【讨论】:
【参考方案8】:这是一个比较模型在不断变化的训练实例数量上准备和测试数据的性能的图表,这些通常用作机器学习中的分析工具,用于从训练数据集中逐步学习的计算。它允许我们验证模型何时对数据进行了尽可能多的学习。
学习曲线吸收信息有三种期望
糟糕的学习曲线:高偏差 糟糕的学习曲线:高方差 理想的学习曲线【讨论】:
【参考方案9】:简单来说,学习曲线是实例数量与损失或准确性等指标之间的曲线。该图显示了随着经验的增加而学习的旅程,因此被命名为学习曲线。 学习曲线在机器学习中被广泛用于随着时间增量学习(优化其内部参数)的算法,例如深度学习神经网络。
【讨论】:
【参考方案10】:示例 X= 级别 y=薪水
X Y 0 2000 2 4000 4 6000 6 8000
回归给出 75% 的准确率它是一条状态线 由于曲线
,多项式给出了 85% 的准确度【讨论】:
以上是关于什么是机器学习中的学习曲线?的主要内容,如果未能解决你的问题,请参考以下文章
sklearn 多种模型的学习曲线 拟合中的特性与运行速度(机器学习)