Logistic Regression

Logistic Regression

模型介绍

​ 逻辑回归作为一个判别模型,其形式如下:

p(y=1|x)=Ber(y|sigm(wTx))

参数为w,假设y{0,1},得到NLL

(1)NLL=i=1Nyilogui+(1yi)log1ui

​ 与Linear Regression不同,极大化NLL得不到解析解,对上式求导得到梯度和Hessian矩阵

g=iN(uiyi)xi=XT(uy)H=iNui(1ui)xixiT=XTSX

式中S=diag(ui(1ui)),可以看出H为正定矩阵

优化方法

​ 对于无约束的凸优化问题(1),可以采用Steepest descent、Newton's method、Iteratively reweighted least square、Quasi-Newton's methods等方法求解

Steepest descent

​ 在二范数下,Steepest descent的下降方向为负梯度方向,即g(可查阅之前的凸优化章节)

wt+1=wtηg

η为学习率

牛顿方法

​ 牛顿方法是二阶方法,其求解步骤如下

  • 设定初始点x0以及收敛条件ϵ
  • 计算λ(x),并与收敛条件进行比较,但尚未收敛时执行以下步骤
  • 计算Δxst=H1g,根据计算的步长η,对参数w进行更新

​ 可以看出牛顿方法需要对矩阵进行求逆,因此即使H可逆,当遇到大规模问题时,逆计算开销很大。后续的Quasi-Newton methods会对这方面进行优化,用一些方法得到近似的H

Iteratively reweighted least square

​ 当使用牛顿法解(1)时,得到参数w的迭代过程如下

wt+1=wtH1g=wt(XTSX)1XT(ug)=(XTSX)1[(XTSX)wXT(ug)]=(XTSX)1XT(SXw(uy))(2)=(XTSX)1XTSz

式中z=XwS1(uy),结合线性回归的Normal Equation,可以发现上述wt+1的解析式是iNSi(ziwTxi)2的极小值。Si可以被看为权重,在迭代w时其会发生变化,这也是Iteratively reweignted least square名字的由来。算法流程如下:

  1. 初始化w
  2. 根据(2)计算更新w
  3. 迭代至收敛

Quasi-Newton methods

​ 为了避免牛顿方法中的矩阵逆运算,Quasi-Newton methods使用近似的H来进行运算。这里介绍两种方法:BFGS和L-BFGS。两方法有相似之处,都是基于(3)展开的。

​ 根据泰勒展开可以得到

f(xt)=f(xt+1)+f(xt+1)TΔx+12ΔxT2f(xt+1)Δx

在上式中对xt求导

(3)f(xt)=f(xt+1)+2f(xt+1)(xtxt+1)

​ 令

Bt=2f(x)Δst=xt+1xtΔyt=f(xt+1)f(xt)

BFGS方法认为

Bt+1=Bt+mVVT+nUUT

带入(3)中得到

mVVTΔst+nUUTΔst=ΔytBtΔst

假设一种特殊情况

mVVTΔst=ΔytnUUTΔst=BtmVTΔst=1nUTΔst=1

可以解得U,V,m,n,得到B的迭代关系如下

Bt+1=Bt+ΔytΔytTΔyTΔsΔBtΔstΔsTBtΔsTBtΔst

由于d=H1g,在求下降方向时经常会使用H1,下面对其进行近似。

对上述关系应用两次Sherman-Morrion公式

(A+uvT)1=A1A1uvTA11+vTA1u

得到(这部分推导比较繁琐,参阅zhirom博客

(4)Ct+1=(IΔstΔyTΔsTΔyt)Ct(IΔytΔsTΔsTΔyt)

整体的BFGS算法流程如下

  1. 初始化x0,令B0=I
  2. 确定搜索方向d=Bk1gk
  3. 利用exact line search或者backtracting line search确定搜索步长,得到xk+1=xkλkdk
  4. 计算gk+1,若不收敛时继续执行
  5. 利用(4)得到Ck+1,返回第二步

L-BFGS方法是在BFGS基础上舍弃了对矩阵的保存,仅保留了最近的m个skyk结果,节约了内存空间。在计算H1g时使用了two-loop recursion,暂时不清楚这个计算方法的原理,在这里不写出,可参阅星环科技-知乎回答一文。

L2正则

​ 如果给定的数据集是线性可分的,那么w进要满足一定比例即可,那么w+\infin也是可以的,这样得到的图形就格外陡峭,容易过拟合。

​ 如果在NLL中添加L2正则项,那么获得的即为MAP估计,相比于之前的MLE估计,梯度和Hessian矩阵迭代关系如下

g=XT(uy)+λwH=XTSX+λI

多类别

​ 当考虑的类别数量多余2时,其形式如下

p(y=c|x,W)=eWcTxiCeWiTx

uic=p(y=c|x,wc)ηi=WTxyic=(yi=c)

令系数矩阵W的最后一列为0,即不对最后一类的系数进行估计(在分子和分母同除非零数并不影响结果)。得到NLL

l(W)=iN((cCyicηic)logcuic)

得到

g=iN(uiyi)xi=XT(uy)H=iN(diag(ui)uiuiT)(xixiT)

假设W先验为p(W)=ΠcCN(wc|0,V0),得到

g=iN(uiyi)xi+λV01wcH=iN(diag(ui)uiuiT)xixiT+λICV01

贝叶斯角度的逻辑回归

Gaussian approximate

​ 不同于之前的线性回归,很难找到逻辑回归的共轭先验。

(5)p(θ|D)=1ZeE(θ)

式中Z为规整系数的常数项,可以理解为p(D)E(θ)应具有logp(D,θ)的形式。

E(θ)进行泰勒展开

E(θ)=E(θ)+E(θ)T(θθ)+12(θθ)T2E(θ)(θθ)=E(θ)+12(θθ)T2E(θ)(θθ)

可以得到(5)的形式近似于高斯分布

p(θ|D)N(θ|θ,2E(θ)1)p(D)=(2π)D2|2E(θ)|12eE(θ)

当对p(D)进行变换时可以得到BIC的形式

logp(D)logp(D|θ)+logp(θ)12log|2E(θ)|logp(D|θ^)D2logN

上式中忽略了常数项,且默认p(θ)1,由于|2E(θ^)|=|Hi|(参考(1)),假设所有的Hessian矩阵相同。

Guassion approximate for Logistic Regression

​ 假设p(θ)N(θ|0,V),根据上述公式可以得到

θ=argminlogE(θ)=argminlogp(θ)+logp(D|θ)

上述的式子和[L2正则](# L2正则)类似。在得到θ^后就得到了Laplace approximation后验分布。

MAP和Laplace approximateion比较

Approximatting the posterior predictive

​ 在得到参数的后验分布后,对p(y|D,θ)进行估计

p(y|D,θ)=p(y|θ)p(θ|D)dθ

当然可以采用插值法,比如θ^,E(θ)等,但是这样的方法会导致误差较大。可以采用Monte Carlo approximation的方法对θ取样,计算平均的p(y)

Online Learning and stochastic optimization

​ 与离线训练确定参数不同,线上学习是不断应用于新数据、调整参数。

θk=θk1ηk1gk1

上述的Online gradient descent可以用来对参数进行更新。

​ stochastic optimization是说在目标函数中有随机变量,如

θ=argminE(f(θ,D))

可以利用online gradient descent 对stochastic optimization进行计算,

在设置学习率η时需要满足Robbins-Monro条件,以保证收敛。

η=+\infinη2<+\infin

如:

  • ηk=1k
  • ηk=(τ0+k)κ

生成方法和判别方法的对比

生成方法和判别方法的根本区别是判别方法通常极大化p(y|x,w),而生成方法则为p(y,x|w)。两个方法的优缺点对比如下:

  1. 生成方法计算通常更简单,如朴素贝叶斯,通过参数的加减即可得到参数的分布;
  2. 判别模型对特征的处理更方便,生成模型通常对特征假设了分布,如果进行特征的变换,则很可能与假设产生矛盾。

Fisher线性判别分析

高斯判别分析时(注意这是一个生成模型)在高维数据时时常会遇到一些问题。一个自然的降维方法是进行低维的线性变换z=Wx

Fisher linear discriminant analysis假设变换后的低位数据可以用高斯判别分析很好的分离,其是生成模型和判别模型的混合。其最大的缺点为变换后的维度要小于C1。这样对于二分类问题,就意味着要找出一个向量w可以很好的分离数据点。

二分类问题

在二分类情况下,w是单一向量,其应该满足这样的条件

max(m1m2)2s12+s22

即两个类别的均值映射之差的平方应该尽量大,每个类别方差应该尽量小。

拓展至多维

待添加

posted @   Neo_DH  阅读(268)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示