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

引言

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

文章目录

  • 引言
  • 一、代价函数的几种误差
    • 1.1 均方误差(Mean Squared Error, MSE)
    • 1.2 均方根误差(Root Mean Squared Error, RMSE)
    • 1.3 平均绝对误差(Mean Absolute Error, MAE)
    • 1.4 交叉熵(Cross-Entropy)
    • 1.5 对数似然损失(Log-Likelihood Loss)
  • 二、代价函数的功能
  • 三、代价函数的使用方法
  • 四、代价函数的示例
    • 示例 1: 线性回归 - 均方误差 (MSE)
    • 示例 2: 逻辑回归 - 对数损失 (Log Loss)
    • 示例 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=1n(yiy^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=1nyiy^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=1n[yilog(y^i)+(1yi)log(1y^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=1m(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库来定义代价函数并计算它:
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) 作为代价函数

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 损失作为代价函数。

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)) / mreturn cost
# 计算代价
cost = hinge_loss(y, y_pred, 1)
print(f"初始代价: {cost}")
  • 在这个示例中,我们定义了一个简单的支持向量机模型和一个 hinge 损失代价函数代价函数计算模型在给定数据上的预测标签与真实标签之间的差异
  • 这些示例展示了不同类型的机器学习模型及其对应的代价函数。通过调整模型参数我们可以最小化代价函数,从而提高模型的性能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义时长裁切视频

人脸检测与定位: find_host_face_location:在视频的前几秒内快速检测并定位主持人的人脸,缩小帧尺寸以提高处理速度。 裁剪框计算: calculate_cropping_box:基于检测到的人脸位置,计算一个适合的裁剪框&…

c#自动关闭 MessageBox 弹出的窗口

第一种方法: 原理: 1、我们都知道,MessageBox弹出的窗口是模式窗口,模式窗口会自动阻塞父线程的,只有关闭了MessageBox的窗口后才会运行下面的代码。 2、所以可以考虑在MessageBox前先增加一个用于“杀”掉MessageBox窗口的线程。因为需要…

React好用的组件库有哪些

React好用的组件库有很多,它们各自具有不同的特点和优势,适用于不同的开发场景和需求。以下是一些受欢迎的React组件库及其特点: Material-UI(现更名为MUI) 特点:这是一个开源的React组件库,实…

学术研讨 | 区块链与隐私计算领域专用硬件研讨会顺利召开

学术研讨 添加图片注释,不超过 140 字(可选) 近日,国家区块链技术创新中心主办,长安链开源社区支持的“区块链性能优化与融合技术研讨会”顺利召开。当前,区块链与新技术之间的交叉融合和协同创新正成为显…

04 B端产品经理能力培养

B端产品经理能力模型 通用能力 学习能力 沟通能力 行业融入感主人翁精神 心态和情商 专业素养 责任心 自驱力、执行力 基础认知 产品行业认知:当前公司的产品所属细分领域、所处行业趋势、提供怎样的服务、产品和方案解决了客户哪些问题。 产品聚焦领域&a…

springboot+webSocket对接chatgpt

webSocket对接参考 话不多说直接上代码 WebSocket package com.student.config;import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springfram…

深度学习论文精读

深度学习论文精读 所有论文 包括已经精读完成和之后将要精读的论文,10年内深度学习里有影响力文章(必读文章),或者近期比较有意思的文章。 感谢沐神! 总论文数 67,阅读完成数 32 计算机视觉 - CNN 已…

前端笔试全攻略:30道经典面试题详解

引言 前端开发是一个充满挑战与机遇的领域,随着Web技术的不断发展,前端工程师需要掌握的知识体系也在不断扩展。无论是刚入门的新手还是资深开发者,在求职过程中都会面临各种技术笔试。本文将为你提供30道常见的前端笔试题及其详尽解答&…

FLINKCDC连接oracle导致归档日志暴增

前言 前段时间再用flinkcdc连接oracle的时候,oracle的归档日志疯狂的飙升,我经常去到归档目录下查看占用的内存情况。。 情况 在使用flinkcdc连接oracle的时候,发现归档日志飙升,查看了很多文档,该配置了都配置了, …

使用el-table实现自动滚动

文章目录 概要技术实现完整代码 概要 在前端开发大屏的时候,我们会用到表格数据展示,有时候为了使用户体验更加好,会增加表格自动滚动。下边我将以示例代码,用element UI的el-table来讲一下。 技术实现 1 .增加dom监听&#xf…

Linux搭建Kubernetes集群(单Master)【附图文】

文章目录 一、集群环境配置要求二、主机准备三、初始环境准备1.关闭防火墙2.关闭 selinux3.关闭swap4.加载 br_netfilter 模块5.允许iptables转发流量6.设置时间同步 四、安装Docker五、安装kubeadm, kubectl, kubelet六、在Master节点部署集群七、将 node 节点加入集群八、部署…

(一)Readme 了解kurator

Kurator 是一个开源的分布式云原生平台,旨在帮助用户构建自己的分布式云原生基础设施,并出金企业进行数字化转型。 概览 云原生软件栈:kurator结合了多种流行的云原生软件栈(Kubernetes、Istio、Prometheus等)&#…

学习笔记14:CNAME 记录值、TTL (Time to Live)、Redis 的 Pool 对象池、钩子函数、依赖注入

CNAME 记录值 CNAME 记录是一种DNS记录类型,它将一个域名映射到另一个域名。这通常用于将一个子域名指向另一个域名,或者将一个域名指向一个不同的顶级域。 用途:用于域名别名,负载均衡,或者在更换域名时保持服务的连…

CSS(四)——CSS Text(文本)

CSS Text(文本&#xff09; 文本颜色 颜色属性被用来设置文字的颜色。 颜色是通过CSS最经常的指定&#xff1a; 十六进制值 - 如: &#xff03;FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 - 如: red 一个网页的背景颜色是指在主体内的选择&#xff0c;即<body…

【C#】Func、Action和Predicate

使用情景 根据不同参数值&#xff0c;执行不同方法&#xff0c;执行完方法后&#xff0c;执行相同的操作 函数 Func Func 委托表示有返回值的方法。它最多可以接受 16 个输入参数&#xff0c;并且必须返回一个值。在 Func 委托中&#xff0c;最后一个类型参数始终是返回类型…

【C语言】英寸英尺转换米

运行的结果为 我们百度一下 恒明显我们的答案错了,那这个是为什么呢? 问题就出现在计算的地方,c语言规定两个整数计算,那么小数的部分会被丢弃. 如果计算的两个数中有一个数为小数,那么会将两个数都变为小数在进行计算,结果也会是小数. 那么我们现在就有解决办法了. 方法一…

gbase8s自动同步数据及加入集群的脚本

cat remote.sh #!/bin/bash #此脚本永远在主节点上执行&#xff0c;需要同步的节点永远是备节点 #主节点pri开头&#xff0c;备节点hac开头 #开始执行脚本之前一定要关闭hac节点&#xff0c;并且系统空间要大于备份数据文件的大小 #执行之前请手动改好ip和主备节点的实例名及g…

开源浪潮下的航行:趋势洞察与个人航迹

引言 在全球经济与科技浪潮的推动下&#xff0c;开源软件项目如同一股不可阻挡的洪流&#xff0c;正以前所未有的速度席卷整个技术生态。它不仅促进了技术的快速迭代与创新&#xff0c;更搭建起了一个跨越国界、行业与组织的协作平台。本文旨在探讨当前开源项目的发展趋势&…

SSH不用每次都输入密码的方法

首先&#xff0c;打开自己电脑上的终端cmd 输入&#xff1a; ssh-keygen -t rsa 一直回车。 然后我的服务器因为某些原因不能直接复制到远程终端 所以我手动复制&#xff0c;先打开要复制的公钥。这个地址就看你的程序默认给你创建的文件在哪里了。 cat .ssh/id_rsa.pub 这个--…

【时时三省】unity test 测试框架 下载

目录 1&#xff0c;unity test 测试框架介绍 2&#xff0c;源码下载 3&#xff0c;目录架构 4&#xff0c;git for window 下载安装方法&#xff1a; 1&#xff0c;unity test 测试框架介绍 Unity是一个用于C语言的轻量级单元测试框架。它由Throw The Switch团队开发&#…