逻辑回归原理小结

逻辑回归是一个分类算法,它能够处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。那为何有“回归”这个误导性的词呢?我的认为,虽然逻辑回归是分类模型,可是它的原理里面却残留着回归模型的影子,本文对逻辑回归原理作一个总结。算法

1、从线性回归到逻辑回归

    咱们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数\(\theta\),知足\(\mathbf{Y = X\theta}\)。此时咱们的Y是连续的,因此是回归模型。若是咱们想要Y是离散的话,怎么办呢?一个能够想到的办法是,咱们对于这个Y再作一次函数转换,变为\(g(Y)\)。若是咱们令\(g(Y)\)的值在某个实数区间的时候是类别A,在另外一个实数区间的时候是类别B,以此类推,就获得了一个分类模型。若是结果的类别只有两种,那么就是一个二元分类模型了。逻辑回归的出发点就是从这来的。下面咱们开始引入二元逻辑回归。微信

2、二元逻辑回归的模型

    上一节咱们提到对线性回归的结果作一个在函数g上的转换,能够变化为逻辑回归。这个函数g在逻辑回归中咱们通常取为sigmoid函数,形式以下:机器学习

    \(g(z) = \frac{1}{1+e^{-z}}\) 函数

    它有一个很是好的性质,即当z趋于正无穷时,\(g(z)\)趋于1,而当z趋于负无穷时,\(g(z)\)趋于0,这很是适合于咱们的分类几率模型。另外,它还有一个很好的导数性质:学习

    \(g^{'}(z) = g(z)(1-g(z))\) 优化

    这个经过函数对\(g(z)\)求导很容易获得,后面咱们会用到这个式子。spa

    若是咱们令\(g(z)\)中的z为:\({z = x\theta}\),这样就获得了二元逻辑回归模型的通常形式:rest

    \(h_{\theta}(x) = \frac{1}{1+e^{-x\theta}}\) it

    其中x为样本输入,\(h_{\theta}(x)\)为模型输出,能够理解为某一分类的几率大小。而\(\theta\)为分类模型的要求出的模型参数。对于模型输出\(h_{\theta}(x)\),咱们让它和咱们的二元样本输出y(假设为0和1)有这样的对应关系,若是\(h_{\theta}(x) >;0.5\) ,即\(x\theta >; 0\), 则y为1。若是\(h_{\theta}(x) <; 0.5\),即\(x\theta <; 0\), 则y为0。y=0.5是临界状况,此时\(x\theta = 0\)为, 从逻辑回归模型自己没法肯定分类。class

    \(h_{\theta}(x)\)的值越小,而分类为0的的几率越高,反之,值越大的话分类为1的的几率越高。若是靠近临界点,则分类准确率会降低。

    此处咱们也能够将模型写成矩阵模式:

    \(h_{\theta}(X) = \frac{1}{1+e^{-X\theta}}\) 

    其中\(h_{\theta}(X)\)为模型输出,为 mx1的维度。X为样本特征矩阵,为mxn的维度。\(\theta\)为分类的模型系数,为nx1的向量。

    理解了二元分类回归的模型,接着咱们就要看模型的损失函数了,咱们的目标是极小化损失函数来获得对应的模型系数\(\theta\)

3、二元逻辑回归的损失函数

    回顾下线性回归的损失函数,因为线性回归是连续的,因此可使用模型偏差的的平方和来定义损失函数。可是逻辑回归不是连续的,天然线性回归损失函数定义的经验就用不上了。不过咱们能够用最大似然法来推导出咱们的损失函数。

    咱们知道,按照第二节二元逻辑回归的定义,假设咱们的样本输出是0或者1两类。那么咱们有:

    \(P(y=1|x,\theta ) = h_{\theta}(x)\)

    \(P(y=0|x,\theta ) = 1- h_{\theta}(x)\)

     把这两个式子写成一个式子,就是:

    \(P(y|x,\theta ) = h_{\theta}(x)^y(1-h_{\theta}(x))^{1-y}\)

    其中y的取值只能是0或者1。

    获得了y的几率分布函数表达式,咱们就能够用似然函数最大化来求解咱们须要的模型系数\(\theta\)

    为了方便求解,这里咱们用对数似然函数最大化,对数似然函数取反即为咱们的损失函数\(J(\theta\))。其中:

    似然函数的代数表达式为:

    \(L(\theta) = \prod\limits_{i=1}^{m}(h_{\theta}(x^{(i)}))^{y^{(i)}}(1-h_{\theta}(x^{(i)}))^{1-y^{(i)}}\)

    其中m为样本的个数。

    对似然函数对数化取反的表达式,即损失函数表达式为:

    \(J(\theta) = -lnL(\theta) = -\sum\limits_{i=1}^{m}(y^{(i)}log(h_{\theta}(x^{(i)}))+ (1-y^{(i)})log(1-h_{\theta}(x^{(i)})))\)

     损失函数用矩阵法表达更加简洁:

    \(J(\theta) = -Y^Tlogh_{\theta}(X) - (E-Y)^T log(E-h_{\theta}(X))\)

    其中E为全1向量。

4、二元逻辑回归的损失函数的优化方法

    对于二元逻辑回归的损失函数极小化,有比较多的方法,最多见的有梯度降低法,坐标轴降低法,等牛顿法等。这里推导出梯度降低法中\(\theta\)每次迭代的公式。因为代数法推导比较的繁琐,我习惯于用矩阵法来作损失函数的优化过程,这里给出矩阵法推导二元逻辑回归梯度的过程。

    对于\(J(\theta) = -Y^T logh_{\theta}(X) - (E-Y)^T log(E-h_{\theta}(X))\),咱们用\(J(\theta)\)\(\theta\)向量求导可得:

    \(\frac{\partial}{\partial\theta}J(\theta) = X^T[\frac{1}{h_{\theta}(X)}\odot h_{\theta}(X)\odot (E-h_{\theta}(X))\odot (-Y)] + X^T[\frac{1}{E-h_{\theta}(X)}\odot h_{\theta}(X)\odot (E-h_{\theta}(X))\odot (E-Y)]\)

    这一步咱们用到了向量求导的链式法则,和下面三个基础求导公式的矩阵形式:

    \(\frac{\partial}{\partial x}logx = 1/x\)

    $\frac{\partial}{\partial z}g(z) = g(z)(1-g(z))   (g(z)为sigmoid函数) $ 

    \(\frac{\partial x\theta}{\partial \theta} =  x\) 

    对于刚才的求导公式咱们进行化简可得:

    \(\frac{\partial}{\partial\theta}J(\theta) = X^T(h_{\theta}(X) - Y )\)

    从而在梯度降低法中每一步向量\(\theta\)的迭代公式以下:

    \(\theta = \theta - \alpha X^T(h_{\theta}(X) - Y )\)

    其中,\(\alpha\)为梯度降低法的步长。

    实践中,咱们通常不用操心优化方法,大部分机器学习库都内置了各类逻辑回归的优化方法,不过了解至少一种优化方法仍是有必要的。

 

5、二元逻辑回归的正则化

    逻辑回归也会面临过拟合问题,因此咱们也要考虑正则化。常见的有L1正则化和L2正则化。

    逻辑回归的L1正则化的损失函数表达式以下,相比普通的逻辑回归损失函数,增长了L1的范数作做为惩罚,超参数\(\alpha\)做为惩罚系数,调节惩罚项的大小。

    二元逻辑回归的L1正则化损失函数表达式以下:

    \(J(\theta) = -Y^T\bullet logh_{\theta}(X) - (E-Y)^T\bullet log(E-h_{\theta}(X)) +\alpha ||\theta||_1\)

    其中\(||\theta||_1\)\(\theta\)的L1范数。

    逻辑回归的L1正则化损失函数的优化方法经常使用的有坐标轴降低法和最小角回归法。

 

    二元逻辑回归的L2正则化损失函数表达式以下:

    \(J(\theta) = -Y^T\bullet logh_{\theta}(X) - (E-Y)^T\bullet log(E-h_{\theta}(X)) + \frac{1}{2}\alpha||\theta||_2^2\)

    其中\(||\theta||_2\)\(\theta\)的L2范数。

    逻辑回归的L2正则化损失函数的优化方法和普通的逻辑回归相似。

    

6、二元逻辑回归的推广:多元逻辑回归

    前面几节咱们的逻辑回归的模型和损失函数都局限于二元逻辑回归,实际上二元逻辑回归的模型和损失函数很容易推广到多元逻辑回归。好比老是认为某种类型为正值,其他为0值,这种方法为最经常使用的one-vs-rest,简称OvR.

    另外一种多元逻辑回归的方法是Many-vs-Many(MvM),它会选择一部分类别的样本和另外一部分类别的样原本作逻辑回归二分类。最经常使用的是One-Vs-One(OvO)。OvO是MvM的特例。每次咱们选择两类样原本作二元逻辑回归。

    这里只介绍多元逻辑回归的softmax回归的一种特例推导:

    首先回顾下二元逻辑回归。

    \(P(y=1|x,\theta ) = h_{\theta}(x) =  \frac{1}{1+e^{-x\theta}} = \frac{e^{x\theta}}{1+e^{x\theta}}\)

    \(P(y=0|x,\theta ) = 1- h_{\theta}(x) = \frac{1}{1+e^{x\theta}}\)

    其中y只能取到0和1。则有:

    \(ln\frac{P(y=1|x,\theta )}{P(y=0|x,\theta)} = x\theta\)

    若是咱们要推广到多元逻辑回归,则模型要稍微作下扩展。

    咱们假设是K元分类模型,即样本输出y的取值为1,2,。。。,K。

    根据二元逻辑回归的经验,咱们有:

    \(ln\frac{P(y=1|x,\theta )}{P(y=K|x,\theta)} = x\theta_1\)

    \(ln\frac{P(y=2|x,\theta )}{P(y=K|x,\theta)} = x\theta_2\) 

    ...

    \(ln\frac{P(y=K-1|x,\theta )}{P(y=K|x,\theta)} = x\theta_{K-1}\) 

    上面有K-1个方程。

    加上几率之和为1的方程以下:

    \(\sum\limits_{i=1}^{K}P(y=i|x,\theta ) = 1\)

    从而获得K个方程,里面有K个逻辑回归的几率分布。

    解出这个K元一次方程组,获得K元逻辑回归的几率分布以下:

    \(P(y=k|x,\theta ) =  e^{x\theta_k} \bigg/ 1+\sum\limits_{t=1}^{K-1}e^{x\theta_t}\)  k = 1,2,...K-1

    \(P(y=K|x,\theta ) =  1 \bigg/ 1+\sum\limits_{t=1}^{K-1}e^{x\theta_t}\)

    多元逻辑回归的损失函数推导以及优化方法和二元逻辑回归相似,这里就不累述。

7、7.小结

    逻辑回归尤为是二元逻辑回归是很是常见的模型,训练速度很快,虽然使用起来没有支持向量机(SVM)那么占主流,可是解决普通的分类问题是足够了,训练速度也比起SVM要快很多。若是你要理解机器学习分类算法,那么第一个应该学习的分类算法我的以为应该是逻辑回归。理解了逻辑回归,其余的分类算法再学习起来应该没有那么难了。

 

 (欢迎转载,转载请注明出处。欢迎沟通交流: 微信:nickchen121)

相关文章
相关标签/搜索