《统计学习方法》——逻辑斯蒂回归和最大熵模型

news2024/11/15 15:49:40

参考资料:

  • 《统计学习方法》李航
  • 通俗理解信息熵 - 知乎 (zhihu.com)
  • 拉格朗日函数为什么要先最大化? - 知乎 (zhihu.com)

1 逻辑斯蒂回归

1.1 逻辑斯蒂回归

输入 x = ( x ( 1 ) , x ( 2 ) , ⋯   , x ( n ) , 1 ) T x=(x^{(1)},x^{(2)},\cdots,x^{(n)},1)^T x=(x(1),x(2),,x(n),1)T ,参数 w = ( w ( 1 ) , w ( 2 ) , ⋯   , w ( n ) , b ) T w=(w^{(1)},w^{(2)},\cdots,w^{(n)},b)^T w=(w(1),w(2),,w(n),b)T ,输出 Y ∈ { 0 , 1 } Y\in\lbrace0,1\rbrace Y{0,1} ,逻辑斯蒂模型为:
P ( Y = 1 ∣ x ) = exp ⁡ ( w ⋅ x ) 1 + exp ⁡ ( w ⋅ x ) P ( Y = 0 ∣ x ) = 1 1 + exp ⁡ ( w ⋅ x ) P(Y=1|x)=\frac{\exp(w\cdot x)}{1+\exp(w\cdot x)}\\ P(Y=0|x)=\frac{1}{1+\exp(w\cdot x)}\\ P(Y=1∣x)=1+exp(wx)exp(wx)P(Y=0∣x)=1+exp(wx)1
逻辑斯蒂模型会比较两个条件概率的大小,将 x x x 分到概率值较大的那一类。

1.2 参数估计

π ( x ) = P ( Y = 1 ∣ x ) \pi(x)=P(Y=1|x) π(x)=P(Y=1∣x) ,则似然函数:
L ( w ) = ∏ i = 1 N P ( y i ∣ x i , w ) = ∏ i = 1 N π y i ( x i ) ( 1 − π ( x ) ) 1 − y i \begin{align} L(w)&=\prod\limits_{i=1}^{N}P(y_i|x_i,w)\notag\\ &=\prod\limits_{i=1}^{N}\pi^{y_i}(x_i)\big(1-\pi(x)\big)^{1-y_i}\notag \end{align} L(w)=i=1NP(yixi,w)=i=1Nπyi(xi)(1π(x))1yi
取对数,得:
l ( w ) = ∑ i = 1 N ( y i log ⁡ π ( x i ) + ( 1 − y i ) log ⁡ ( 1 − π ( x i ) ) = ∑ i = 1 N ( y i log ⁡ π ( x i ) + ( 1 − y i ) log ⁡ ( 1 − π ( x i ) ) ) = ∑ i = 1 N ( y i ( w ⋅ x i ) − log ⁡ ( 1 + exp ⁡ ( w ⋅ x i ) ) ) \begin{align} l(w)&=\sum\limits_{i=1}^{N}\Big(y_i\log\pi(x_i)+(1-y_i)\log\big(1-\pi(x_i)\Big)\notag\\ &=\sum\limits_{i=1}^{N}\Big(y_i\log\pi(x_i)+(1-y_i)\log\big(1-\pi(x_i)\big)\Big)\notag\\ &=\sum\limits_{i=1}^{N}\big(y_i(w\cdot x_i)-\log(1+\exp(w\cdot x_i))\big) \end{align} l(w)=i=1N(yilogπ(xi)+(1yi)log(1π(xi))=i=1N(yilogπ(xi)+(1yi)log(1π(xi)))=i=1N(yi(wxi)log(1+exp(wxi)))

采用随机梯度下降法,求出梯度:
KaTeX parse error: Expected 'EOF', got '&' at position 36: …}{\partial w_j}&̲=\sum\limits_{i…

1.3 逻辑蒂斯的推广

逻辑蒂斯也适用于多分类模型:

image-20230629183044227

2 最大熵模型

2.1 最大熵原理

设随机变量 X ∼ P ( X ) X\sim P(X) XP(X) ,则随机变量 X X X 的熵 H ( X ) H(X) H(X) 为:
H ( X ) = − ∑ x P ( x ) log ⁡ P ( x ) H(X)=-\sum\limits_{x}P(x)\log P(x) H(X)=xP(x)logP(x)
进一步地,定义条件熵 H ( Y ∣ X ) H(Y|X) H(YX) 为:
H ( Y ∣ X ) = ∑ x P ( x ) H ( Y ∣ X = x ) = − ∑ x , y P ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) H(Y|X)=\sum_{x}P(x)H(Y|X=x)=-\sum\limits_{x,y}P(x)P(y|x)\log P(y|x) H(YX)=xP(x)H(YX=x)=x,yP(x)P(yx)logP(yx)
所谓最大熵原理,就是在所有符合约束条件的模型中,选取熵最大的模型。

2.2 最大熵模型的定义

一般而言,我们的分类模型是一个条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX) 。给定训练集 T = { ( x 1 , y 1 ) , ⋯   , ( x N , y N ) } T=\lbrace(x_1,y_1),\cdots,(x_N,y_N)\rbrace T={(x1,y1),,(xN,yN)} ,我们可以得到联合经验分布和边缘经验分布:

image-20230629201913054

定义一组特征函数:
f i ( x , y ) = { 1 , x 和 y 满足某一事实 0 , 其他 f_i(x,y)= \begin{cases} 1,&x和y满足某一事实\\ 0,&其他 \end{cases} fi(x,y)={1,0,xy满足某一事实其他
特征函数关于经验分布 P ~ ( X , Y ) \tilde{P}(X,Y) P~(X,Y) 的期望为:
E P ~ ( f i ) = ∑ x , y P ~ ( x , y ) f i ( x , y ) E_{\tilde{P}}(f_i)=\sum\limits_{x,y}\tilde{P}(x,y)f_i(x,y) EP~(fi)=x,yP~(x,y)fi(x,y)
特征函数关于模型 P ( Y ∣ X ) P(Y|X) P(YX) 和经验分布 P ~ ( X ) \tilde{P}(X) P~(X) 的期望为:
E P ( f i ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) f i ( x , y ) E_{P}(f_i)=\sum\limits_{x,y}\tilde{P}(x)P(y|x)f_i(x,y) EP(fi)=x,yP~(x)P(yx)fi(x,y)
模型的约束条件定义为:对所有的特征函数,有 E P ~ ( f i ) = E P ( f i ) E_{\tilde{P}}(f_i)=E_{P}(f_i) EP~(fi)=EP(fi)

2.3 最大熵模型的学习

最大熵的学习等价于约束最优化问题:

image-20230629203205440

C C C 为所有满足约束条件的模型的集合

引入拉格朗日乘数法:
L ( P , w ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ P ( y ∣ x ) + w 0 ( ∑ y p ( y ∣ x ) − 1 ) + ∑ i = 1 n w i ( E P ~ ( f i ) − E P ( f i ) ) L(P,w)=\sum\limits_{x,y}\tilde{P}(x)P(y|x)\log P(y|x)+w_0\big(\sum\limits_{y}p(y|x)-1\big)+\sum\limits_{i=1}^{n}w_i\big(E_{\tilde{P}}(f_i)-E_{P}(f_i)\big) L(P,w)=x,yP~(x)P(yx)logP(yx)+w0(yp(yx)1)+i=1nwi(EP~(fi)EP(fi))
在一般的机器学习模型中,我们往往要先给出模型的表达式( P ( Y ∣ X ; w ) P(Y|X;w) P(YX;w) ),然后通过训练集来选取合适的参数。所以,我们要试着改写优化问题,使之能向一般的机器学习模型靠拢。

首先,上述最优化问题等价于:
min ⁡ P ∈ C max ⁡ w L ( P , w ) \min\limits_{P\in C}\max\limits_{w}L(P,w) PCminwmaxL(P,w)
这是因为如果所有约束条件均被满足,则必有 − H ( P ) = max ⁡ w L ( P , w ) -H(P)=\max\limits_{w}L(P,w) H(P)=wmaxL(P,w) ;如果存在某个约束条件不被满足,则一定可以通过调整对应参数,使得 max ⁡ w L ( P , w ) = + ∞ \max\limits_{w}L(P,w)=+\infty wmaxL(P,w)=+ ,这保证了通过 min ⁡ max ⁡ \min\max minmax 方式得到的解,一定是符合约束条件的解。

然后,我们根据拉格朗日对偶性得到对偶问题:
max ⁡ w min ⁡ P ∈ C L ( P , w ) \max\limits_{w}\min\limits_{P\in C}L(P,w) wmaxPCminL(P,w)
首先求解 min ⁡ P ∈ C L ( P , w ) \min\limits_{P\in C}L(P,w) PCminL(P,w) :
∂ L ( P , w ) ∂ P = ∑ x , y P ~ ( x ) ( 1 + log ⁡ P ( y ∣ x ) ) + ∑ y w 0 − ∑ i = 1 n ( w i ∑ x , y P ~ ( x ) f i ( x , y ) ) = ∑ x , y P ~ ( x ) ( 1 + log ⁡ P ( y ∣ x ) − w 0 − ∑ i = 1 n w i f i ( x , y ) ) \begin{align} \frac{\partial L(P,w)}{\partial P}&=\sum\limits_{x,y}\tilde{P}(x)\big(1+\log P(y|x)\big)+\sum\limits_{y}w_0-\sum\limits_{i=1}^{n}\big(w_i\sum\limits_{x,y}\tilde{P}(x)f_i(x,y)\big)\notag\\ &=\sum\limits_{x,y}\tilde{P}(x)\Big(1+\log P(y|x)-w_0-\sum\limits_{i=1}^{n}w_if_i(x,y)\Big)\notag\\ \end{align} PL(P,w)=x,yP~(x)(1+logP(yx))+yw0i=1n(wix,yP~(x)fi(x,y))=x,yP~(x)(1+logP(yx)w0i=1nwifi(x,y))
令偏导数为 0 0 0 ,在 P ~ ( x ) > 0 \tilde{P}(x)>0 P~(x)>0 的情况下,有:
P ( y ∣ x ) = exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) exp ⁡ ( 1 − w 0 ) P(y|x)=\frac{\exp\Big(\sum\limits_{i=1}^{n}w_if_i(x,y)\Big)}{\exp(1-w_0)} P(yx)=exp(1w0)exp(i=1nwifi(x,y))
通过 ∑ y P ( y ∣ x ) = 1 \sum\limits_{y}P(y|x)=1 yP(yx)=1 消去 w 0 w_0 w0 得:
P ( y ∣ x ) = 1 Z w ( x ) exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) P(y|x)=\frac{1}{Z_w(x)}{\exp\Big(\sum\limits_{i=1}^{n}w_if_i(x,y)\Big)} P(yx)=Zw(x)1exp(i=1nwifi(x,y))
其中:
Z w ( x ) = ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) Z_w(x)=\sum\limits_{y}\exp\Big(\sum\limits_{i=1}^{n}w_if_i(x,y)\Big) Zw(x)=yexp(i=1nwifi(x,y))
此时,将 P ( y ∣ x ) P(y|x) P(yx) 代回 L ( P , w ) L(P,w) L(P,w) ,再求出 max ⁡ w L ( P , w ) \max\limits_{w}L(P,w) wmaxL(P,w) 即可。

3 模型学习的最优化算法

3.1 改进的迭代尺度法(IIS)

IIS是最大熵模型的最优化算法,其想法是根据当前的参数向量 w = ( w 1 , w 2 , ⋯   , w n ) T w=(w_1,w_2,\cdots,w_n)^T w=(w1,w2,,wn)T 找到一个 δ \delta δ ,使得似然函数 L ( w + δ ) ≥ L ( w ) L(w+\delta)\ge L(w) L(w+δ)L(w) 。实际操作时,通常是构造一个似然函数改变量的下界 B ( δ ∣ w ) B(\delta|w) B(δw),然后取 δ \delta δ 为下界函数的最大值点。

已知最大熵模型为:
P ( y ∣ x ) = 1 Z w ( x ) exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) P(y|x)=\frac{1}{Z_w(x)}{\exp\Big(\sum\limits_{i=1}^{n}w_if_i(x,y)\Big)} P(yx)=Zw(x)1exp(i=1nwifi(x,y))
其中:
Z w ( x ) = ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) Z_w(x)=\sum\limits_{y}\exp\Big(\sum\limits_{i=1}^{n}w_if_i(x,y)\Big) Zw(x)=yexp(i=1nwifi(x,y))
对数似然函数为:
L ( w ) = ∑ i = 1 N log ⁡ P ( y i ∣ x i , w ) = ∑ x , y P ~ ( x , y ) log ⁡ P ( y ∣ x , w ) \begin{align} L(w)&=\sum\limits_{i=1}^{N}\log P(y_i|x_i,w)\notag\\ &=\sum\limits_{x,y}{\tilde{P}(x,y)}\log P(y|x,w)\notag \end{align} L(w)=i=1NlogP(yixi,w)=x,yP~(x,y)logP(yx,w)

其实第一行的式子并不等于第二行的式子,但二者的变化趋势是相同的。

image-20230630110959957

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

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

相关文章

【动态规划算法练习】day11

文章目录 一、1312. 让字符串成为回文串的最少插入次数1.题目简介2.解题思路3.代码4.运行结果 二、1143. 最长公共子序列1.题目简介2.解题思路3.代码4.运行结果 三、1035. 不相交的线1.题目简介2.解题思路3.代码4.运行结果 总结 一、1312. 让字符串成为回文串的最少插入次数 1…

DevOps系列文章之 设计一个简单的DevOps系统

前置条件 gitlab gitlab-runner k8s docker 1. gitlab创建群组 创建群组的好处是,对项目进行分组,群组内的资源可以共享,这里创建了一个tibos的群组 2. 在群组创建一个项目 这里创建一个空白项目,项目名为Gourd.Test,将项目克隆到本地,然后在该目录下创建一个.net core3.1的w…

Spring Cloud Alibaba Seata源码分析

目录 一、Seata源码分析 1、Seata源码入口 1.1、2.0.0.RELEASE 1.2、2.2.6.RELEASE 2、Seata源码分析-2PC核心源码 3、Seata源码分析-数据源代理 3.1、数据源代理DataSourceProxy 4、Seata源码分析- Seata服务端(TC)源码 一、Seata源码分析 Sea…

P1dB、IIP3、OIP3、IMD定义及关系

P1dB 1分贝压缩输出功率。放大器有一个线性动态范围,在这个范围内,放大器的输出功率随输入功率线性增加。随着输入功率的继续增加,放大器进入非线性区,其输出功率不再随输入功率的增加而线性增加,也就是说,…

【新星计划·2023】Linux文件权限讲解

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 这篇文章,将带你详细的了解一下 Linux 系统里面有哪些重要的文件?。 不过,每个文件都有相当多的属性…

ROS学习篇之传感器(二)IMU(超核IMU HI266)

文章目录 一.确定IMU型号二.安装驱动1.找到驱动的包2.解压该压缩包3.安装步骤说明4.具体安装5.检查IMU的usb接口是否插到电脑 三.在RVIZ中的显示1.复制示例下的src里的文件复制到自己的src下2.自己的文件目录3.尝试编译一下4.示例的文件说明5.运行Demo6.配置Rviz 四.查看IMU的实…

【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(系统服务调优)

全方面带你透彻探索服务优化技术方案(服务器系统性能调优) 调优意义计划分析 流程相关分析优化分析Nginx请求服务日志将请求热度最高的接口进行优化异步调用优化方式注意要点 分析调用链路追踪体系建立切面操作分析性能和数据统计存储相关的调用以及耗时…

Pycharm中画图警告:MatplotlibDeprecationWarning

前言: \textcolor{Green}{前言:} 前言: 💞这是由于在python中画图出现的问题,一般不会有错。因为它只是个警告,但是我们也可以知道解决这个问题的方法,防止后面出问题的时候知道怎么解决。 前因…

窗口函数 OVER(PARTITION BY ...)

开窗函数的语法结构:分析函数() over(partition by 分组列名 order by 排序列名 rows between 开始位置 and 结束位置) over()函数中包括三个函数:分区partition by 列名、排序order by 列名、指定窗口范围rows between 开始位置 and 结束位置 rows bet…

Win10共享文件|文件夹 电脑之间快速传输文件的方法

一、设置共享的文件或文件夹 1、A电脑上的文件要共享 进行如下设置: 右击要共享的就文件或文件夹->属性->"共享 "选项卡->"共享"按扭->选择共享的用户 下拉选择"Everyone"->单击"添加"按扭->根据需要设…

PVE8.0内核构建支持IOMMU拆分

PVE直通SATA控制器给群晖的时候,发现网卡、USB、SATA控制器都在一个IOMMU上。 直通完了,PVE直接失联了。这肯定不行。百度了一下说是要编译内核把IOMMU拆开。下面记录一下编译内核的过程。 准备编译环境 我直接用pve物理机编译,怕破坏环境的…

【Spring/Java项目】如何利用swagger-parser解析yaml中的api请求类型、注释、接口名等等(含示例代码)

手打不易,如果转摘,请注明出处! 注明原文:https://zhangxiaofan.blog.csdn.net/article/details/129167371 目录 前言 官方文档 项目配置 示例代码 测试文件 解析代码 运行结果 前言 用到这个工具是因为项目需要&#xff0…

构造函数与成员变量初始化

1 为何需要定义构造函数? 构造函数的主要目的在于对成员变量进行初始化,确保类对象具有良好的初始状态。 2 构造函数对成员变量的初始化 接下来,我们将完善前文中提到的几个构造函数,使其能够有效地完成成员变量的初始化工作。 …

【趣说冒泡排序】

前言 在计算机科学中,排序算法是一种常见且重要的算法。排序算法的目标是将一组无序的数据按照一定的规则进行重新排列,以便更方便地进行搜索、查找或其他操作。 冒泡排序(Bubble Sort)是最简单的排序算法之一,它的原…

软件测试技能,JMeter压力测试教程,统一随机定时器/高斯随机定时器(十九)

目录 前言 一、统一随机定时器 1、统一随机定时器(Uniform Random Timer) 2、设置延迟时间 二、高斯随机定时器 1、高斯随机定时器Gaussian Random Timer 2、设置延迟时间 前言 如果想加个随机等待时间可以用到 jmeter 里面的统一随机定时器&…

WPF 样式设计总结

文章目录 行内样式页内样式样式继承控件样式只能继承一个 局部样式窗口控件和用户控件直接的区别使用代码用户控件引用 全局样式 行内样式 我们新建一个简单的样式 <Grid><TextBox Text"我是样式" FontSize"100" /></Grid>这种属性直接…

【QT】常用组件及其用法总结

前面我们看了如何用QT实现纯代码和纯Designer工具的图形化的页面设计&#xff0c;下面我们来看看如何用QT结合两者实现混合界面设计&#xff0c;主要是学习使用一些常用的组件。 目录 信号和槽 菜单栏、状态栏和工具栏 QLabel setGeometry Button pushbutton CheckBox…

SSMP整合案例(10) vue端调整项目环境 发送请求 基本界面编写

好 之前我们已经将后端服务整个写好了 然后 我们就继续回来写我们前端的项目 之前文章SSMP整合案例(1) 构建 Spring Boot Vue MySql项目环境中我们顺手搭建了前端的项目环境 我们打开它 在终端输入 npm i axios0.21.0引入 axios 它是一个专门用来发请求的第三方插件 一定要注…

Nginx(4)nginx的反向代理

反向代理 正向代理反向代理的常用指令反向代理实战 Nginx的安全控制使用SSL对流量进行加密nginx添加SSL的支持Nginx的SSL相关指令生成证书 反向代理系统调优 正向代理代理的对象是客户端&#xff0c;反向代理代理的是服务端&#xff0c;这是两者之间最大的区别。Nginx即可以实现…

Python实现发送电子邮件功能

大家好&#xff0c;以编程方式发送电子邮件可以成为自动化通信过程的一种强大方式&#xff0c;本文将探讨如何使用Python发送电子邮件&#xff0c;介绍如何设置SMTP服务器、为Gmail生成应用程序密码&#xff0c;并提供使用smtplib库发送电子邮件的逐步指南。 在深入研究编码之…