逻辑回归|logistic回归原理

news/2024/7/25 21:56:11/文章来源:https://blog.csdn.net/qq_44511981/article/details/138043377

文章目录

  • 逻辑回归
    • 问题描述
    • 模型建模
    • 模型求解
    • 多分类


逻辑回归

问题描述

首先我们考虑一个二分类的问题,假设我们有一个观测向量 x = ( x 1 , x 2 , . . . , x m ) \mathbf{x} = (x_1, x_2, ..., x_m) x=(x1,x2,...,xm),其中 m m m 是特征的数量,以及一个二元响应变量 y y y y y y 可以取值为0或1,代表类别为 C 1 , C 2 C_1,C_2 C1C2

模型建模

首先,我们假设存在一个线性关系,将特征与响应变量联系起来:

z = β 0 + β 1 x 1 + β 2 x 2 + . . . + β m x m = β T x z = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_mx_m =\beta^Tx z=β0+β1x1+β2x2+...+βmxm=βTx
我们也可以使用非线性的基函数将数据进行变换:
z = β 0 + β 1 ϕ ( x 1 ) + β 2 ϕ ( x 2 ) + . . . + β m ϕ ( x m ) = β T ϕ ( x ) z = \beta_0 + \beta_1\phi(x_1) + \beta_2\phi(x_2) + ... + \beta_m\phi(x_m) =\beta^T\phi(x) z=β0+β1ϕ(x1)+β2ϕ(x2)+...+βmϕ(xm)=βTϕ(x)

其中, β 0 , β 1 , . . . , β m \beta_0, \beta_1, ..., \beta_m β0,β1,...,βm 是需要估计的参数。
因为线性回归得到的预测值在 ( − ∞ , ∞ ) (-\infty,\infty) (,)之间,我们可以通过逻辑函数(或称为sigmoid函数)将这个线性关系映射到 ( 0 , 1 ) (0,1) (0,1)区间,以得到 y = 1 y=1 y=1的概率:
y n = p ( C 1 ∣ β ) = 1 1 + e − z y_n = p(C_1|\beta) = \frac{1}{1+e^{-z}} yn=p(C1β)=1+ez1

模型求解

首先一个二分类的分布可以写成
y n t n ( 1 − y n ) 1 − t n y_n^{t_n}(1-y_n)^{1-t_n} yntn(1yn)1tn
我们使用极大释然估计来求解模型的参数:
p ( t ∣ β ) = ∏ n = 1 N y n t n ( 1 − y n ) 1 − t n p(t|\beta)=\prod\limits_{n=1}^N y_n^{t_n}(1-y_n)^{1-t_n} p(tβ)=n=1Nyntn(1yn)1tn
ln p ( t ∣ β ) = ∑ n = 1 N t n ln y n + ( 1 − t n ) ln ( 1 − y n ) \text{ln}p(t|\beta)=\sum\limits_{n=1}^N t_n \text{ln} y_n + (1-t_n)\text{ln}(1-y_n) lnp(tβ)=n=1Ntnlnyn+(1tn)ln(1yn)
从上述可以看出似然函数就是交叉熵损失函数相反数,也是二分类十分常用的损失函数。
∂ ln p ( t ∣ β ) ∂ β = ∑ n = 1 N { t n σ ( z ) − 1 − t n 1 − σ ( z ) } ∂ σ ( z ) ∂ z = ∑ n = 1 N { t n σ ( z ) − 1 − t n 1 − σ ( z ) } σ ( z ) ( 1 − σ ( z ) ) ∂ z ∂ β = ∑ n = 1 N { t n ( 1 − σ ( z ) ) − ( 1 − y n ) σ ( z ) } ϕ ( x n ) = ∑ n = 1 N { t n − y n } ϕ ( x n ) = 0 \begin{align*} \frac{\partial \text{ln}p(t|\beta)}{\partial \beta} &= \sum\limits_{n=1}^N\{\frac{t_n}{\sigma(z)}- \frac{1-t_n}{1-\sigma(z)} \}\frac{\partial \sigma(z)}{\partial z} \\ &= \sum\limits_{n=1}^N\{\frac{t_n}{\sigma(z)}- \frac{1-t_n}{1-\sigma(z)} \} \sigma(z)(1-\sigma(z)) \frac{\partial z}{\partial \beta} \\ &= \sum\limits_{n=1}^N \{t_n (1-\sigma(z)) - (1-y_n)\sigma(z) \}\phi(x_n) \\ &= \sum\limits_{n=1}^N \{t_n-y_n\}\phi(x_n) \\ &=0 \end{align*} βlnp(tβ)=n=1N{σ(z)tn1σ(z)1tn}zσ(z)=n=1N{σ(z)tn1σ(z)1tn}σ(z)(1σ(z))βz=n=1N{tn(1σ(z))(1yn)σ(z)}ϕ(xn)=n=1N{tnyn}ϕ(xn)=0
很遗憾我们很难从导数等于0求得一个闭式解,我们可以使用梯度下降法求解 β \beta β

我么可以把结果写成矩阵的形式,
首先我们定一个设计矩阵,令 Φ = { ϕ ( x 1 ) T , ϕ ( x 2 ) T , ⋅ ⋅ ⋅ , ϕ ( x n ) T } T \Phi=\{\phi(x_1)^T, \phi(x_2)^T,\cdot\cdot\cdot,\phi(x_n)^T\}^T Φ={ϕ(x1)T,ϕ(x2)T,,ϕ(xn)T}T
Φ = [ ϕ 0 ( x 1 ) ϕ 1 ( x 1 ) ⋯ ϕ D ( x 1 ) ϕ 0 ( x 2 ) ϕ 1 ( x 2 ) ⋯ ϕ D ( x 2 ) ⋮ ⋮ ⋱ ⋮ ϕ 0 ( x N ) ϕ 1 ( x N ) ⋯ ϕ D ( x N ) ] \Phi = \begin{bmatrix} \phi_0(x_1) & \phi_1(x_1) & \cdots & \phi_D(x_1) \\ \phi_0(x_2) & \phi_1(x_2) & \cdots & \phi_D(x_2) \\ \vdots & \vdots & \ddots & \vdots \\ \phi_0(x_N) & \phi_1(x_N) & \cdots & \phi_D(x_N) \end{bmatrix} Φ= ϕ0(x1)ϕ0(x2)ϕ0(xN)ϕ1(x1)ϕ1(x2)ϕ1(xN)ϕD(x1)ϕD(x2)ϕD(xN)
ϕ ( x n ) T = { ϕ 0 ( x n ) , ⋯ , ϕ D ( x n ) } \phi(x_n)^T=\{\phi_0(x_n),\cdots,\phi_D(x_n)\} ϕ(xn)T={ϕ0(xn),,ϕD(xn)}
∂ ln p ( t ∣ β ) ∂ β = Φ T ( y − t ) \frac{\partial \text{ln}p(t|\beta)}{\partial \beta} = \Phi^T(y-t) βlnp(tβ)=ΦT(yt)
参数的更新可以写成:
β t + 1 = β t − λ ∑ n = 1 N { t n − 1 1 + e β t T ϕ ( x ) } ϕ ( x n ) = β t − λ Φ T ( y − t ) \begin{align*} \beta_{t+1} &= \beta_{t} - \lambda \sum\limits_{n=1}^N \{t_n-\frac{1}{1+e^{\beta_{t}^T\phi(x)}}\}\phi(x_n) \\ &= \beta_t - \lambda \Phi^T(y-t) \end{align*} βt+1=βtλn=1N{tn1+eβtTϕ(x)1}ϕ(xn)=βtλΦT(yt)

也可以使用牛顿法求解
∂ 2 ln p ( t ∣ β ) ∂ β ∂ β T = ∑ n = 1 N y n ( 1 − y n ) ϕ ( x n ) ϕ ( x n ) T = Φ T R Φ \begin{align*} \frac{\partial^2 \text{ln}p(t|\beta)}{\partial \beta \partial \beta^T} &= \sum_{n=1}^{N} y_n(1-y_n)\phi(x_n)\phi(x_n)^T \\ &= \Phi^TR\Phi \end{align*} ββT2lnp(tβ)=n=1Nyn(1yn)ϕ(xn)ϕ(xn)T=ΦTRΦ
其中 R R R N × N N\times N N×N的对角阵,每个元素为: R n n = y n ( 1 − y n ) R_{nn}=y_n(1-y_n) Rnn=yn(1yn),那么牛顿法的更新公式可以写成:

w t + 1 = w t − ( Φ T R Φ ) − 1 Φ T ( y − t ) \begin{align*} w_{t+1} = w_t - (\Phi^TR\Phi)^{-1}\Phi^T(y-t) \end{align*} wt+1=wt(ΦTRΦ)1ΦT(yt)

多分类

对与多分类问题,我们不能再使用 σ \sigma σ函数,而是使用softmax函数作为概率,对于一个数据的类别,我们使用one-of-K编码表示 t n t_n tn,那么属于类别 C k C_k Ck的概率可以表达为:
p ( C k ∣ β k ) = y k = e x p ( a k ) ∑ j e x p ( a j ) p(C_k|\beta^k)=y_k=\frac{exp(a_k)}{\sum_j exp(a_j)} p(Ckβk)=yk=jexp(aj)exp(ak)
其中 a k = w k T ϕ ( x n ) a_k=w_k^T\phi(x_n) ak=wkTϕ(xn) β k = ( β 1 k , β 2 k , ⋯ , β m k ) T \beta^k=(\beta_1^k,\beta_2^k,\cdots, \beta_m^k)^T βk=(β1kβ2k,βmk)T表示第 k k k类的参数
那么样本 n n n的概率分布为:
y n = ∏ k = 1 K y n k t n k y_{n} =\prod^K_{k=1} {y_{nk}}^{t_{nk}} yn=k=1Kynktnk
其中 t n k t_{nk} tnk表示one-of-K编码中的第 k k k个值
使用极大释然估计,那么似然函数为:
p ( T ∣ β 1 , β 2 , ⋯ , β K ) = ∏ n = 1 N ∏ k = 1 K y n k t n k p(T|\beta^1,\beta^2,\cdots,\beta^K)=\prod^N_{n=1}\prod^K_{k=1} {y_{nk}}^{t_{nk}} p(Tβ1,β2,,βK)=n=1Nk=1Kynktnk
其中 T T T是一个 k k k维的列向量,对似然函数取对数,得到交叉熵损失的相反数:
ln p ( T ∣ β 1 , β 2 , ⋯ , β K ) = ∑ n = 1 N ∑ k = 1 K t n k ln y n k \text{ln}p(T|\beta^1,\beta^2,\cdots,\beta^K)=\sum^N_{n=1}\sum^K_{k=1} t_{nk} \text{ln} {y_{nk}} lnp(Tβ1,β2,,βK)=n=1Nk=1Ktnklnynk
似然函数分别对 β k \beta^k βk求导:
∂ ln p ( T ∣ β 1 , β 2 , ⋯ , β K ) ∂ β k = ∑ n = 1 N ( y n k − t n k ) ϕ ( x n ) \frac{\partial \text{ln}p(T|\beta^1,\beta^2,\cdots,\beta^K)}{\partial \beta^k} = \sum^N_{n=1}({y_{nk}-t_{nk}})\phi(x_n) βklnp(Tβ1,β2,,βK)=n=1N(ynktnk)ϕ(xn)
似然函数分别对 β j \beta^j βj二次偏导得到Hessian矩阵:
∂ 2 ln p ( T ∣ β 1 , β 2 , ⋯ , β K ) ∂ β j ∂ β k T = ∑ n = 1 N y n j ( I j k − y n k ) ϕ ( x n ) ϕ ( x n ) T \frac{\partial^2 \text{ln}p(T|\beta^1,\beta^2,\cdots,\beta^K)}{\partial \beta^j \partial {\beta^k}^T} = \sum^N_{n=1} y_{nj}(I_{jk} - y_{nk})\phi(x_n)\phi(x_n)^T βjβkT2lnp(Tβ1,β2,,βK)=n=1Nynj(Ijkynk)ϕ(xn)ϕ(xn)T
因为 y n j y_{nj} ynj在0到1之间,因此Hessian矩阵是正定的,交叉熵误差函数为二次凸函数,因此一定有最优解。

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

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

相关文章

【Unity入门】认识Unity编辑器

Unity 是一个广泛应用于游戏开发的强大引擎,从 1.0 版本开始到现在,其编辑器的基本框架一直保持稳定。其基于组件架构的设计,使得界面使用起来直观且高效。为了更好地理解 Unity 的界面,我们可以将其比喻为搭建一个舞台。以下是对…

uni微信小程序input框过滤中文字节以及规定以外的符号

问题描述 需求是输入账号只能为手机号、邮箱、字母和数字组成的字符串,那么就是所有大小写字母、数字、以及符号 - _ . 四种。 条件限制 微信小程序无法直接通过type属性实现,type属性中没有专门为只允许英文字母的输入类型。详情见input | uni-ap…

【windows】Total Uninstall:一款功能强大的完全卸载软件

软件介绍 Total Uninstall是一款专业的软件卸载工具,旨在帮助用户彻底地清除计算机上的应用程序,包括与应用程序相关的所有文件和注册表项。以下是Total Uninstall的一些主要功能和特点: 完全卸载:软件可以监视应用程序的安装过程…

使用Django实现WebSocket

文章目录 安装依赖编写Consumer配置路由在模板中使用WebSocket运行应用 WebSocket是一种在单个TCP连接上进行全双工通信的协议,在Web开发中被广泛应用于实时通信和数据推送。本文将介绍如何在Django中使用WebSocket来实现实时通信功能。 安装依赖 首先&#xff0…

基于Java实现震中附近风景区预警可视化分析实践

目录 前言 一、空间数据说明 1、表结构信息展示 2、空间范围查询 二、Java后台开发实现 1、模型层设计与实现 2、控制层设计与实现 三、Leaflet地图开发 1、地震震中位置展示 2、百公里风景区列表展示 3、风景区列表展示 4、附近风景区展示 四、总结 前言 地震这类…

prompt提示词:如何让AI帮你提一个好问题

我们看完一篇文章的时候,有时候发给AI后,不知道如何问AI,不知道问哪些问题,你使用这个提示词,就可以让AI帮你想一个好问题,然后你用AI想好的问题再去问AI 能提出一个好的问题是非常难的 提示词 结合文章…

免费插件集-illustrator插件-Ai插件-文本对象分行

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,进行文本对象分行。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&…

【头歌】计算机网络DHCP服务器配置第二关access口配置答案

头歌计算机网络DHCP服务器配置第二关access口配置操作步骤 任务描述 本关任务:创建 vlan ,并且将与 pc 机相连接口划分 vlan 。 操作要求 在第一关的拓扑图的基础上,配置交换机,具体要求如下: 1、在特权模式下进入 vla…

Day06-Mybatis

1. Mybatis介绍 2. Mybatis连接数据库并返回数据事例 连接oracle数据的设置方式 spring.application.namespringboot-mybatis spring.datasource.driver-class-nameoracle.jdbc.OracleDriver spring.datasource.urljdbc:oracle:thin:192.168.100.66:1521:orcl spring.datasour…

IDEA升级web项目为maven项目乱码

今天将一个java web项目改造为maven项目。 首先&#xff0c;创建一个新的maven项目&#xff0c;将文件拷贝到新项目中。 其次&#xff0c;将旧项目的jar包&#xff0c;在maven的pom.xml做成依赖 接着&#xff0c;把没有maven坐标的jar包在编译的时候也包含进来 <build>…

redis数据类型之string,list

华子目录 key操作说明SCAN cursor [MATCH pattern] [COUNT count]dump与restorekeys 通配符 示例演示 string说明setbit key offset valuegetbit key offsetsetrange key offset value List结构图相关命令lrem key count valueltrim key count value示例&#xff1a;使用 LTRIM…

从alpine构建预装vcpkg的docker image用于gitea actions CI

动机 想要构建一个基于vcpkg的交叉编译容器平台用于cpp项目的CI&#xff08;自动集成&#xff09;&#xff0c;此处仅提供最基础的image&#xff0c;amd64的机子上构建完成后大小为533兆&#xff08;着实不小&#x1f613;&#xff09;&#xff0c;各位看官可以在此基础上自行…

性能测试(一)—— 性能测试理论+jmeter的使用

1.性能测试介绍 定义&#xff1a;软件的性能是软件的一种非功能特性&#xff0c;它关注的不是软件是否能够完成特定的功能&#xff0c;而是在完成该功能时展示出来的及时性。 由定义可知性能关注的是软件的非功能特性&#xff0c;所以一般来说性能测试介入的时机是在功能测试完…

Jetson Orin Nano v6.0 + tensorflow2.15.0+nv24.05 GPU版本安装

Jetson Orin Nano v6.0 tensorflow2.15.0nv24.05 GPU版本安装 1. 源由2. 步骤2.1 Step1&#xff1a;系统安装2.2 Step2: nvidia-jetpack安装2.3 Step3&#xff1a;jtop安装2.4 Step4&#xff1a;h5py安装2.5 Step5&#xff1a;tensorflow安装2.6 Step6&#xff1a;jupyterlab安…

SpringBoot——数据访问

优质博文&#xff1a;IT-BLOG-CN 对于数据访问层&#xff0c;无论是 SQL 还是 NoSQL&#xff0c;SpringBoot 默认采用整合 Spring Data 的方式进行统一处理&#xff0c;添加大量自动配置&#xff0c;屏蔽了很多设置。引入各种 xxxTemplate&#xff0c;xxxRepository 来简化我…

2024年上半年软件系统架构师考试【回忆版】

文章目录 考试时间考试地点综合知识案例分析1、微服务架构的优点和缺点2、质量属性的6个要素3、分布式锁 Redis的缺点4、MongoDB 存储矢量图的优势 论文回忆版论文一、论单元测试的设计与应用论文二、论大数据模型的设计与应用论文三、论模型驱动的架构设计及应用论文四、论云自…

Spring Boot中如何查询PGSQL分表后的数据

数据库用的pgsql&#xff0c;在表数据超过100w条的时候执行定时任务进行了分表&#xff0c;分表后表名命名为原的表名后面拼接时间&#xff0c;如原表名是card_device_trajectory_info&#xff0c;分表后拼接时间后得到card_device_trajectory_info_20240503&#xff0c;然后分…

量子密钥分发系统基础器件(一):光纤干涉仪

干涉仪的基本原理是利用波的叠加来获得波的相位信息&#xff0c;从而获取实验中所关心的物理量。光纤干涉仪是由光学干涉仪发展而来的&#xff0c;利用光纤实现光的干涉&#xff0c;由于光纤取代透镜系统构成的光路具有柔软、形状可随意变化、传输距离远等特点&#xff0c;当前…

RT-DETR算法改进【NO.1】借鉴CVPR2024中的StarNet网络StarBlock改进算法

前 言 YOLO算法改进的路有点拥挤,尝试选择其他的baseline作为算法研究,可能会更加好发一些文章。后面将陆续介绍RT-DETR算法改进的方法思路。 很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解…

HTML静态网页成品作业(HTML+CSS)——动漫熊出没介绍网页(3个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有3个页面。 二、作品演示 三、代…