Logistic Regression

Logistic Regression

模型介绍

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

\[p(y=1\vert \mathbf x)=Ber\left(y\vert \text{sigm}\left(\mathbf w^T\mathbf x\right)\right) \]

参数为\(\mathbf{w}\),假设\(y\in \left \{0,1\right \}\),得到NLL

\[NLL=-\sum_{i=1}^Ny_i\log^{u_i}+(1-y_i)\log^{1-u_i}\tag{1}\label{1} \]

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

\[\begin{align*} \mathbf{g}&=\sum_i^N\left(u_i-y_i\right)\mathbf x_i =X^T\left(\mathbf u -\mathbf y\right)\\ \mathbf{H}&=\sum_i^N u_i\left(1-u_i\right)\mathbf x_i\mathbf x_i^T=X^TSX \end{align*} \]

式中\(S=\text{diag}\left(u_i\left(1-u_i\right)\right)\),可以看出H为正定矩阵

优化方法

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

Steepest descent

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

\[\mathbf w^{t+1} = \mathbf w^{t}-\eta\mathbf g \]

\(\eta\)为学习率

牛顿方法

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

  • 设定初始点\(\mathbf x_0\)以及收敛条件\(\epsilon\)
  • 计算\(\lambda(\mathbf x)\),并与收敛条件进行比较,但尚未收敛时执行以下步骤
  • 计算\(\Delta\mathbf x_{st}=-\mathbf H^{-1}\mathbf g\),根据计算的步长\(\eta\),对参数\(\mathbf w\)进行更新

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

Iteratively reweighted least square

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

\[\begin{align*} \mathbf w^{t+1} &=\mathbf w^{t}-\mathbf H^{-1}\mathbf g\\ &= \mathbf w^{t}-\left(X^TSX\right)^{-1}X^T\left(\mathbf u - \mathbf g\right)\\ &=\left(X^TSX\right)^{-1}\left[\left(X^TSX\right)\mathbf w-X^T\left(\mathbf u -\mathbf g\right)\right ]\\ & = \left(X^TSX\right)^{-1}X^T\left(SX\mathbf w-(\mathbf u -\mathbf y)\right)\\ & =\left(X^TSX\right)^{-1}X^TS z \tag{2}\label{2} \end{align*} \]

式中\(z=Xw-S^{-1}(\mathbf u-\mathbf y)\),结合线性回归的Normal Equation,可以发现上述\(\mathbf w^{t+1}\)的解析式是\(\sum_\limits{i}^NS_i\left(z_i-\mathbf w^T\mathbf x_i\right)^2\)的极小值。\(S_i\)可以被看为权重,在迭代\(\mathbf w\)时其会发生变化,这也是Iteratively reweignted least square名字的由来。算法流程如下:

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

Quasi-Newton methods

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

​ 根据泰勒展开可以得到

\[f(\mathbf x^{t})=f(\mathbf x^{t+1})+\nabla f(\mathbf x^{t+1})^T\Delta \mathbf x+\frac 1 2 \Delta \mathbf x^T \nabla^2 f(\mathbf x^{t+1})\Delta \mathbf x \]

在上式中对\(\mathbf x^{t}\)求导

\[\nabla f(\mathbf x^{t})=\nabla f(\mathbf x^{t+1})+\nabla^2 f(\mathbf x^{t+1})(\mathbf x^{t}-\mathbf x^{t+1})\tag{3}\label{3} \]

​ 令

\[\begin{align*} B^{t}&=\nabla^2 f(\mathbf x)\\ \Delta s^{t}&=\mathbf x^{t+1}-\mathbf x^t\\ \Delta y^{t} &= \nabla f(\mathbf x^{t+1})-\nabla f(\mathbf x^{t}) \end{align*} \]

BFGS方法认为

\[B^{t+1}=B^{t}+mVV^T+nUU^T \]

带入\(\eqref{3}\)中得到

\[mVV^T\Delta s^t+nUU^T\Delta s^t = \Delta y ^t-B^t\Delta s^t \]

假设一种特殊情况

\[\begin{align*} mVV^T\Delta s^t &= \Delta y^t\\ nUU^T \Delta s^t &= -B^t\\ mV^T\Delta s^t&=1\\ nU^T \Delta s^t&=-1 \end{align*} \]

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

\[B^{t+1}=B^{t}+\frac{\Delta y^{t}{\Delta y^t}^T}{\Delta y^T \Delta s}-\frac{\Delta B^t\Delta s^t \Delta s^TB^t}{\Delta s^T B^t \Delta s^t} \]

由于\(\mathbf d = -\mathbf H^{-1}\mathbf g\),在求下降方向时经常会使用\(\mathbf H^{-1}\),下面对其进行近似。

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

\[(A+uv^T)^{-1}=A^{-1}-\frac{A^{-1}uv^TA^{-1}}{1+v^TA^{-1}u} \]

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

\[C^{t+1}=(I-\frac{\Delta s^{t}\Delta y^T}{\Delta s^T\Delta y^t})C^{t}(I-\frac{\Delta y^t\Delta s^T}{\Delta s^T \Delta y^t})\tag{4}\label{4} \]

整体的BFGS算法流程如下

  1. 初始化\(\mathbf x_0\),令\(B_{0}=I\)
  2. 确定搜索方向\(\mathbf d = -B_k^{-1}\mathbf g_k\)
  3. 利用exact line search或者backtracting line search确定搜索步长,得到\(\mathbf x_{k+1}=\mathbf x_k-\lambda_k \mathbf d_k\)
  4. 计算\(\mathbf g_{k+1}\),若不收敛时继续执行
  5. 利用\(\eqref{4}\)得到\(C_{k+1}\),返回第二步

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

L2正则

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

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

\[\begin{align*} \mathbf g &= X^T(\mathbf u -\mathbf y)+\lambda \mathbf w\\ \mathbf H &= X^T \mathbf S X+\lambda \mathbf I \end{align*} \]

多类别

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

\[p(y=c\vert \mathbf x, \mathbf W)=\frac{e^{\mathbf W_c^T\mathbf x}}{\sum\nolimits_i^C e^{\mathbf W_i^T\mathbf x}} \]

\[\begin{align*} u_{ic} &= p(y=c\vert \mathbf x, \mathbf w_c)\\ \mathbf \eta_i &= \mathbf W^T \mathbf x\\ y_{ic} &= \text{Ⅱ}(y_i =c) \end{align*} \]

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

\[l(\mathbf W)=-\sum_i^N\left((\sum_c^C y_{ic} \eta_{ic})-\log^{\sum\nolimits_{c'}u_{ic'}}\right) \]

得到

\[\begin{align*} \mathbf g &= \sum_i^N (\mathbf u_i-\mathbf y_i)\otimes \mathbf x_i=X^T(\mathbf u-\mathbf y) \\ \mathbf H &= \sum_i^N (diag(u_i)-\mathbf u_i\mathbf u_i^T) \otimes(\mathbf x_i\mathbf x_i^T) \end{align*} \]

假设\(\mathbf W\)先验为\(p(\mathbf W)=\Pi_c^C N(\mathbf w_c\vert0,\mathbf V_0)\),得到

\[\begin{align*} \mathbf g &= \sum_i^N(\mathbf u_i-\mathbf y_i)\otimes \mathbf x_i+\lambda\mathbf V_0^{-1}\sum \mathbf w_c\\ \mathbf H &=\sum_i^N(diag(\mathbf u_i)-\mathbf u_i \mathbf u_i^T) \otimes \mathbf x_i \mathbf x_i^T+\lambda \mathbf I_C\mathbf V_0^{-1} \end{align*} \]

贝叶斯角度的逻辑回归

Gaussian approximate

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

\[p(\theta\vert D)=\frac {1}{\text{Z}}e^{-E(\theta)}\tag{5}\label{5} \]

式中Z为规整系数的常数项,可以理解为\(p(D)\)\(E(\theta)\)应具有\(-\log ^{p(D, \theta)}\)的形式。

\(E(\theta)\)进行泰勒展开

\[\begin{align*} E(\theta)&=E(\theta^*)+\nabla E(\theta)^T(\theta - \theta^*)+\frac 1 2 (\theta - \theta^*)^T\nabla^2 E(\theta^*)(\theta - \theta^*)\\ &= E(\theta^*)+\frac 1 2 (\theta - \theta^*)^T\nabla^2 E(\theta^*)(\theta - \theta^*) \end{align*} \]

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

\[\begin{align*} p(\theta\vert D)&\sim N(\theta\vert \theta^*, \nabla^2E\left(\theta^*\right)^{-1})\\ p(D)&=(2\pi)^{\frac D 2}\vert\nabla^2 E(\theta^*) \vert^{-\frac 1 2}e^{-E(\theta^*)} \end{align*} \]

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

\[\begin{align*} \log^{p(D)}&\approx \log^{p(D\vert \theta^*)}+\log^{p(\theta^*)}-\frac{1}{2}\log^{\vert \nabla^2 E(\theta^*)\vert }\\ &\approx\log^{p(D\vert \hat \theta)}-\frac D 2\log^N \end{align*} \]

上式中忽略了常数项,且默认\(p(\theta)\propto1\),由于\(\vert \nabla^2E(\hat \theta)\vert=\sum\nolimits\left\vert H_i\right\vert\)(参考\(\eqref{1}\)),假设所有的Hessian矩阵相同。

Guassion approximate for Logistic Regression

​ 假设\(p(\theta)\sim N(\theta \vert \mathbf 0, \mathbf V)\),根据上述公式可以得到

\[\begin{align*} \mathbf \theta &= \arg\min \log^{E(\theta)}\\ &= \arg\min \log^{p(\theta)}+\log^{p(D\vert\theta)} \end{align*} \]

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

MAP和Laplace approximateion比较

Approximatting the posterior predictive

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

\[p(y\vert D, \theta)=\int p(y\vert \theta) p(\theta\vert D)d\theta \]

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

Online Learning and stochastic optimization

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

\[\mathbf \theta_k = \mathbf \theta_{k-1}-\eta_{k-1}\mathbf g_{k1} \]

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

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

\[\theta^* = \arg\min E\left(f(\theta, D)\right) \]

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

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

\[\begin{align*} \sum \eta &= +\infin\\ \sum \eta^2 & < +\infin \end{align*} \]

如:

  • \(\eta_k=\frac 1 k\)
  • \(\eta_k=(\tau_0+k)^{-\kappa}\)

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

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

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

Fisher线性判别分析

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

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

二分类问题

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

\[\max \frac{(m_1-m_2)^2}{s_1^2+s_2^2} \]

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

拓展至多维

待添加

posted @ 2019-07-20 07:35  Neo_DH  阅读(262)  评论(0编辑  收藏  举报