分类、回归常用损失函数
发布人:shili8
发布时间:2025-03-11 11:23
阅读次数:0
**分类和回归中的常用损失函数**
在机器学习中,损失函数(Loss Function)是衡量模型预测结果与真实值之间差异的指标。不同的任务(如分类、回归等)通常使用不同的损失函数来评估模型的性能。在本文中,我们将讨论常用的分类和回归损失函数。
**1. 分类中的损失函数**
在分类问题中,目标是预测样本属于哪一类。常用的分类损失函数包括:
### **1.1.0-1 损失函数(Zero-One Loss Function)**
0-1 损失函数是最简单的分类损失函数,它将正确预测的样本赋值为0,将错误预测的样本赋值为1。
import numpy as npdef zero_one_loss(y_true, y_pred): """ 0-1 损失函数 Parameters: y_true (array): 真实标签 y_pred (array): 模型预测结果 Returns: float: 损失值 """ return np.mean((y_true != y_pred).astype(int))
### **1.2. 交叉熵损失函数(Cross-Entropy Loss Function)**
交叉熵损失函数是0-1损失函数的改进版,它将正确预测的样本赋值为 -log(p),其中 p 是模型预测结果。
import numpy as npdef cross_entropy_loss(y_true, y_pred): """ 交叉熵损失函数 Parameters: y_true (array): 真实标签 y_pred (array): 模型预测结果 Returns: float: 损失值 """ return -np.mean(np.log(y_pred[np.arange(len(y_true)), y_true]))
### **1.3. F1 分数损失函数(F1 Score Loss Function)**
F1 分数损失函数是分类准确率和召回率的调和平均值。
import numpy as npdef f1_score_loss(y_true, y_pred): """ F1 分数损失函数 Parameters: y_true (array): 真实标签 y_pred (array): 模型预测结果 Returns: float: 损失值 """ precision = np.mean((y_true == y_pred) & (y_true ==1)) recall = np.mean((y_true == y_pred) & (y_true ==1)) / np.mean(y_true) return2 * precision * recall / (precision + recall)
**2. 回归中的损失函数**
在回归问题中,目标是预测样本的连续值。常用的回归损失函数包括:
### **2.1. 均方误差(Mean Squared Error)**
均方误差是最简单的回归损失函数,它将预测结果与真实值之间的平方差之和。
import numpy as npdef mean_squared_error(y_true, y_pred): """ 均方误差 Parameters: y_true (array): 真实值 y_pred (array): 模型预测结果 Returns: float: 损失值 """ return np.mean((y_true - y_pred) **2)
### **2.2. 均绝对误差(Mean Absolute Error)**
均绝对误差是均方误差的改进版,它将预测结果与真实值之间的绝对差之和。
import numpy as npdef mean_absolute_error(y_true, y_pred): """ 均绝对误差 Parameters: y_true (array): 真实值 y_pred (array): 模型预测结果 Returns: float: 损失值 """ return np.mean(np.abs(y_true - y_pred))
### **2.3. 平均绝对百分比误差(Mean Absolute Percentage Error)**
平均绝对百分比误差是均绝对误差的改进版,它将预测结果与真实值之间的绝对百分比差之和。
import numpy as npdef mean_absolute_percentage_error(y_true, y_pred): """ 平均绝对百分比误差 Parameters: y_true (array): 真实值 y_pred (array): 模型预测结果 Returns: float: 损失值 """ return np.mean(np.abs((y_true - y_pred) / y_true)) *100
综上所述,分类和回归中的损失函数各有其特点和应用场景。选择合适的损失函数对于模型的性能优化至关重要。