《scikit-learn机器学习常用算法原理及编程实战》—3.2 成本函数

举报
华章计算机 发表于 2019/05/31 16:59:56 2019/05/31
【摘要】 本书摘自《scikit-learn机器学习常用算法原理及编程实战》一书中的第3章,第3.2节,编著是黄永昌 .

3.2  成本函数

  成本是衡量模型与训练样本符合程度的指标。简单地理解,成本是针对所有的训练样本,模型拟合出来的值与训练样本的真实值的误差平均值。而成本函数就是成本与模型参数的函数关系。模型训练的过程,就是找出合适的模型参数,使得成本函数的值最小。成本函数记为J(θ),其中θ表示模型参数。

  针对上一节中的例子,我们用一阶多项式来拟合数据,则得到的模型是y=θ0+θ1x。此时,[θ0,θ1]构成的向量就是模型参数。训练这个模型的目标,就是找出合适的模型参数 [θ0,θ1],使得所有的点到这条直线上的距离最短。

image.png

图3-2  模型参数

  如图3-2所示,不同的模型参数θ对应不同的直线,明显可以看出来L2比L1更好地拟合数据集。根据成本函数的定义,我们可以容易地得出模型的成本函数公式:

image.png

  其中,m是训练样本个数,在我们的例子里,是20个点,而h(x(i)) 就是模型对每个样本的预测值,y(i)是每个样本的真实值。这个公式实际上就是线性回归算法的成本函数的简化表达。

  一个数据集可能有多个模型可以用来拟合它,而一个模型有无穷多个模型参数,针对特定的数据集和特定的模型,只有一个模型参数能最好地拟合这个数据集,这就是模型和模型参数的关系。回到本章开头的例子里的3个图片,针对生成的20个训练样本,我们用3个模型来拟合这个数据集,分别是一阶多项式、三阶多项式和十阶多项式。图3-1左图使用一阶多项式来拟合数据,这就是模型,而针对一阶多项式,有无穷多个模型参数,而模型训练的目的,就是找出一组最优的模型参数,使得这个模型参数所代表的一阶多项式对应的成本最低。使用三阶多项式和十阶多项式来拟合数据集时,原理是相同的。

  总结起来,针对一个数据集,我们可以选择很多个模型来拟合数据,一旦选定了某个模型,就需要从这个模型的无穷多个参数里找出一个最优的参数,使得成本函数的值最小。

  问题来了,多个模型之间怎么评价好坏呢?针对我们的例子,一阶多项式、三阶多项式和十阶多项式,到底哪个模型更好呢?针对训练样本成本最小的模型就是最好的吗?在我们的例子里,十阶多项式针对训练样本的成本最小,因为它的预测曲线几乎穿过了所有的点,训练样本到曲线的距离的平均值最小。那是不是意味着十阶多项式是最好的模型吗?答案是否定的,因为它过拟合了。

  过拟合到底有什么不好?我们要用什么标准来评价一个模型的好坏?下面我们来解答这些问题。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。