【机器学习】代价函数的几种误差以及代价函数的几个简单示例

引言

在机器学习中,代价函数(Cost Function)是一个评估模型性能的关键工具,它衡量了模型预测值与实际值之间的差异。代价函数通常用于监督学习,特别是在需要预测目标值的情况下,如回归问题或分类问题

文章目录

  • 引言
  • 一、代价函数的几种误差
    • [1.1 均方误差(Mean Squared Error, MSE)](#1.1 均方误差(Mean Squared Error, MSE))
    • [1.2 均方根误差(Root Mean Squared Error, RMSE)](#1.2 均方根误差(Root Mean Squared Error, RMSE))
    • [1.3 平均绝对误差(Mean Absolute Error, MAE)](#1.3 平均绝对误差(Mean Absolute Error, MAE))
    • [1.4 交叉熵(Cross-Entropy)](#1.4 交叉熵(Cross-Entropy))
    • [1.5 对数似然损失(Log-Likelihood Loss)](#1.5 对数似然损失(Log-Likelihood Loss))
  • 二、代价函数的功能
  • 三、代价函数的使用方法
  • 四、代价函数的示例
    • [示例 1: 线性回归 - 均方误差 (MSE)](#示例 1: 线性回归 - 均方误差 (MSE))
    • [示例 2: 逻辑回归 - 对数损失 (Log Loss)](#示例 2: 逻辑回归 - 对数损失 (Log Loss))
    • [示例 3: 支持向量机 (SVM) - hinge 损失](#示例 3: 支持向量机 (SVM) - hinge 损失)

一、代价函数的几种误差

1.1 均方误差(Mean Squared Error, MSE)

M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2 MSE=n1i=1∑n(yi−y^i)2

其中 y i y_i yi 是实际值, y ^ i \hat{y}_i y^i 是预测值, n n n 是数据点的数量。MSE 被广泛用于回归问题

1.2 均方根误差(Root Mean Squared Error, RMSE)

R M S E = M S E RMSE = \sqrt{MSE} RMSE=MSE

RMSE 是 MSE 的平方根,它提供了与原始数据单位一致的误差度量

1.3 平均绝对误差(Mean Absolute Error, MAE)

M A E = 1 n ∑ i = 1 n ∣   y i − y ^ i   ∣ MAE = \frac{1}{n}\sum_{i=1}^{n}|\,y_i - \hat{y}_i\,| MAE=n1i=1∑n∣yi−y^i∣

MAE 计算了预测值与实际值之间差的绝对值的平均

1.4 交叉熵(Cross-Entropy)

对于二分类问题,交叉熵通常表示为:
H ( y , y ^ ) = − 1 n ∑ i = 1 n [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] H(y, \hat{y}) = -\frac{1}{n}\sum_{i=1}^{n}[y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] H(y,y^)=−n1i=1∑n[yilog(y^i)+(1−yi)log(1−y^i)]

其中 y i y_i yi 是实际的标签(0 或 1), y ^ i \hat{y}_i y^i 是预测的概率。交叉熵用于分类问题,尤其是当输出是概率分布时

1.5 对数似然损失(Log-Likelihood Loss)

在某些情况下,特别是涉及到概率模型时,会使用对数似然损失

代价函数的选择取决于具体问题,包括问题的类型(回归或分类)、数据的分布以及我们希望模型优化的目标。在训练过程中,我们通常通过最小化代价函数来调整模型参数,从而提高模型的预测性能

二、代价函数的功能

代价函数的主要功能是

  1. 提供了一种量化模型预测误差的方法。
  2. 在训练过程中,通过最小化代价函数,可以优化模型的参数,从而改善模型的预测性能。

三、代价函数的使用方法

使用代价函数的步骤通常包括:

  1. 定义代价函数:根据你的模型和数据,选择合适的代价函数。
  2. 计算代价:使用代价函数来计算模型在训练数据上的预测误差。
  3. 优化代价:通过调整模型的参数(如权重和偏置),以最小化代价函数,从而优化模型。

四、代价函数的示例

示例 1: 线性回归 - 均方误差 (MSE)

线性回归是一种用于预测连续目标的模型。在这个示例中,我们将使用均方误差 (MSE) 作为代价函数

假设我们有一个线性回归模型 𝑓(𝑥)=𝑤𝑥+𝑏,其中 𝑤 和 𝑏 是模型的参数。我们的目标是找到一组参数 𝑤 和 𝑏,使得模型的预测尽可能接近实际值。

MSE 代价函数定义如下:
J ( w , b ) = 1 2 m ∑ i = 1 m ( f ( x i ) − y i ) 2 J(w, b) = \frac{1}{2m} \sum_{i=1}^{m} (f(x_i) - y_i)^2 J(w,b)=2m1i=1∑m(f(xi)−yi)2

其中:

  • m 是训练数据的数量。
  • x i x_i xi 和 y i y_i yi 分别是第 i i i 个训练样本的输入和目标值。
  • f ( x i ) f(x_i) f(xi) 是模型对第 i i i 个样本的预测值。
    为了找到最优的 w w w 和 b b b,我们需要最小化代价函数 J ( w , b ) J(w, b) J(w,b)。这通常通过梯度下降等优化算法来实现。
    在Python中,我们可以使用NumPy库来定义代价函数并计算它:
python 复制代码
import numpy as np
# 假设我们有以下数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])
# 定义线性回归模型
def linear_regression(x, w, b):
    return w * x + b
# 定义均方误差代价函数
def mse_cost(w, b, x, y):
    m = len(x)
    cost = 0.5 * sum((linear_regression(x[i], w, b) - y[i]) ** 2 for i in range(m))
    return cost
# 初始化参数
w = 0
b = 0
# 计算代价
cost = mse_cost(w, b, x, y)
print(f"初始代价: {cost}")

在这个示例中,我们定义了一个简单的代价函数,并用一些示例数据来计算初始代价

在实际应用中,我们通常会使用更复杂的代价函数,并且通过优化算法来找到最小化代价的参数

当然可以。我将提供几个不同的机器学习模型及其对应的代价函数的示例,并详细解释每个示例。

  • 在这个示例中,我们定义了一个简单的线性回归模型和一个均方误差代价函数。代价函数计算模型在给定数据上的预测误差

示例 2: 逻辑回归 - 对数损失 (Log Loss)

逻辑回归是一种用于预测二分类问题的模型。在这个示例中,我们将使用对数损失 (Log Loss) 作为代价函数

python 复制代码
import numpy as np
# 假设我们有以下数据
y = np.array([0, 1, 0, 1, 1])  # 真实的标签
y_pred = np.array([0.1, 0.9, 0.2, 0.8, 0.7])  # 模型的预测概率
# 定义对数损失代价函数
def log_loss(y_true, y_pred):
    m = len(y_true)
    cost = -1/m * sum(y_true[i] * np.log(y_pred[i]) + (1 - y_true[i]) * np.log(1 - y_pred[i]) for i in range(m))
    return cost
# 计算代价
cost = log_loss(y, y_pred)
print(f"初始代价: {cost}")
  • 在这个示例中,我们定义了一个简单的逻辑回归模型和一个对数损失代价函数
  • 代价函数计算模型在给定数据上的预测概率与真实标签之间的差异

示例 3: 支持向量机 (SVM) - hinge 损失

支持向量机 (SVM) 是一种用于解决分类问题的模型。在这个示例中,我们将使用 hinge 损失作为代价函数。

python 复制代码
import numpy as np
# 假设我们有以下数据
y = np.array([1, -1, 1, -1, 1])  # 真实的标签
y_pred = np.array([1, -1, 1, 1, 1])  # 模型的预测标签
# 定义 hinge 损失代价函数
def hinge_loss(y_true, y_pred, margin):
    m = len(y_true)
    cost = sum(max(0, 1 - y_true[i] * y_pred[i]) for i in range(m)) / m
    return cost
# 计算代价
cost = hinge_loss(y, y_pred, 1)
print(f"初始代价: {cost}")
  • 在这个示例中,我们定义了一个简单的支持向量机模型和一个 hinge 损失代价函数代价函数计算模型在给定数据上的预测标签与真实标签之间的差异
  • 这些示例展示了不同类型的机器学习模型及其对应的代价函数。通过调整模型参数我们可以最小化代价函数,从而提高模型的性能
相关推荐
WeeJot嵌入式几秒前
卷积神经网络:深度学习中的图像识别利器
人工智能
喜欢猪猪2 分钟前
Django:从入门到精通
后端·python·django
一个小坑货2 分钟前
Cargo Rust 的包管理器
开发语言·后端·rust
bluebonnet277 分钟前
【Rust练习】22.HashMap
开发语言·后端·rust
古月居GYH7 分钟前
在C++上实现反射用法
java·开发语言·c++
糖豆豆今天也要努力鸭8 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
脆皮泡泡10 分钟前
Ultiverse 和web3新玩法?AI和GameFi的结合是怎样
人工智能·web3
机器人虎哥13 分钟前
【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测
人工智能·机器学习
码银20 分钟前
冲破AI 浪潮冲击下的 迷茫与焦虑
人工智能
何大春24 分钟前
【弱监督语义分割】Self-supervised Image-specific Prototype Exploration for WSSS 论文阅读
论文阅读·人工智能·python·深度学习·论文笔记·原型模式