《scikit-learn机器学习常用算法原理及编程实战》—3.2 成本函数
3.2 成本函数
成本是衡量模型与训练样本符合程度的指标。简单地理解,成本是针对所有的训练样本,模型拟合出来的值与训练样本的真实值的误差平均值。而成本函数就是成本与模型参数的函数关系。模型训练的过程,就是找出合适的模型参数,使得成本函数的值最小。成本函数记为J(θ),其中θ表示模型参数。
针对上一节中的例子,我们用一阶多项式来拟合数据,则得到的模型是y=θ0+θ1x。此时,[θ0,θ1]构成的向量就是模型参数。训练这个模型的目标,就是找出合适的模型参数 [θ0,θ1],使得所有的点到这条直线上的距离最短。
图3-2 模型参数
如图3-2所示,不同的模型参数θ对应不同的直线,明显可以看出来L2比L1更好地拟合数据集。根据成本函数的定义,我们可以容易地得出模型的成本函数公式:
其中,m是训练样本个数,在我们的例子里,是20个点,而h(x(i)) 就是模型对每个样本的预测值,y(i)是每个样本的真实值。这个公式实际上就是线性回归算法的成本函数的简化表达。
一个数据集可能有多个模型可以用来拟合它,而一个模型有无穷多个模型参数,针对特定的数据集和特定的模型,只有一个模型参数能最好地拟合这个数据集,这就是模型和模型参数的关系。回到本章开头的例子里的3个图片,针对生成的20个训练样本,我们用3个模型来拟合这个数据集,分别是一阶多项式、三阶多项式和十阶多项式。图3-1左图使用一阶多项式来拟合数据,这就是模型,而针对一阶多项式,有无穷多个模型参数,而模型训练的目的,就是找出一组最优的模型参数,使得这个模型参数所代表的一阶多项式对应的成本最低。使用三阶多项式和十阶多项式来拟合数据集时,原理是相同的。
总结起来,针对一个数据集,我们可以选择很多个模型来拟合数据,一旦选定了某个模型,就需要从这个模型的无穷多个参数里找出一个最优的参数,使得成本函数的值最小。
问题来了,多个模型之间怎么评价好坏呢?针对我们的例子,一阶多项式、三阶多项式和十阶多项式,到底哪个模型更好呢?针对训练样本成本最小的模型就是最好的吗?在我们的例子里,十阶多项式针对训练样本的成本最小,因为它的预测曲线几乎穿过了所有的点,训练样本到曲线的距离的平均值最小。那是不是意味着十阶多项式是最好的模型吗?答案是否定的,因为它过拟合了。
过拟合到底有什么不好?我们要用什么标准来评价一个模型的好坏?下面我们来解答这些问题。
- 点赞
- 收藏
- 关注作者
评论(0)