逻辑回归|logistic回归原理

文章目录

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


逻辑回归

问题描述

首先我们考虑一个二分类的问题,假设我们有一个观测向量 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.mzph.cn/news/843866.shtml

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

相关文章

拉普拉斯IPO:科技与产业深度融合,实现业务领域延展

我国拥有全球最具竞争优势的光伏产业链,基于降本增效的需求,光伏产业对于技术革新具有持续的需求。拉普拉斯新能源科技股份有限公司(以下简称“拉普拉斯”)凭借深厚的技术积累,以及对光伏产业深刻的理解,聚…

zabbix配置自动发现规则模版-snmp

配置-->模版-->创建模版 找到刚才创建的模版进行编辑 创建一个自动发现规则(SNMP OID 一般配置表中较有代表性的字段的OID) 修改监控项原型 创建一台主机并链接模版 测试,获得预计自动发现的监控项的值 上述测试不为空&#xff0c…

成都蓝蛙科技引领AIGC创新,亮相中国AIGC开发者大会

2024年5月25日,第三届AIGC中国开发者大会在北京举行,蓝蛙科技公司CEO兼创始人李辰受邀出席并发表主题演讲。作为开源框架GeneralAgent的作者,发表了题为“Agent框架的挑战和解决方案”的精彩演讲。李辰先生深入探讨了在构建和部署基于大型语言…

【C++】数据结构:哈希桶

哈希桶(Hash Bucket)是哈希表(Hash Table)实现中的一种数据结构,用于解决哈希冲突问题。哈希表是一种非常高效的数据结构,它通过一个特定的函数(哈希函数)将输入数据(通常…

移动应用程序设计详解:基本概念和原理

移动应用程序设计是什么? 一般来说,应用程序设计师的核心职责是让用户有体验应用的欲望,而开发者负责让它正常工作。移动应用程序设计包括用户界面 (UI) 和用户体验 (UX)。设计者负责应用程序的整体风格,包括配色方案、字体选择、…

基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 块定义与相似度计算 ​4.2 贝叶斯框架下的加权融合 4.3 加权最小均方误差估计 5.完整程序 1.程序功能描述 基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真&#xff0c…

k8s ceph(静态pvc)

1.在 Kubernetes 节点上安装ceph-common 包。这个包包含了连接到 Ceph 集群所需的工具和库。可以使用以下命令在每个节点上安装: sudo apt-get install ceph-common2.在 Kubernetes 中创建一个 Secret 对象,用于存储连接到 Ceph 集群所需的密钥和配置信息…

SA316系列音频传输模块-传输距离升级音质不打折

SA316是思为无线研发的一款远距离音频传输模块,音频采样率为48K,传输距离可达200M。为了满足更多用户需求,思为无线在SA316基础上进一步增加传输距离推出SA316F30。相比SA316性能,同样其采用48K采样,-96dBm灵敏度&…

SAP PP学习笔记 - 错误 CX_SLD_API_EXCEPTION - Job dump is not fully saved (too big)

我这个错误是跑完MRP,然后在MD04查看在库/所有量一览, 点计划手配(Planned order 计划订单)生成 制造指图(Production order 生产订单), 到目前这几步都OK,然后在制造指图界面点保…

Linux之sshpass命令

介绍 sshpass是一个工具,用于通过SSH连接到远程服务器时自动输入密码。它允许您在命令行中指定密码,以便在建立SSH连接时自动进行身份验证。 安装 # 以centos为例 yum install sshpass -y 使用方法 sshpass [-f filename | -d num | -p password | …

校园周边美食探索及分享平台,基于 SpringBoot+Vue+MySQL 开发的前后端分离的校园周边美食探索及分享平台设计实现

目录 一. 前言 二. 功能模块 2.1. 前台首页功能模块 2.2. 用户功能模块 2.3. 管理员功能模块 三. 部分代码实现 四. 源码下载 一. 前言 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起&#xff0…

Makefile学习笔记19|u-boot顶层Makefile05

Makefile学习笔记19|u-boot顶层Makefile05 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 这里是目录 定义常见构建工具变量 # Make variables (CC, etc...)AS $(CROSS_COMPILE)as # Always use GNU ld ifneq ($(shell $(CROSS_COMPI…

Vue从入门到实战Day12~14 - Vue3大事件管理系统

一、用到的知识 Vue3 compositionAPIPinia / Pinia持久化处理Element Plus(表单校验,表格处理,组件封装)pnpm 包管理升级Eslint prettier 更规范的配置husky(Git hooks工具):代码提交之前,进行校验请求模…

OrangePi Kunpeng Pro ——信创再接力

文章目录 OrangePi Kunpeng Pro ——信创再接力1. 绪论1.1 开箱 2. 硬件介绍2.1 硬件配置2.2 硬件清单 3. 网络测试3.1 有线连接3.2 WIFI连接 4.查看系统配置5. 安装常用软件5.1 安装python5.1.1 更换pip源为国内清华源 5.2 安装docker5.3 安装opencv5.4 安装dlib 6.CPU多进程能…

LeetCode //C - 143. Reorder List

143. Reorder List You are given the head of a singly linked-list. The list can be represented as: L0 → L1 → … → Ln - 1 → Ln Reorder the list to be on the following form: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … You may not modify the values i…

MVCC机制

个人理解篇,不一定对,应付面试的时候看的 MVCC(Multi-Version Concurrency Control)全称多版本并发控制,主要用在隔离模式下的提交读、可重复读模式下,依赖于readview和undolog链 一、readview 1、结构 字段 备注 m_ids 活跃…

如何优化大文件读取时的性能

1、分块读取 1、不要一次性将整个文件加载到内存中,而是将其分割成多个较小的块(例如,每块1MB或更大),然后逐块读取和处理。 2、使用FileInputStream和BufferedInputStream来分块读取文件。 2、使用缓冲区 1、使用…

代码随想录——合并二叉树(Leetcode617)

题目链接 层序遍历 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) …

多线程知识04

新建 T1、T2、T3 三个线程,如何保证它们按顺序执行 在Java中,可以使用线程的join()方法来保证线程的顺序执行。join()方法会将线程暂停,直到调用该方法的线程结束执行为止。 以下是创建T1、T2、T3三个线程,并按顺序执行的示例代码…

python项目的数据库迁移工具,类似于Flyway的数据库迁移工具有那些?

Python项目中常用的数据库迁移工具主要有以下几种: Alembic: 这是一个轻量级的数据库迁移工具,主要用于SQLAlchemy项目。它通过版本控制来跟踪和管理数据库模式的变更。 Django Migrations: Django框架自带的迁移工具,用于创建和应用数据库模式变更。 Flask-Migrate: 基于Ale…