逻辑回归中的损失函数梯度下降

news2024/12/23 9:44:48

一、引言

        逻辑回归中的损失函数通常采用的是交叉熵损失函数(cross-entropy loss function)。在逻辑回归中,我们通常使用sigmoid函数将线性模型的输出转换为概率值,然后将这些概率值与实际标签进行比较,从而计算损失。

二、交叉熵损失函数

        在逻辑回归解决二分类问题的学习中,我们认识到逻辑回归的输出结果可以看成输入x^{(i)}时输出为正例(y^{(i)}=1)的概率。

\hat{y}=P(y=1|x;\vec{w},b)

分解如下:

IF \ y=1:P(y|x)=\hat{y}\\ IF \ y=0:P(y|x)=1-\hat{y}

        于是我们便想到可以通过比较模型预测的概率分布和实际标签之间的差异来衡量模型的准确性。在信息论中,交叉熵用来比较两个概率分布之间的差异。

定义:交叉熵损失函数(Cross-entropy loss function)是一种用于衡量模型输出与实际标签之间差异的损失函数。在机器学习中,交叉熵损失函数通常用于分类问题中,特别是在逻辑回归和神经网络等模型中。

对于一个逻辑回归函数:

f_{\vec{w},b}(\vec{x})=\frac{1}{1+e^{ -(wx^{T}+b) }}

损失函数公式:   

L(f_{\vec{w},b}(\vec{x}^{(i))}),y^{(i)})=\left\{\begin{matrix} -log(f_{\vec{w},b}(\vec{x}^{(i))}))& if y^{(i)}=1\\ -log(1-f_{\vec{w},b}(\vec{x}^{(i))}))&ify^{(i)}=0 \end{matrix}\right.

简化后的公式:

L(f_{\vec{w},b}(\vec{x}^{(i))}),y^{(i)})=-y^{(i)}log(f_{\vec{w},b}(\vec{x}^{(i)}))-(1-y^{(i)})log(1-f_{\vec{w},b}(\vec{x}^{(i)}))

(整体)损失函数:

J(\vec{w},b)=-\frac{1}{m}\sum_{i=1}^{m}L_{\vec{w},b}(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)})

根据损失函数的定义,当f_{\vec{w},b}(\vec{x}^{(i)})的值与目标值y^{(i)}越接近,损失函数值越小,预测越准确。

所以:

if \ y=0: \ f_{\vec{w},b}(\vec{x}^{(i)})\rightarrow 0 \ then \ loss\rightarrow 0\\ if \ y=1: \ f_{\vec{w},b}(\vec{x}^{(i)})\rightarrow 1\ then \ loss\rightarrow \infty    

以预测肿瘤的例子说明,如果模型预测患者的肿瘤极大概率(如99.9%)是恶性,而实际却不是恶性,我们会得到一个极大的损失函数值。简单来说,模型的预测值距离y的真实值越远,损失越大。

三、为什么不使用均方差损失函数

非凸性:均方差损失函数在逻辑回归中会导致损失函数变成非凸函数,这会导致优化过程变得非常困难。因为非凸函数有多个局部最小值, 而均方差损失函数可能会陷入局部最小值而无法到达全局最小值,这回影响模型的训练效果。

输出范围不同:逻辑回归的输出是概率值,范围在0到1之间,而均方差损失函数对于这种概率输出不敏感,它对于离群值(outliers)非常敏感。这意味着即使是一个很小的偏离,也会导致损失函数变得非常大,从而使得模型对于异常值非常敏感。

四、梯度下降实现  

        在线性回归中,我们引入了一种用于求解模型的方法——梯度下降法。对于逻辑回归模型,我们也可以采用相同的方法。

 对于(整体)损失函数:

J(\vec{w},b)=-\frac{1}{m}\sum_{i=1}^{m}\left [ y^{(i)}log(f_{\vec{w},b}(\vec{x}^{(i)}))-(1-y^{(i)})log(1-f_{\vec{w},b}(\vec{x}^{(i)}))\right]

进行以下操作:

repeat{

            w_j=w_j-a\frac{\partial }{\partial w_j}J(\vec{w},b)

            \frac{\partial }{\partial w_{j}}=\frac{1}{m}\sum_{i=1}^{m}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})x^{(i)}_{j}

            

            b=b-a\frac{\partial }{\partial b}J(\vec{w},b)

            \frac{\partial }{\partial b}J(\vec{w},b)=\frac{1}{m}\sum_{i=1}^{m}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})

}simultaneous updates

我们不难发现,逻辑回归的梯度下降和之前线性回归中的梯度下降基本一致,唯一不同的是f_{\vec{w},b}(\vec{x})发生了变化。 所以在逻辑回归中也可以使用特征缩放的方法加快梯度下降法的收敛速度。

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

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

相关文章

2024年mongodb自建三节点副本集详细教程

环境说明 系统centos7.9 自建服务器或云服务器,硬件要求不低于2核2G内存,20G硬盘,文件系统默认是ext4即可。 生产环境最好单独一个磁盘存放数据库,方便数据备份和还原,避免干扰到其他磁盘的运作。 mongodb 4.4.27 …

基于差分进化算法的移动边缘计算 (MEC) 的资源调度分配优化(提供MATLAB代码)

一、优化模型简介 在所研究的区块链网络中,优化的变量为:挖矿决策(即 m)和资源分配(即 p 和 f),目标函数是使所有矿工的总利润最大化。问题可以表述为: max ⁡ m , p , f F miner …

TCP 异常断开连接【重点】

参考链接 https://xiaolincoding.com/network/3_tcp/tcp_down_and_crash.html https://xiaolincoding.com/network/3_tcp/tcp_unplug_the_network_cable.html#%E6%8B%94%E6%8E%89%E7%BD%91%E7%BA%BF%E5%90%8E-%E6%9C%89%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93 关键词&#xff1a…

重构改善既有代码的设计-学习(三):重新组织数据

1、拆分变量(Split Variable) 有些变量用于保存一段冗长代码的运算结果,以便稍后使用。这种变量应该只被赋值一次。 如果它们被赋值超过一次,就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任,它就应该被…

Redis 面试题 | 10.精选Redis高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

利用git上传本地文件

1、建立仓库 2.然后刷新网站,获取下载链接,备用。 3、接下来在本地创建一个文件夹, 4、把github上面的仓库克隆到本地 git clone https://github.com/xxxxx(https://github.com/xxxxx替换成你之前复制的地址) 5、把…

京东高薪招聘GIS开发工程师,细数其背后的商业逻辑

京东以30-50K*16薪的薪资招聘GIS开发工程师。 之前我们介绍过腾讯在智慧城市方向的布局,具体的可以看这里:腾讯在智慧城市方向的布局 今天我们来细数一下京东背后的GIS生意。 01 京东地图 成立时间和所在地 2018年7月,专注于机器人地图和智…

Github 不能访问,提示:port 22: Connection timed out

问题描述 github clone 代码出现错误: $ git clone gitgithub.com:Atlan4/Fnirsi1013D.git Cloning into Fnirsi1013D... ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository.Please make sure you ha…

wayland(wl_shell) + egl + opengles 最简实例

文章目录 前言一、ubuntu 上相关环境准备1. ubuntu 上安装 weston2. 确定ubuntu 上安装的opengles 版本3. 确定安装的 weston 是否支持 wl_shell 接口二、窗口管理器接口 wl_shell 介绍二、代码实例1.egl_wayland_demo.c2. 编译和运行2.1 编译2.2 运行总结参考资料前言 本文主…

单点登陆(SSO)基于CAS实现前后端分离的SSO系统开发「IDP发起」

关于其他前端常见登录实现单点登录方案,请见「前端常见登录实现方案 单点登录方案 」 前沿 单点登录(SSO),英文全称为 Single Sign On。 SSO 是指在多个应用系统中,用户只需要登录一次,就可以访问所有相互…

❤css实用

❤ css实用 渐变色边框(Gradient borders方法的汇总 5种-代码可直接下载) 资源链接 https://download.csdn.net/download/weixin_43615570/88779950?spm1001.2014.3001.5503 给 border 设置渐变色是很常见的效果,实现这个效果有很多思路 1…

SAP EXCEL上传如何实现指定读取某一个sheet页(ALSM_EXCEL_TO_INTERNAL_TABLE)

如何读取指定的EXCEL sheet 页签,比如要读取下图中第二个输出sheet页签 具体实现方法如下: 拷贝标准的函数ALSM_EXCEL_TO_INTERNAL_TABLE封装成一个自定义函数ZCALSM_EXCEL_TO_INTERNAL_TABLE 在自定义函数导入参数页签新增一个参数SHEET_NAME 在源代码…

MacOS 无法ping 通 github.com 解决方案

ping github.com 会显示请求超时: PING github.com (192.30.253.112): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3 Request timeout for icmp_seq 4 Request …

硬件-11-服务器的基础知识

参考服务器基础知识大科普 1 电视剧背景 服务器被誉为互联网之魂。 电视剧《创业年代》是一部有冯绍峰和袁姗姗等人联手主演的一部讲述我国第一批科技创业者创业故事的电视剧,可以说是他们铲下了建设中关村的第一捧土。 电视剧《创业年代》中的潮信公司并没有…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-Tag标签管理实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

特征抽取-----机器学习pycharm软件

导入包 from sklearn.datasets import load_iris # 方法datasets_demo()数据集使用 from sklearn.feature_extraction import DictVectorizer # 方法dict_demo()字典特征抽取用 from sklearn.feature_extraction.text import CountVectorizer # 方法count_demo()文本特征抽…

【Web前端实操11】定位实操_照片墙(无序摆放)

设置一个板块&#xff0c;将照片随意无序摆放在墙上&#xff0c;从而形成照片墙。本来效果应该是很唯美好看的&#xff0c;就像这种&#xff0c;但是奈何本人手太笨&#xff0c;只好设置能达到照片墙的效果就可。 代码如下&#xff1a; <!DOCTYPE html> <html lang&…

企业为何对数据可视化越发看重?

数据可视化&#xff0c;作为信息时代的一项重要技术&#xff0c;正在企业中崭露头角&#xff0c;逐渐成为业务决策和运营管理的得力助手。企业之所以对数据可视化如此重视&#xff0c;是因为它为企业带来了诸多实际利益和战略优势。 首先&#xff0c;数据可视化为企业提供了更…

人工蜂群算法解决Rastrigin函数全局最小值问题的python示例实现

人工蜂群优化算法&#xff08;Artificial Bee Colony Optimization&#xff0c;简称ABC算法&#xff09;是一种基于蜜蜂觅食行为的优化算法&#xff0c;由Karaboga于2005年提出。该算法模拟了蜜蜂群体在寻找食物过程中的行为&#xff0c;通过不断地搜索和信息交流来寻找最优解。…

mapstruct中在怎样将String转化为List

最近在公司遇到了这样一个为题&#xff0c;前端传过来的是一个List<Manager>,往数据库中保存到时候是String&#xff0c;这个String使用谷歌的json转化器。 当查询的时候在将这个数据库中String的数据以List<Manager>的形式返回给前端。 使用mapstruct中在怎样将St…