当前位置: 首页 > news >正文

【机器学习笔记Ⅰ】3 代价函数

代价函数(Cost Function)

代价函数(也称为损失函数,Loss Function)是机器学习中用于量化模型预测误差的函数。它衡量模型预测值(( \hat{y} ))与真实值(( y ))之间的差异,并通过优化算法(如梯度下降)调整模型参数(如权重 ( w ) 和偏置 ( b )),以最小化这种差异。


核心作用

  1. 评估模型性能:代价函数的值越小,说明模型预测越准确。
  2. 指导参数优化:为梯度下降等算法提供方向(如何调整参数以降低误差)。

常见代价函数

1. 均方误差(Mean Squared Error, MSE)
  • 用于回归问题(预测连续值,如房价、温度)。

  • 公式:

    • ( N ):样本数量。
    • ( y^{(i)} ):第 ( i ) 个样本的真实值。
    • ( \hat{y}^{(i)} ):第 ( i ) 个样本的预测值。
  • 特点

    • 对异常值敏感(平方放大大误差)。
    • 可导,适合梯度下降。

示例

  • 真实值 ( y = [2, 4, 6] ),预测值 ( \hat{y} = [1, 5, 6] )。
  • MSE = ( \frac{(2-1)^2 + (4-5)^2 + (6-6)^2}{3} = \frac{1 + 1 + 0}{3} = 0.67 )。
2. 交叉熵损失(Cross-Entropy Loss)
  • 用于分类问题(如二分类、多分类)。

  • 公式(二分类):
    在这里插入图片描述

    • ( \hat{y}^{(i)} ) 是模型预测的概率(如逻辑回归输出)。
  • 特点

    • 惩罚预测概率与真实标签的偏差。
    • 与Softmax激活函数配合用于多分类。
3. 平均绝对误差(Mean Absolute Error, MAE)
  • 公式:

  • 特点

    • 对异常值鲁棒(误差线性增长)。
    • 不可导(优化时需特殊处理)。

为什么需要代价函数?

  • 参数学习的指南针
    例如,在线性回归中,通过最小化MSE找到最佳拟合直线。

  • 模型对比:不同模型可通过同一代价函数评估优劣。


代价函数 vs 损失函数

  • 损失函数(Loss Function):计算单个样本的误差。
  • 代价函数(Cost Function):通常是所有样本损失的平均值(如MSE)。
    (实际使用时两者常混用。)

代码示例(MSE实现)

import numpy as npdef mean_squared_error(y_true, y_pred):return np.mean((y_true - y_pred) ** 2)# 示例
y_true = np.array([3, 5, 7])
y_pred = np.array([2.5, 5.1, 7.8])
print("MSE:", mean_squared_error(y_true, y_pred))  # 输出: 0.23

如何选择代价函数?

问题类型代价函数原因
回归(连续值预测)均方误差(MSE)对误差敏感,易优化。
分类(概率输出)交叉熵损失(Cross-Entropy)匹配概率分布,梯度稳定。
鲁棒性需求高平均绝对误差(MAE)减少异常值影响。

关键点总结

  1. 代价函数是模型优化的核心目标。
  2. 不同任务需选择不同代价函数(如回归用MSE,分类用交叉熵)。
  3. 梯度下降等算法通过计算代价函数的梯度来更新参数。
http://www.dtcms.com/a/268350.html

相关文章:

  • 空调和烘干机的使用
  • pyhton基础【23】面向对象进阶四
  • 爬虫的笔记整理
  • 在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控
  • Grok 4 最新技术评测与发布指南
  • 位置编码和RoPE
  • 光纤的最小弯曲半径是多少?
  • 商业秘密攻防战:技术信息与经营信息的界定之道
  • 基于Flask和机器学习开发的米其林餐厅数据可视化平台
  • 爬虫-request模块使用
  • CSS05:结构伪类选择器和属性选择器
  • 反向遍历--当你修改一个元素的outerHTML时,该元素会被从 DOM 中移除
  • 大模型RLHF中PPO强化学习代码学习笔记(二)
  • 回环检测 Scan Contex
  • DolphinScheduler 3.2.0 后端开发环境搭建指南
  • XML 笔记
  • 极简的神经网络反向传播例子
  • 用户中心Vue3项目开发2.0
  • Docker 容器编排原理与使用详解
  • 125.【C语言】数据结构之归并排序递归解法
  • FileZilla二次开发实战指南:C++架构解析与界面功能扩展
  • 操作系统王道考研习题
  • 76、覆盖最小子串
  • 【STM32】通用定时器PWM
  • 漫漫数学之旅046
  • ThreadLocal的挑战与未来:在响应式编程与虚拟线程中的演变
  • ARMv8 创建3级页表示例
  • 【嵌入式电机控制#11】PID控制入门:对比例算法应用的深度理解
  • Python数据容器-str
  • ch03 部分题目思路