机器学习大牛最常用的5个回归损失函数,你知道几个?

作者:媒体转发 时间:2018-06-22 09:39

字号
技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!

机器学习

大数据文摘出品

编译:Apricock、睡不着的iris、JonyKai、钱天培

“损失函数”是机器学习优化中至关重要的一部分。L1、L2损失函数相信大多数人都早已不陌生。那你了解Huber损失、Log-Cosh损失、以及常用于计算预测区间的分位数损失么?这些可都是机器学习大牛最常用的回归损失函数哦!

机器学习中所有的算法都需要最大化或最小化一个函数,这个函数被称为“目标函数”。其中,我们一般把最小化的一类函数,称为“损失函数”。它能根据预测结果,衡量出模型预测能力的好坏。

在实际应用中,选取损失函数会受到诸多因素的制约,比如是否有异常值、机器学习算法的选择、梯度下降的时间复杂度、求导的难易程度以及预测值的置信度等等。因此,不存在一种损失函数适用于处理所有类型的数据。这篇文章就讲介绍不同种类的损失函数以及它们的作用。

损失函数大致可分为两类:分类问题的损失函数和回归问题的损失函数。在这篇文章中,我将着重介绍回归损失。

本文出现的代码和图表我们都妥妥保存在这儿了:

https://nbviewer.jupyter.org/github/groverpr/Machine-Learning/blob/master/notebooks/05_Loss_Functions.ipynb

分类、回归问题损失函数对比

分类、回归问题损失函数对比

均方误差

均方误差(MSE)是最常用的回归损失函数,计算方法是求预测值与真实值之间距离的平方和,公式如图。

下图是MSE函数的图像,其中目标值是100,预测值的范围从-10000到10000,Y轴代表的MSE取值范围是从0到正无穷,并且在预测值为100处达到最小。

机器学习大牛最常用的5个回归损失函数,你知道几个?

MSE损失(Y轴)-预测值(X轴)

平均绝对值误差(也称L1损失)

平均绝对误差(MAE)是另一种用于回归模型的损失函数。MAE是目标值和预测值之差的绝对值之和。其只衡量了预测值误差的平均模长,而不考虑方向,取值范围也是从0到正无穷(如果考虑方向,则是残差/误差的总和——平均偏差(MBE))。

MAE损失(Y轴)-预测值(X轴)

MAE损失(Y轴)-预测值(X轴)

1. MSE(L2损失)与MAE(L1损失)的比较

简单来说,MSE计算简便,但MAE对异常点有更好的鲁棒性。下面就来介绍导致二者差异的原因。

训练一个机器学习模型时,我们的目标就是找到损失函数达到极小值的点。当预测值等于真实值时,这两种函数都能达到最小。

下面是这两种损失函数的python代码。你可以自己编写函数,也可以使用sklearn内置的函数。

# true: Array of true target variable 

# pred: Array of predictions 

def mse(true, pred): 

    return np.sum((true - pred)**2) 

def mae(true, pred): 

    return np.sum(np.abs(true - pred)) 

     

# also available in sklearn 

from sklearn.metrics import mean_squared_error 

from sklearn.metrics import mean_absolute_error 

下面让我们观察MAE和RMSE(即MSE的平方根,同MAE在同一量级中)在两个例子中的计算结果。第一个例子中,预测值和真实值很接近,而且误差的方差也较小。第二个例子中,因为存在一个异常点,而导致误差非常大。

左图:误差比较接近 右图:有一个误差远大于其他误差

左图:误差比较接近 右图:有一个误差远大于其他误差

2. 从图中可以知道什么?应当如何选择损失函数?

MSE对误差取了平方(令e=真实值-预测值),因此若e>1,则MSE会进一步增大误差。如果数据中存在异常点,那么e值就会很大,而e²则会远大于|e|。

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>机器学习
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接