(六)逻辑回归

逻辑回归(Logistic Regression)

逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法

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

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

2. 二元逻辑回归的模型

  上一节我们提到对线性回归的结果做一个在函数 g g 上的转换,可以变化为逻辑回归。这个函数 g 在逻辑回归中我们一般取为sigmoid函数,形式如下:

g(z)=11+ez g ( z ) = 1 1 + e − z

  它有一个非常好的性质,即当 z z 趋于正无穷时,g(z) 趋于1,而当 z z 趋于负无穷时,g(z) 趋于 0,这非常适合于我们的分类概率模型。另外,它还有一个很好的导数性质:
g(z)=g(z)(1g(z)) g ′ ( z ) = g ( z ) ( 1 − g ( z ) )

  这个通过函数对 g(z) g ( z ) 求导很容易得到,后面我们会用到这个式子。

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

hθ(x)=11+exθ h θ ( x ) = 1 1 + e − x θ

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

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

hθ(X)=11+eXθ h θ ( X ) = 1 1 + e − X θ

  其中 hθ(x) h θ ( x ) 为模型输出,为 m x 1的维度。X为样本特征矩阵,为 m x n 的维度。 θ θ 为分类的模型系数,为 n x 1 的向量。
  理解了二元分类回归的模型,接着我们就要看模型的损失函数了,我们的目标是极小化损失函数来得到对应的模型系数 θ θ

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

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

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

P(y=1|x,θ)=hθ(x) P ( y = 1 | x , θ ) = h θ ( x )

P(y=0|x,θ)=1hθ(x) P ( y = 0 | x , θ ) = 1 − h θ ( x )

  把这两个式子写成一个式子,就是:
P(y|x,θ)=hθ(x)y(1hθ(x))1y P ( y | x , θ ) = h θ ( x ) y ( 1 − h θ ( x ) ) 1 − y

  其中 y y 的取值只能是 0 或者 1。
  用矩阵法表示,即为:
P(Y|X,θ)=hθ(X)Y(Ehθ(X))1Y

  其中 E E 为单位向量。
  得到了 y 的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数 θ θ
  为了方便求解,这里我们用对数似然函数最大化,对数似然函数取反即为我们的损失函数 J(θ) J ( θ ) 。其中:
  似然函数的代数表达式为:
L(θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i) L ( θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i )

  其中 m m 为样本的个数。
  对似然函数对数化取反的表达式,即损失函数表达式为:
J(θ)=lnL(θ)=i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))

  损失函数用矩阵法表达更加简洁:
J(θ)=Yloghθ(X)(EY)log(Ehθ(X)) J ( θ ) = − Y ∙ l o g h θ ( X ) − ( E − Y ) ∙ l o g ( E − h θ ( X ) )

  其中E为单位向量, 为内积。

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

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

  对于 J(θ)=Yloghθ(X)(EY)log(Ehθ(X)) J ( θ ) = − Y ∙ l o g h θ ( X ) − ( E − Y ) ∙ l o g ( E − h θ ( X ) ) ,我们用 J(θ) J ( θ ) θ θ 向量求导可得:

θJ(θ)=YXT1hθ(X)hθ(X)(1hθ(X))+(EY)XT11hθ(X)hθ(X)(1hθ(X)) ∂ ∂ θ J ( θ ) = − Y ∙ X T 1 h θ ( X ) h θ ( X ) ( 1 − h θ ( X ) ) + ( E − Y ) ∙ X T 1 1 − h θ ( X ) h θ ( X ) ( 1 − h θ ( X ) )

  这一步我们用到了矩阵求导的链式法则,和下面三个矩阵求导公式:
XlogX=1/X ∂ ∂ X l o g X = 1 / X

zg(z)=g(z)(1g(z))(g(z)sigmoid) ∂ ∂ z g ( z ) = g ( z ) ( 1 − g ( z ) ) ( g ( z ) 为 s i g m o i d 函 数 )

θXθ=XT ∂ ∂ θ X θ = X T

  对于刚才的求导公式我们进行化简可得:
θJ(θ)=XT(hθ(X)Y) ∂ ∂ θ J ( θ ) = X T ( h θ ( X ) − Y )

  从而在梯度下降法中每一步向量 θ θ 的迭代公式如下:
θ=θαXT(hθ(X)Y) θ = θ − α X T ( h θ ( X ) − Y )

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

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

  逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有L1正则化和L2正则化。
  逻辑回归的 L1 正则化的损失函数表达式如下,相比普通的逻辑回归损失函数,增加了 L1 的范数做作为惩罚,超参数 α α 作为惩罚系数,调节惩罚项的大小。

J(θ)=Yloghθ(X)(EY)log(1hθ(X))+α||θ||1 J ( θ ) = − Y ∙ l o g h θ ( X ) − ( E − Y ) ∙ l o g ( 1 − h θ ( X ) ) + α | | θ | | 1

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

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

J(θ)=Yloghθ(X)(EY)log(1hθ(X))+12α||θ||22 J ( θ ) = − Y ∙ l o g h θ ( X ) − ( E − Y ) ∙ l o g ( 1 − h θ ( X ) ) + 1 2 α | | θ | | 2 2

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

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

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

  另一种多元逻辑回归的方法是 Many-vs-Many(MvM),它会选择一部分类别的样本和另一部分类别的样本来做逻辑回归二分类。最常用的是One-Vs-One(OvO)。OvO 是 MvM 的特例。每次我们选择两类样本来做二元逻辑回归。
  这里只介绍多元逻辑回归的 softmax 回归的一种特例推导:
  首先回顾下二元逻辑回归。

P(y=1|x,θ)=hθ(x)=11+exθ=exθ1+exθ P ( y = 1 | x , θ ) = h θ ( x ) = 1 1 + e − x θ = e x θ 1 + e x θ

P(y=0|x,θ)=1hθ(x)=11+exθ P ( y = 0 | x , θ ) = 1 − h θ ( x ) = 1 1 + e x θ

  其中 y y 只能取到0和1。则有:
lnP(y=1|x,θ)P(y=0|x,θ)=xθ

  如果我们要推广到多元逻辑回归,则模型要稍微做下扩展。我们假设是K元分类模型,即样本输出y的取值为1,2,….,K。

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

lnP(y=1|x,θ)P(y=K|x,θ)=xθ1 l n P ( y = 1 | x , θ ) P ( y = K | x , θ ) = x θ 1

lnP(y=2|x,θ)P(y=K|x,θ)=xθ2 l n P ( y = 2 | x , θ ) P ( y = K | x , θ ) = x θ 2

.... . . . .

lnP(y=K1|x,θ)P(y=K|x,θ)=xθK1 l n P ( y = K − 1 | x , θ ) P ( y = K | x , θ ) = x θ K − 1

  上面有K-1个方程。
  加上概率之和为1的方程如下:

i=1KP(y=i|x,θ)=1 ∑ i = 1 K P ( y = i | x , θ ) = 1

  从而得到 K 个方程,里面有 K 个逻辑回归的概率分布。
  解出这个 K 元一次方程组,得到 K 元逻辑回归的概率分布如下:
P(y=k|x,θ)=exθk/1+t=1K1exθtk=1,2,...K1 P ( y = k | x , θ ) = e x θ k / 1 + ∑ t = 1 K − 1 e x θ t k = 1 , 2 , . . . K − 1

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

7.小结

  逻辑回归尤其是二元逻辑回归是非常常见的模型,训练速度很快,虽然使用起来没有支持向量机(SVM)那么占主流,但是解决普通的分类问题是足够了,训练速度也比起SVM要快不少。

  • 特性:

    1. 实现简单,广泛的应用于工业问题上
    2. 分类时计算量非常小,速度很快,存储资源低
    3. 输出为概率,可以便利的观测样本概率分数
    4. 对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决该问题
  • 不足:

    1. 当特征空间很大时,逻辑回归的性能不是很好
    2. 容易欠拟合,一般准确度不太高
    3. 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值