我想知道机器学习中的学习曲线是什么,绘制它的标准方式是什么?我的图应该有哪些x轴和y轴?
我想知道机器学习中的学习曲线是什么,绘制它的标准方式是什么?我的图应该有哪些x轴和y轴?
x
,y轴值是从已经尽可能训练的模型中获得的(例如通过多次输入x
样本直到收敛),还是仅使用一次x
样本进行训练? - Jasonn^2
成比例。 - Jason(还有工业制造业中学习曲线的另一种含义,起源于1930年代观察到随着制造的单位数量加倍,生产一个单独单位所需的劳动小时数以统一速率减少。虽然它并不真正相关,但为了完整起见并避免网络搜索的混淆而值得注意。)
相比之下,接收者操作特征曲线,或ROC曲线,不显示学习;它显示性能。 ROC曲线是分类器性能的图形表示,显示了在分类器的区分阈值变化时增加真阳性率(纵轴)和增加假阳性率(横轴)之间的权衡。因此,与模型相关的仅有一个参数(决策/区分阈值)在图中的不同点处会发生变化。此ROC曲线(来自维基百科链接)显示了三个不同分类器的性能。
这里并没有展示学习过程,而是展示分类器在决策阈值变得更加宽松/严格时对两种不同成功/错误类别的性能。通过查看曲线下面积,我们可以看到分类器区分这两个类别的能力的整体指标。该曲线下面积度量单位对两个类别的成员数量不敏感,因此如果类别成员不平衡,则可能无法反映实际性能。ROC曲线有许多副标题,有兴趣的读者可以查看以下链接:
Fawcett, Tom. "ROC 图形: 研究人员的注意事项和实用考虑。" 机器学习 31 (2004): 1-38.
Swets, John A., Robyn M. Dawes, and John Monahan. "科学带来更好的决策。" Scientific American (2000): 83.
基本上,机器学习曲线可以帮助您找到算法开始学习的点。如果您取一条曲线并在它开始达到常数时切割一个斜率切线的导数,那么它开始建立学习能力。
根据您的x和y轴映射方式,其中一个轴将开始接近恒定值,而另一个轴的值将持续增加。这时您开始看到一些学习效果。整个曲线基本上允许您测量算法学习的速度。最大点通常是斜率开始减小的时候。您可以对最大/最小点进行多次导数测量。
因此,从以上例子中,您可以看到曲线逐渐趋向于一个恒定值。它最初通过训练示例来利用其学习,并且在最大/最小点处斜率扩大,从而越来越接近于恒定状态。此时,它能够从测试数据中获取新的示例,并从数据中找到新的独特结果。您会有关于迭代次数与误差的x/y轴测量数据。
# 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(...)