什么是目标函数,损失函数?目标函数为什么要加正则项?

什么是目标函数?

定义是:指所关心的目标与相关的因素的函数关系。举个例子,假如我们想要预测公司楼下手抓饼店明天能卖多少张手抓饼,已知过去10天每天卖多少,以及每天的天气情况,是否有节假日,和手抓饼店老板和老板娘的感情状况,这几项数据都统计好了。对应到目标函数的解释就是:

  1. 关心的目标是明天能卖多少手抓饼,未知量。
  2. 相关因素是每天数量,天气情况,节假日,老板老板娘感情状况,已知量。
  3. 目标函数:按照一定的思路把这些已知条件利用起来,去求解未知量的函数关系式。

损失函数

也叫代价函数,是同一个东西。是用来评估模型的预测值f(x)与真实值Y的差距,它是一个非负实值函数。稍等一下,为什么是非负的呢?举个例子:比如上面说的手抓饼,模型预测第一天是30,真实值是29,差距30-29是1;预测第二天是35,真实值是36,差距35-36是-1;如果把它们直接加起来就是1-1 = 0,难到没有差距?非常明显是错误的,差距是0人家还以为都预测对了呢,其实都预测错了,所以不能有负值,可以用绝对值,平方或者一些其它的数学运算。

常用的损失函数有:

  1. LR逻辑回归:log对数损失函数 参考:https://xiaozhuanlan.com/topic/7491865230
  2. 最小二乘法:平方损失函数 参考: https://xiaozhuanlan.com/topic/3129560874
  3. Adaboost:指数损失函数 (后面会专门介绍这个算法)

好的,现在我们再来看一下目标函数通常的定义形式:

Obj(Θ)=L(Θ)+Ω(Θ)

中文翻译一下是 :

目标函数 = 损失函数 + 正则项

目标函数和损失函数我们都理解了,那么正则项是干什么的呢?

正则化

回到我们前面举的那个例子,如果第五天有个人中彩票了然后兴奋的来买了1百张手抓饼,比几天的量都多,很明显这个情况会影响我们的模型训练,这个情况就是过拟合。而加入正则项的目的就是使模型避免过拟合。

常用的有L1,L2正则化,很熟悉对不对,前面讲过的线性代数中的L1,L2范数有些类似。其实本质是一样的,在机器学习里叫正则化,线性代数叫范数,统计学里叫惩罚项。

机器学习里:L1使用的是绝对值距离,也叫曼哈顿距离,L2使用的是平方距离,也叫做欧式(Euclidean)距离

线性代数:L1 范数计算的是向量所有元素绝对值的和,L2 范数计算的是通常意义上的向量长度 参考:https://xiaozhuanlan.com/topic/4961780352

总结:

介绍了目标函数,损失函数和正则项的作用,优化损失函数使模型避免欠拟合使损失函数最小化,优化正则项使模型避免过拟合。

猜你喜欢

转载自my.oschina.net/sunqichao/blog/1635260
今日推荐