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

逻辑回归代价函数

逻辑回归的代价函数通常使用交叉熵损失来定义。这种损失函数非常适合于二元分类问题。

本篇来推导一下逻辑回归的代价函数。

首先,我们在之前了解了逻辑回归的定义:逻辑回归模型是一种用于二元分类的模型,其预测值是一个介于0和1之间的概率。模型的形式是一个S形的逻辑函数(sigmoid函数),但是sigmoid函数的参数到底要选哪个,就需要对sigmoid函数的结果进行评判,因此也就需要第二步:损失评估。

举个例子:

假设我们有一个逻辑回归模型,用来预测学生是否会通过最终考试。我们有两个特征:学生的出勤率和平均成绩。模型的目标是基于这些特征预测学生是否会通过考试("通过"记为1,"不通过"记为0)。

特征和参数
  • 假设特征向量 x = [ x 1 x 2 ] x = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} x=[x1x2],其中 x 1 x_1 x1是学生的出勤率, x 2 x_2 x2是学生的平均成绩。
  • 模型的参数为 θ = [ θ 0 θ 1 θ 2 ] \theta = \begin{bmatrix} \theta_0 \\ \theta_1 \\ \theta_2 \end{bmatrix} θ= θ0θ1θ2 ,其中 θ 0 \theta_0 θ0是偏置项, θ 1 \theta_1 θ1 θ 2 \theta_2 θ2分别是与出勤率和平均成绩相关的权重。
计算 h ( x ) h(x) h(x)

模型会计算 h ( x ) h(x) h(x),即给定特征时通过考试的预测概率。这是通过sigmoid函数来完成的:

h θ ( x ) = 1 1 + e − ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h_\theta(x) = \frac{1}{1 + e^{-(\theta_0 + \theta_1 x_1 + \theta_2 x_2)}} hθ(x)=1+e(θ0+θ1x1+θ2x2)1

假设对于一个特定学生,出勤率 x 1 = 0.85 x_1 = 0.85 x1=0.85(85%),平均成绩 x 2 = 75 x_2 = 75 x2=75,而模型参数为 θ 0 = − 4 \theta_0 = -4 θ0=4 θ 1 = 10 \theta_1 = 10 θ1=10 θ 2 = 0.05 \theta_2 = 0.05 θ2=0.05。那么 h ( x ) h(x) h(x)的计算为:

h θ ( x ) = 1 1 + e − ( − 4 + 10 × 0.85 + 0.05 × 75 ) h_\theta(x) = \frac{1}{1 + e^{-(-4 + 10 \times 0.85 + 0.05 \times 75)}} hθ(x)=1+e(4+10×0.85+0.05×75)1

计算这个表达式的值(这需要一些数学运算),假设结果是 h θ ( x ) ≈ 0.76 h_\theta(x) \approx 0.76 hθ(x)0.76。这意味着根据我们的模型,这个学生通过考试的预测概率是 76%。基于这个预测,由于概率大于0.5,我们可以预测这个学生会通过考试。

到这一步为止, θ 0 = − 4 \theta_0 = -4 θ0=4 θ 1 = 10 \theta_1 = 10 θ1=10 θ 2 = 0.05 \theta_2 = 0.05 θ2=0.05实际上是我们随机(或经验)取的一组参数数值,但其并不是最佳的,所以就需要有一个代价函数来判断整体的损失(正确率),再进行梯度下降(或其他优化算法)来迭代地调整这些参数,以获得最小化损失。

在逻辑回归中,由于目标结果只有0和1两种情况,因此去计算一组数据的损失的时候就需要区分成两个函数

当 y=1 时的损失函数

Cost when  y = 1 : − log ⁡ ( h θ ( x ) ) \text{Cost when } y = 1: -\log(h_\theta(x)) Cost when y=1:log(hθ(x))

当 y=0 时的损失函数

Cost when  y = 0 : − log ⁡ ( 1 − h θ ( x ) ) \text{Cost when } y = 0: -\log(1 - h_\theta(x)) Cost when y=0:log(1hθ(x))
对应的图如下:
在这里插入图片描述
用一个式子来同时包含这两个情况就是我们的逻辑回归的代价函数(交叉熵损失):
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} \left[ y^{(i)} \log(h_\theta(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)})) \right] J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]
我们可以看到这里 l o g ( h θ ( x ( i ) ) ) log(h_\theta(x^{(i)})) log(hθ(x(i)))前面乘以了 y ( i ) y^{(i)} y(i),所以当目标值为0的时候,这部分就变成了0,也就不会影响后面部分的计算,就很简单地实现了两个式子融合。

相关文章:

  • 【超图】SuperMap iClient3D for WebGL/WebGPU ——暴雪
  • C# WPF上位机开发(动态添加控件)
  • 【NTN 卫星通信】Starlink,费用、服务、市场(二)
  • JavaSE第7篇:封装
  • 使用ffmpeg命令进行视频格式转换
  • 单片机的低功耗模式介绍
  • Spring-整合MyBatis
  • 程序人生15年人生感悟
  • 代码随想录算法训练营第37天|● 738.单调递增的数字 ● 968.监控二叉树 ● 总结
  • 计算机网络 第四章(网络层)【下】
  • Java 内存模型(JMM)探寻原理,深度讲解
  • Android hwcomposer服务启动流程
  • B01、JVM与Java体系结构-01
  • 深入学习《大学计算机》系列之第1章 1.2节——问题描述与抽象
  • SearchWP WordPress高级网站内容搜索插件(包含所有专业扩展)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【Leetcode】104. 二叉树的最大深度
  • Docker入门(二) - Dockerfile
  • JavaScript中的对象个人分享
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Linux gpio口使用方法
  • Linux中的硬链接与软链接
  • v-if和v-for连用出现的问题
  • 从零搭建Koa2 Server
  • 大型网站性能监测、分析与优化常见问题QA
  • 飞驰在Mesos的涡轮引擎上
  • 强力优化Rancher k8s中国区的使用体验
  • 山寨一个 Promise
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 数据科学 第 3 章 11 字符串处理
  • 学习笔记TF060:图像语音结合,看图说话
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • !$boo在php中什么意思,php前戏
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #pragma预处理命令
  • #职场发展#其他
  • (3) cmake编译多个cpp文件
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (WSI分类)WSI分类文献小综述 2024
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (算法)求1到1亿间的质数或素数
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)SvelteKit教程:hello world
  • (转)Sublime Text3配置Lua运行环境
  • .Net Core 笔试1
  • .net的socket示例
  • .net反编译工具
  • .NET构架之我见
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)