逻辑回归原理小结

刘建平Pinard 刘建平Pinard     2022-08-11     217

关键词:

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

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

    我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数( heta),满足(mathbf{Y = X heta})。此时我们的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))求导很容易得到,后面我们会用到这个式子。

    如果我们令(g(z))中的z为:({z = x heta}),这样就得到了二元逻辑回归模型的一般形式:

    (h_{ heta}(x) = frac{1}{1+e^{-x heta}}) 

    其中x为样本输入,(h_{ heta}(x))为模型输出,可以理解为某一分类的概率大小。而( heta)为分类模型的要求出的模型参数。对于模型输出(h_{ heta}(x)),我们让它和我们的二元样本输出y(假设为0和1)有这样的对应关系,如果(h_{ heta}(x) >0.5) ,即(x heta > 0), 则y为1。如果(h_{ heta}(x) < 0.5),即(x heta < 0), 则y为0。y=0.5是临界情况,此时(x heta = 0)为, 从逻辑回归模型本身无法确定分类。

    (h_{ heta}(x))的值越小,而分类为0的的概率越高,反之,值越大的话分类为1的的概率越高。如果靠近临界点,则分类准确率会下降。

    此处我们也可以将模型写成矩阵模式:

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

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

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

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

    回顾下线性回归的损失函数,由于线性回归是连续的,所以可以使用模型误差的的平方和来定义损失函数。但是逻辑回归不是连续的,自然线性回归损失函数定义的经验就用不上了。不过我们可以用最大似然法来推导出我们的损失函数。

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

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

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

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

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

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

    用矩阵法表示,即为:

    (P(Y|X, heta ) = h_{ heta}(X)^Y(E-h_{ heta}(X))^{1-Y}),其中E为单位矩阵。

    得到了y的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数( heta)。

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

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

    (L( heta) = prodlimits_{i=1}^{m}(h_{ heta}(x^{(i)}))^{y^{(i)}}(1-h_{ heta}(x^{(i)}))^{1-y^{(i)}})

    其中m为样本的个数。

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

    (J( heta) = -lnL( heta) = -sumlimits_{i=1}^{m}(y^{(i)}log(h_{ heta}(x^{(i)}))+ (1-y^{(i)})log(1-h_{ heta}(x^{(i)}))))

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

    (J( heta) = -Yullet logh_{ heta}(X) - (E-Y)ullet log(E-h_{ heta}(X)))

    其中E为单位矩阵,(ullet)为内积。

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

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

    对于(J( heta) = -Yullet logh_{ heta}(X) - (1-Y)ullet log(E-h_{ heta}(X))),我们用(J( heta))对( heta)向量求导可得:

    (frac{partial}{partial heta}J( heta) = -Y ullet X^Tfrac{1}{h_{ heta}(X)}h_{ heta}(X)(1-h_{ heta}(X)) + (E-Y)ullet X^Tfrac{1}{1-h_{ heta}(X)}h_{ heta}(X)(1-h_{ heta}(X)))

    这一步我们用到了矩阵求导的链式法则,和下面三个矩阵求导公式:

    (frac{partial}{partial X}logX = 1/X)

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

    (frac{partial}{partial heta}X heta = X^T)

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

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

    从而在梯度下降法中每一步向量( heta)的迭代公式如下:

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

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

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

 

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

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

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

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

    (J( heta) = -Yullet logh_{ heta}(X) - (E-Y)ullet log(1-h_{ heta}(X)) + alpha|| heta||_1)

    其中(|| heta||_1)为( heta)的L1范数。

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

 

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

    (J( heta) = -Yullet logh_{ heta}(X) - (E-Y)ullet log(1-h_{ heta}(X)) + frac{1}{2}alpha|| heta||_2^2)

    其中(|| heta||_2)为( heta)的L2范数。

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

    

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

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

    回顾下二元逻辑回归。

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

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

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

    (lnfrac{P(y=1|x, heta )}{P(y=0|x, heta)} = x heta)

    如果我们要推广到多元逻辑回归,则模型要稍微做下扩展。

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

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

    (lnfrac{P(y=1|x, heta )}{P(y=K|x, heta)} = x heta_1)

    (lnfrac{P(y=2|x, heta )}{P(y=K|x, heta)} = x heta_2) 

    ...

    (lnfrac{P(y=K-1|x, heta )}{P(y=K|x, heta)} = x heta_{K-1}) 

    上面有K-1个方程。

    加上概率之和为1的方程如下:

    (sumlimits_{i=1}^{K}P(y=i|x, heta ) = 1)

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

    解出这个K元一次方程组,得到K元逻辑回归的概率分布如下:

    (P(y=k|x, heta ) =  e^{x heta_k} igg/ 1+sumlimits_{t=1}^{K-1}e^{x heta_t})  k = 1,2,...K-1

    (P(y=K|x, heta ) =  1 igg/ 1+sumlimits_{t=1}^{K-1}e^{x heta_t})

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

7.小结

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

 

 (欢迎转载,转载请注明出处。欢迎沟通交流: [email protected]) 

最大熵模型原理小结

...型(maximumentropymodel,MaxEnt)也是很典型的分类算法了,它和逻辑回归类似,都是属于对数线性分类模型。在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术。而对熵的使用,让我们想起了决策树算法中的ID3和C4.5算... 查看详情

logistic回归分类算法原理分析与代码实现

小结      1.逻辑回归的计算代价不高,是很常用的分类算法。集中基于随机梯度上升的逻辑回归分类器能够支持在线学习。      2.但逻辑回归算法缺点很明显-一般只能解决两个类的分... 查看详情

线性回归原理小结

线性回归可以说是机器学习中最基本的问题类型了,这里就对线性回归的原理和算法做一个小结。1.线性回归的模型函数和损失函数    线性回归遇到的问题一般是这样的。我们有m个样本,每个样本对应于n维特征和一个结... 查看详情

机器学习逻辑回归介绍

目录1逻辑回归的应用场景2逻辑回归的原理2.1输入2.2激活函数3损失以及优化3.1损失3.2优化4小结1逻辑回归的应用场景逻辑回归(LogisticRegression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字... 查看详情

机器学习逻辑回归算法(代码片段)

逻辑回归算法学习目标1.逻辑回归的介绍1.1逻辑回归的应用场景1.2逻辑回归的原理1.2.1输入1.2.2激活函数1.3损失以及优化1.3.1损失1.3.2优化1.4小结2.逻辑回归api介绍3.案例:癌症分类预测-良/恶性乳腺癌肿瘤预测3.1背景介绍3.... 查看详情

tensorflow逻辑回归原理与实现(超详细)

逻辑回归原理与实现学习目标1.神经网络基础1.1Logistic回归1.2逻辑回归损失函数2.梯度下降算法3.导数3.1导数3.2导数计算图3.3链式法则3.4逻辑回归的梯度下降4.向量化编程4.1向量化优势4.2向量化实现伪代码5.案例:实现逻辑回归5... 查看详情

机器学习100天(十五):015逻辑回归基本原理

机器学习100天,今天讲的是:逻辑回归基本原理一、线性回归与逻辑回归我们之前介绍过线性回归,我们知道线性回归用于数值预测,例如房屋价格预测、信用卡额度预测等。线性回归最重要的一点就是它的预测值,即因变量一... 查看详情

机器学习100天(十五):015逻辑回归基本原理

机器学习100天,今天讲的是:逻辑回归基本原理一、线性回归与逻辑回归我们之前介绍过线性回归,我们知道线性回归用于数值预测,例如房屋价格预测、信用卡额度预测等。线性回归最重要的一点就是它的预测值,即因变量一... 查看详情

逻辑回归原理

逻辑回归原理基本概念1.什么是逻辑回归逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。Logistic回归虽然名... 查看详情

逻辑回归算法的原理及实现(lr)

...概有两个:第一用来预测,第二寻找因变量的影响因素。逻辑回归(LogisticRegression,LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为... 查看详情

逻辑回归算法的原理及实现(lr)

...概有两个:第一用来预测,第二寻找因变量的影响因素。逻辑回归(LogisticRegression,LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为... 查看详情

如何理解逻辑回归?原理应用场景癌症分类预测

逻辑回归(LogisticRegression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和有效,在实际中应用非常广泛。1逻辑回归的应用场景广告点击率是否为垃圾邮件... 查看详情

逻辑回归原理

来自:刘建平 逻辑回归是分类算法,可以处理二元分类和多元分类。名字里有“回归”二字,但不是回归算法。为什么名字有“回归”这个误导词?因为它的原理有回归模型的影子。 1.从线性回归到逻辑回归... 查看详情

逻辑回归算法

逻辑回归算法原理推导逻辑回归,虽然叫回归,但还是一个分类算法  逻辑回归求解     查看详情

lasso回归算法:坐标轴下降法与最小角回归法小结

前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结。里面对线程回归的正则化也做了一个初步的介绍。提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归。但是对于Lasso回归的解法没有... 查看详情

常见机器学习算法原理+实践系列1(逻辑回归)

一,逻辑回归LogisticRegression逻辑回归是线性模型Y=f(x)=b0+b1*x的延伸,一般用来做2分类问题,输出标记C={0,1},C就是classification的意思,通俗的讲,就要建立Y和C之间的关系,Y是多少的时候,C是0,Y是多少的时候,C是1,传统的... 查看详情

在 scikit-learn 的逻辑回归中设置类权重的数学原理是啥?

】在scikit-learn的逻辑回归中设置类权重的数学原理是啥?【英文标题】:Whatisthemathematicalprincipalofsettingclassweightinlogesticregressioninscikit-learn?在scikit-learn的逻辑回归中设置类权重的数学原理是什么?【发布时间】:2019-09-1115:19:14【... 查看详情

逻辑回归|机器学习|分类算法(代码片段)

目录1.逻辑回归1.1逻辑回归原理1.2sigmoid函数2.相关代码2.1LogisticsRegression类2.2求解代码2.3输出结果3.直接调库使用1.逻辑回归1.1逻辑回归原理∙\\bullet∙逻辑回归又叫对数几率回归,是一种对数几率模型,可以求解二分类问... 查看详情