什么是损失函数?损失函数是一种算法,用于衡量模型与数据的拟合程度。损失函数是一种衡量实际测量值与预测值之间差异的方法。损失函数值越高,预测越错误,损失函数值越低,预测越接近真实值。为每个单独的观察(数据点)计算损失函数。将所有损失函数的值取平均的函数称为成本函数。更简单的理解就是损失函数是针对单个样本的,而代价函数是针对所有样本的。损失函数和指标一些损失函数也可以用作评估指标。但是损失函数和指标有不同的目的。虽然指标用于评估最终模型并比较不同模型的性能,但在模型构建阶段使用损失函数作为正在创建的模型的优化器。损失函数指示模型如何最小化错误。也就是说,损失函数知道模型是怎么训练的,而metric是用来解释模型的性能的。为什么要使用损失函数?由于损失函数衡量的是预测值与实际值之间的差距,因此在训练模型时可以用它们来指导模型的改进(通常的梯度下降法)。在建立模型的过程中,如果特征的权重发生变化以获得更好或更差的预测,则需要使用损失函数来判断模型中特征的权重是否需要改变,以及方向改变。我们可以在机器学习中使用各种损失函数,这取决于我们试图解决的问题类型、数据的质量和分布以及我们使用的算法。下图是我们整理的10个常见损失函数:回归题1.均方误差(MSE)均方误差是指所有预测值与真实值的平方差,取平均值。通常用于回归问题。defMSE(y,y_predicted):sq_error=(y_predicted-y)**2sum_sq_error=np.sum(sq_error)mse=sum_sq_error/y.size返回mse2,预测值和实际值之间的平均绝对误差(MAE)值计算为绝对差的平均值。当数据有离群值时,这是比均方误差更好的度量。defMAE(y,y_predicted):error=y_predicted-yabsolute_error=np.absolute(error)total_absolute_error=np.sum(absolute_error)mae=total_absolute_error/y.sizereturnmae3,均方根误差(RMSE)这个损失函数是均方误差的平方根。如果我们不想惩罚更大的错误,这是一种理想的方法。defRMSE(y,y_predicted):sq_error=(y_predicted-y)**2total_sq_error=np.sum(sq_error)mse=total_sq_error/y.sizermse=math.sqrt(mse)返回rmse4,平均偏差误差(MBE)类似于平均绝对误差,但没有绝对值。这种损失函数的缺点是负误差和正误差可以相互抵消,因此最好在研究人员知道误差只有一个方向时应用它。defMBE(y,y_predicted):error=y_predicted-ytotal_error=np.sum(error)mbe=total_error/y.sizereturnmbe5,HuberlossHuber损失函数结合了平均绝对误差(MAE)和均方误差(MSE))优点。这是因为Hubberloss是一个有两个分支的函数。一个分支应用于满足预期的MAE,另一个分支应用于异常值。HubberLoss的一般函数是:这里defhubber_loss(y,y_predicted,delta)delta=1.35*MAEy_size=y.sizetotal_error=0foriinrange(y_size):erro=np.absolute(y_predicted[i]-y[i])iferror
