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

神经网络基础-神经网络补充概念-14-逻辑回归中损失函数的解释

概念

逻辑回归损失函数是用来衡量逻辑回归模型预测与实际观测之间差异的函数。它的目标是找到一组模型参数,使得预测结果尽可能接近实际观测。

理解

在逻辑回归中,常用的损失函数是对数似然损失(Log-Likelihood Loss),也称为交叉熵损失(Cross-Entropy Loss)。它在分类问题中非常常见,特别适用于二分类问题。

公式

假设我们有一组训练样本 ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , … , ( x ( m ) , y ( m ) ) (x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), \ldots, (x^{(m)}, y^{(m)}) (x(1),y(1)),(x(2),y(2)),,(x(m),y(m)),其中 x ( i ) x^{(i)} x(i) 是输入特征, y ( i ) y^{(i)} y(i) 是对应的实际标签(0 或 1)。模型的预测结果为 y ^ ( i ) \hat{y}^{(i)} y^(i),它是由逻辑回归函数转换得到的: y ^ ( i ) = h θ ( x ( i ) ) = 1 1 + e − θ T x ( i ) \hat{y}^{(i)} = h_\theta(x^{(i)}) = \frac{1}{1 + e^{-\theta^T x^{(i)}}} y^(i)=hθ(x(i))=1+eθTx(i)1

对于每个样本,我们可以定义一个对数似然函数:
在这里插入图片描述
其中 m m m 是样本数量。

这个损失函数的意义是,当模型的预测结果与实际标签一致时,对数似然损失趋近于0。当模型的预测与实际不一致时,损失会逐渐增加。因此,优化模型的参数就是通过最小化这个损失函数,使得模型的预测结果尽可能接近实际标签。

逻辑回归损失函数的优化通常使用梯度下降等优化算法。通过迭代更新模型参数,最终使得损失函数达到最小值,从而得到能够对数据进行合理分类的逻辑回归模型。

代码实现

import numpy as np
from sklearn.model_selection import train_test_split# 生成模拟数据
np.random.seed(42)
m = 100
n = 2
X = np.random.randn(m, n)
X = np.hstack((np.ones((m, 1)), X))
theta_true = np.array([1, 2, 3])
y = (X.dot(theta_true) + np.random.randn(m) * 0.2) > 0# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 初始化模型参数
theta = np.zeros(X_train.shape[1])# 定义sigmoid函数
def sigmoid(z):return 1 / (1 + np.exp(-z))# 定义损失函数
def compute_loss(X, y, theta):m = len(y)h = sigmoid(X.dot(theta))loss = (-1/m) * np.sum(y * np.log(h) + (1 - y) * np.log(1 - h))return loss# 定义梯度计算函数
def compute_gradient(X, y, theta):m = len(y)h = sigmoid(X.dot(theta))gradient = X.T.dot(h - y) / mreturn gradient# 执行梯度下降
learning_rate = 0.01
num_iterations = 1000for _ in range(num_iterations):gradient = compute_gradient(X_train, y_train, theta)theta -= learning_rate * gradient# 在测试集上计算损失
test_loss = compute_loss(X_test, y_test, theta)
print("测试集上的损失:", test_loss)
http://www.lryc.cn/news/128913.html

相关文章:

  • UG NX二次开发(C++)-PK函数创建一条圆弧曲线
  • AndroidStudio中修改打包生成的apk名称
  • 多个springboot整合使用rabbitmq(使用注解的方式)
  • 《Effective C++中文版,第三版》读书笔记2
  • 虫情测报系统的工作原理及功能优势
  • UWB定位技术详细介绍
  • PiplineADC学习一:
  • Linux elasticsearch设置为开机自启动服务
  • WinForm内嵌Unity3D
  • 关于vue中v-for绑定数据重新渲染的问题
  • 全面解析 Axios 请求库的基本使用方法
  • rust踩雷笔记3——生命周期的理解
  • windows权限维持—黄金白银票据隐藏用户远控RustDeskGotoHttp
  • vscode conda activate激活环境出错
  • 信息与通信工程面试准备——数学知识|正态分布|中心极限定理
  • Mybatis多表查询与动态SQL的使用
  • url 和 uri 有什么区别?
  • HCIP VLAN实验
  • 无涯教程-Perl - waitpid函数
  • Redis之缓存雪崩、缓存击穿、缓存穿透问题
  • 九五从零开始的运维之路(其三十五)
  • 5G科技防汛,助力守护一方平安
  • 用easyui DataGrid编辑树形资料
  • Azure存储账户
  • 数字人服装布料解算技术服务,让数字人驱动更真实
  • 达梦数据库安装与初始化超详细教程
  • vue输入框只能输入数字类型,禁止输入和粘贴e
  • 金盘 微信管理平台 getsysteminfo 未授权访问漏洞[2023-HW]
  • 02-前端基础第二天-HTML5
  • i18n 配置vue项目中英文语言包(中英文转化)