机器学习算法系列(七)-对数几率回归算法(一)(Logistic Regression Algorithm)

本文介绍对数几率回归算法,包括模型函数、代价函数、正则化等核心内容,并提供了梯度下降法和牛顿法的具体实现,同时对比了不同正则化方式的影响。

阅读本文需要的背景知识点:线性回归、最大似然估计、一丢丢编程知识

一、引言

  前面几节我们学习了标准线性回归,然后介绍了三种正则化的方法 - 岭回归、Lasso回归、弹性网络回归,这些线性模型解决的都是回归的问题。最开始还介绍了两种简单的算法-PLA与口袋算法,他们解决的是分类问题。
  那么我们能使用回归的方式来解决分类问题么,答案是肯定的,这就是下面要介绍的模型 - 对数几率回归算法1(Logistic Regression Algorithm),也有被直译为逻辑回归。

二、模型介绍

对数几率回归的模型函数
  既然要通过回归的方式来解决分类的问题,可以通过先进行回归分析,然后通过一个函数将连续的结果映射成离散的分类结果,例如下面的函数表达式:
y = { 0 ( f ( w T x ) ≤ C ) 1 ( f ( w T x ) > C ) y=\left\{\begin{array}{ll} 0 & \left(f\left(w^{T} x\right) \leq C\right) \\ 1 & \left(f\left(w^{T} x\right)>C\right) \end{array}\right. y={ 01(f(wTx)C)(f(wTx)>C)

  在介绍对数几率回归模型之前,先来看看一类被称为 S 函数2(Sigmoid function)的函数,这类函数的图像成 S 型,其中最常见的一种函数为逻辑函数3(Logistic function),函数图像如下图所示:
0.png

  通过图像可以看到,这个函数当自变量越大时,函数值越趋近于 1,当自变量最小时,函数值越趋近于 0,当自变量为 0 时,函数值为 0.5。当上面表达式中的 C 等于 0.5 时,可以看作将连续的结果映射成离散的结果。
  逻辑函数的函数表达式为:
f ( z ) = 1 1 + e − z f(z)=\frac{1}{1+e^{-z}} f(z)=1+ez1

  将线性方程带入逻辑函数中,就得到了对数几率回归的函数方程:
f ( x ) = 1 1 + e − w T x f(x)=\frac{1}{1+e^{-w^Tx}} f(x)=1+ewTx1

对数几率回归的代价函数
  我们需要一个代价函数来表示数据拟合的情况,这时很容易想到的是使用与线性回归一样的均方差4(mean-square error / MSE)的方法来做为代价函数
Cost ⁡ ( w ) = ∑ i = 1 N ( y − y ^ ) 2 \operatorname{Cost}(w)=\sum_{i=1}^{N}(y-\hat{y})^{2} Cost(w)=i=1N(yy^)2

  但对数几率回归是使用似然函数5(likelihood function)的对数形式来作为其代价函数,后面会说明为什么使用这种方式比MSE更合适。

最大似然估计:

考虑一个抛硬币的例子。假设这个硬币正面跟反面轻重不同。我们把这个硬币抛80次(正面记为H,反面记为T)。并把抛出一个正面的概率记为 p,抛出一个反面的概率记为 1 - p。假设我们抛出了49个正面,31个反面,即49次H,31次T。假设这个硬币是我们从一个装了三个硬币的盒子里头取出的。这三个硬币抛出正面的概率分别为 1/3、1/2、2/3 。这些硬币没有标记,所以我们无法知道哪个是哪个。使用最大似然估计,基于二项分布中的概率质量函数公式,通过这些试验数据(即采样数据),我们可以计算出哪个硬币的可能性最大。我们可以看到当 p = 2/3 时,似然函数取得值最大。

L ( p = 1 3 ∣ H = 49 , T = 31 ) = C 80 49 ( 1 3 ) 49 ( 1 − 1 3 ) 31 ≈ 0.000 L ( p = 1 2 ∣ H = 49 , T = 31 ) = C 80 49 ( 1 2 ) 49 ( 1 − 1 2 ) 31 ≈ 0.012 L ( p = 2 3 ∣ H = 49 , T = 31 ) = C 80 49 ( 2 3 ) 49 ( 1 − 2 3 ) 31 ≈ 0.054 \begin{array}{l} L\left(p=\frac{1}{3} \mid H=49, T=31\right)=C_{80}^{49}\left(\frac{1}{3}\right)^{49}\left(1-\frac{1}{3}\right)^{31} \approx 0.000 \\ L\left(p=\frac{1}{2} \mid H=49, T=31\right)=C_{80}^{49}\left(\frac{1}{2}\right)^{49}\left(1-\frac{1}{2}\right)^{31} \approx 0.012 \\ L\left(p=\frac{2}{3} \mid H=49, T=31\right)=C_{80}^{49}\left(\frac{2}{3}\right)^{49}\left(1-\frac{2}{3}\right)^{31} \approx 0.054 \end{array} L(p=31H=49,T=31)=C8049(31)49(131)310.000L(p=21H=49,T=31)=C8049(21)49(121)310.012L(p=32H=49,T=31)=C8049(32)49(132)310.054

第一种表示方式:
  在二元分类的情况下,例如 y 取 0 或者 1,将对数几率回归的函数方程的结果看作概率,可以写作下式:
{ P ( y = 1 ∣ x , w ) = h ( x ) P ( y = 0 ∣ x , w ) = 1 − h ( x ) \left\{\begin{array}{ll} P(y=1 \mid x, w)= & h(x) \\ P(y=0 \mid x, w)= & 1-h(x) \end{array}\right. { P(y=1x,w)=P(y=0x,w)=h(x)1h(x)

  由于 y 只能取 0 或者 1,可以将上面两个式写成一个式子:
P ( y ∣ x , w ) = h ( x ) y [ 1 − h ( x ) ] 1 − y P(y \mid x, w)=h(x)^{y}[1-h(x)]^{1-y} P(yx,w)=h(x)y[1h(x)]1y

  写出似然函数,其中 N 为样本总数量,将每一个概率累乘就得到了似然函数:
L ( w ) = ∏ i = 1 N h ( X i ) y i [ 1 − h ( X i ) ] 1 − y i L(w)=\prod_{i=1}^{N} h\left(X_{i}\right)^{y_{i}}\left[1-h\left(X_{i}\right)\right]^{1-y_{i}} L(w)=i=1Nh(Xi)yi[1h(Xi)]1yi

  在 w 的所有可能取值中找一个使得似然函数取到最大值,这时求得的解就是 w 的最大似然估计6(maximum likelihood estimation/MLE)
w = argmax ⁡ w ( L ( w ) ) = argmax ⁡ w ( ∏ i = 1 N h ( X i ) y i [ 1 − h ( X i ) ] 1 − y i ) w=\underset{w}{\operatorname{argmax}}(L(w))=\underset{w}{\operatorname{argmax}}\left(\prod_{i=1}^{N} h\left(X_{i}\right)^{y_{i}}\left[1-h\left(X_{i}\right)\right]^{1-y_{i}}\right) w=wargmax(L(w))=wargmax(i=1Nh(Xi)yi[1h(Xi)]1yi)

  由于带连乘运算的代价函数不好优化,这里我们对似然函数取自然对数并且取反,S 函数的取值为(0,1),似然函数的取值也是(0,1),对其取对数不影响其单调性。这样就得到了对数几率回归的代价函数:
Cost ⁡ ( w ) = − ln ⁡ L ( w ) = − ∑ i = 1 N ( y i ln ⁡ h ( X i ) + ( 1 − y i ) ln ⁡ ( 1 − h ( X i ) ) ) \begin{aligned} \operatorname{Cost}(w) &=-\ln L(w) \\ &=-\sum_{i=1}^{N}\left(y_{i} \ln h\left(X_{i}\right)+\left(1-y_{i}\right) \ln \left(1-h\left(X_{i}\right)\right)\right) \end{aligned} Cost(w)=lnL(w)=i=1N(yilnh(Xi)+(1yi)ln(1h(Xi)))

  由于加了一步取反的操作,这是就不是求最大值,而是将其改为求最小值:
w = argmin ⁡ w ( − ∑ i = 1 N ( y i ln ⁡ h ( X i ) + ( 1 − y i ) ln ⁡ ( 1 − h ( X i ) ) ) ) w=\underset{w}{\operatorname{argmin}}\left(-\sum_{i=1}^{N}\left(y_{i} \ln h\left(X_{i}\right)+\left(1-y_{i}\right) \ln \left(1-h\left(X_{i}\right)\right)\right)\right) w=wargmin(i=1N(yilnh(Xi)+(1yi)ln(1h(Xi))))

第二种表示方式:
  我们先来看下 S 函数的一个性质:
f ( z ) = 1 1 + e − z = e z 1 + e z f ( − z ) = 1 1 + e z = 1 − f ( z ) \begin{aligned} f(z) &=\frac{1}{1+e^{-z}}=\frac{e^{z}}{1+e^{z}} \\ f(-z) &=\frac{1}{1+e^{z}}=1-f(z) \end{aligned} f(z)f(z)=1+ez1=1+ezez=1+ez1=1f(z)

  在二元分类的情况下, 当 y 的值取 -1 或者 1 时,将对数几率回归的函数方程的结果看作概率,可以写作下式
{ P ( y = 1 ∣ x , w ) = h ( x ) = 1 1 + e − w T x P ( y = − 1 ∣ x , w ) = 1 − h ( x ) = h ( − x ) = 1 1 + e w T x \left\{\begin{array}{l} P(y=1 \mid x, w)=h(x)=\frac{1}{1+e^{-w^{T} x}} \\ P(y=-1 \mid x, w)=1-h(x)=h(-x)=\frac{1}{1+e^{w^{T} x}} \end{array}\right. { P(y=1x,w)=h(x)=1+ewTx1P(y=1x,w)=1h(x)=h(x)=

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值