机器学习:损失函数(loss function)
转自https://blog.csdn.net/qq_24753293/article/details/78788844,感谢大佬分享 L(Y,f(x)) L代表loss function Y是真实值 f(x)是模型预测出来的值复制代码
前言
说到机器学习,初学者听到最多的就是 `损失函数` 了吧 我对这个词也是一头雾水 好像今天一个定义明天又是一个定义,读了大量的文章和博客终于有点起色 该文章根据自己的理解,通过简单的语言,大致说下什么是损失函数。 首先我们需要了解损失函数的定义是什么:衡量机器学习模型预测效果好坏的一种表法方式。 可能这么说有点小小的抽象,那么再解释下:损失函数就是用来表现预测与实际数据的差距程度 比如你做一个线性回归,你的预测值和实际值之间会有误差,那么我们找到一个函数表达这个误差就是损失函数。 机器学习模型关于单个样本的预测值与真实值的差称为损失。 损失越小,模型越好,如果预测值与真实值相等,就是没有损失。 用于计算损失的函数称为损失函数。模型每一次预测的好坏用损失函数来度量。 损失函数是一个动态的值(极限是0),我们通过不断的迭代,优化模型,使得损失函数越来越小。 关于损失,有很多种计算方式: 绝对值损失函数 平方损失函数 指数损失函数 对数损失函数 分类算法的损失函数一般是: 0-1损失函数 指数损失函数 对数损失函数 回归算法的一般损失函数: 均方损失函数 绝对值损失函数 平方损失函数 复制代码
demo
举个小例子: 比如你是一个厨师大赛评委,几名厨师最后成绩由你确定。 在你认为色,香,味的满分都是100分。 每位厨师都有自己的做菜方案和技巧,并且达到的效果也是不同的(这个就相当于预测值), 最后用你的一套规则判断他们多少分(你就是损失函数) 假设我们令真实值为Y 预测值为f(x) 损失函数为L(Y,f(x))他们的关系就是下图:复制代码
损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。 demo: 首先我们假设要预测一个公司某商品的销售量:复制代码
X:门店数 Y:销量 我们会发现销量随着门店数上升而上升。于是我们就想要知道大概门店和销量的关系是怎么样的呢? 我们根据图上的点描述出一条直线(一元一次方程):复制代码
似乎这个直线差不多能说明门店数X和Y得关系了: 我们假设直线的方程为Y=a0+a1X(a为常数系数,一元一次方程)。 假如我们第一次拟合出来的回归曲线是:Y=3X+10 然后得到预测值与真实值之间的误差情况如下所示:复制代码
我们会想到用绝对损失函数表表示我们拟合出来的Y=3x+10这个方程的好坏。 根据上面的数据,我们计算求得绝对损失函数是6 但是,我们一般用平方损失函数来代替绝对损失函数:上面的案例,我们计算得到平方损失函数是10 假设我们又拟合出来一条直线 Y= 4x+8复制代码
绝对损失函数求和:11 平方损失函数求和:27 根据这2次的拟合方程,从损失函数求和中,就能评估出第一次拟合能够更好得预测门店销售。复制代码
总结
常用的损失函数有以下几种: (1)0-1损失函数(0-1 lossfunction): 二类分类任务中,预测值与真实值不同,就是预测错误,则损失是1; 预测值与真实值相等,就是预测正确,损失是 0,就是没有损失。复制代码
伪原创工具 SEO网站优化 https://www.237it.com/
(2)平方损失函数(quadraticloss function) 预测值与真实值的差的平方。预测误差越大,损失越大。好理解吧。复制代码
(3)绝对损失函数(absoluteloss function) 预测值与真实值的差的绝对值。绝对值不方便计算,一般不常用。复制代码
(4)对数损失函数(logarithmicloss function) 或对数似然损失函数(log-likelihood loss function) 对于预测值是概率的情况,取对数损失函数。 因为概率范围[0, 1] 所以对数值是(-∞, 0) ,为了让损失 > 0 所以取对数的负值。上面的公式里面有个负号。看图像,一目了然哈哈:复制代码
(5)指数损失函数 (1)对离群点、噪声非常敏感。经常用在AdaBoost算法中。复制代码
作者:HZ在掘金
链接:https://juejin.cn/post/7035072788368982023