大家好,又见面了,我是你们的朋友全栈君。
假设拟合直线为,代价函数(cost function)记为
则代价函数:
为什么代价函数是这个呢?
首先思考:什么是代价?
简单理解代价就是预测值和实际值之间的差距,那对于多个样本来说,就是差距之和。
如果我们直接使用 ,这个公式看起来就是表示假设值和实际值只差,再将每一个样本的这个差值加起来不就是代价了吗,但是想一下,如果使用这个公式,那么就单个样本而言,代价有正有负,全部样本的代价加起来有可能正负相抵,所以这并不是一个合适的代价函数。
所以为了解决有正有负的问题,我们使用,即绝对值函数来表示代价,为了方便计算最小代价(计算最小代价可能用到最小二乘法),我们直接使用平方来衡量代价,即使用来表示单个样本的代价,那么一个数据集的代价为:。
那么是否使用平方之和就没有什么问题了?
仔细想想,其实很容易想到,代价函数应该与样本的数量有关,否则一个样本和n个样本的差距平方和之间的比较也没有多少意义,所以将乘以,即代价函数为:,这里取2m而非m,是为了方便计算。
P:菜鸟一个,整理自其他人的讲解……..
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134110.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...