代价函数与评估指标

已完成

在前面的几个单元中,我们看到代价函数(用于教授模型)和评估指标(用于自行评估模型)中已开始产生分歧。

所有代价函数都可以是评估指标

所有代价函数都可以是评估指标,尽管不一定是直观的指标。 例如,对数损失:值不直观。

有些评估指标不能是代价函数

  • 有些评估指标很难成为代价函数
  • 这是现实和数学上的约束导致的
  • 有时有些东西不好计算数量(例如“某个东西有多时髦”)
  • 理想情况下,代价函数是平滑的。 例如,“准确度”指标很有用,但如果我们稍微改变模型,它是注意不到这种改变的。 考虑到拟合是一个有很多小改变的过程,这给人的印象是,改变不会带来改进。
  • 具有许多平面位的代价函数图
  • 刷新之前的 ROC 曲线。 这需要将阈值更改为各种值,但在一天结束时,我们的模型将只有一个值 (0.5)

Plot of cost against value of model parameter A.

并非都是坏事!

发现无法使用最喜欢的指标作为代价函数可能很令人失望。 不过,这也有好的一面,即所有指标都简化为我们想要实现的目标;没有一个指标是完美的。 这意味着复杂的模型经常具有“欺骗行为”:它们找到了一种降低成本的方法,却没有真正找到一种解决问题的通用规则。 拥有一个不充当代价函数的指标可以让我们进行“完整性检查”,评估模型是否没有欺骗性。 如果我们知道某个模型正在走捷径,我们可以重新考虑我们的训练策略。

我们已多次看到这种“欺骗行为”。 例如,当模型过度拟合训练数据时,它们实际上是在“记忆”正确的答案,而不是找出一种我们可以成功应用于其他数据的通用规则。 我们使用测试数据集作为“完整性检查”来评估,以检查模型是否尚未这样做。 我们还看到,对于不平衡的数据,模型有时会在不看特征的情况下总是给出相同的响应(例如“false”),因为一般来说,这是正确的,并且误差很小。

复杂模型也会找到其他捷径。 复杂模型有时会过度拟合代价函数本身。 例如,假设我们尝试构建一个可以绘制狗的模型。 我们有一个代价函数,它会检查图像是否为棕色,是否显示毛茸茸的纹理,以及是否包含有关合适大小的对象。 有了这个代价函数,复杂模型很快就可能学会创建一个棕色毛球,不是因为它看起来像一条狗,而是因为它成本低,容易生成。 如果有一个计算腿和头数量的外部指标(这些指标不能轻易用作代价函数,因为它们不是平滑的),可以很快注意到模型是否存在欺骗行为,然后重新思考模型的训练方式。 相比之下,如果我们的替代指标评分很高,我们就可以自信地认为模型已经掌握了狗应该是什么样子的概念,而不仅仅是欺骗代价函数得到一个低值。