一文搞懂:线性回归与逻辑回归(似然参数估计)

线性回归解决的是回归问题,逻辑回归相当于是线性回归的基础上,来解决分类问题。

公式

线性回归(Linear Regression)是什么相比不用多说了。格式是这个样子的:
fw,b(x)=iwixi+bf_{w,b}(x)=\sum_i{w_ix_i}+b

而逻辑回归(Logistic Regression)的样子呢?
fw,b(x)=σ(iwixi+b)f_{w,b}(x)=\sigma(\sum_i{w_ix_i}+b)

要记住的第一句话:逻辑回归可以理解为在线性回归后加了一个sigmoid函数。将线性回归变成一个0~1输出的分类问题。

sigmoid

sigmoid函数就是:
σ(z)=11+ez\sigma(z)=\frac{1}{1+e^{-z}}

函数图像是:
一文搞懂:线性回归与逻辑回归(似然参数估计)
线性回归得到大于0的输出,逻辑回归就会得到0.5~1的输出;
线性回归得到小于0的输出,逻辑回归就会得到0~0.5的输出;


这篇文章的重点,在于线性回归的参数估计使用的最小二乘法,而而逻辑回归使用的是似然估计的方法。(当然,两者都可以使用梯度下降的方法)。


似然估计逻辑回归参数

举个例子,现在我们有了一个训练数据集,是一个二分类问题:
一文搞懂:线性回归与逻辑回归(似然参数估计)
上面的x1x^1是样本,下面的C1C_1是类别,总共有两个类别。

现在假设我们有一个逻辑回归的模型:
fw,b(x)=σ(iwixi+b)f_{w,b}(x)=\sigma(\sum_i{w_ix_i}+b)
那么fw,b(x1)f_{w,b}(x^1)的结果,就是一个0~1的数,我们可以设定好,假设这个数字就是是类别C1C_1的概率,反之,1减去这个数字,就是类别C2C_2的概率。

似然简单的理解,就是让我们上面的数据集出现的概率最大
我们来理解一下:

  1. x1x_1C1C_1的概率是fw,b(x1)f_{w,b}(x^1);
  2. x2x_2C1C_1的概率是fw,b(x2)f_{w,b}(x^2);
  3. x3x_3C2C_2的概率是1fw,b(x3)1-f_{w,b}(x^3);
  4. ……
  5. xNx_NC1C_1的概率是fw,b(xN)f_{w,b}(x^N);

样本之间彼此独立,那么上面那个数据集的概率是什么?是每一个样本的乘积,这个就是似然Likelihood:
一文搞懂:线性回归与逻辑回归(似然参数估计)

我们希望这个w,b的参数估计值,就是能获得最大化似然的那个参数。也就是:
一文搞懂:线性回归与逻辑回归(似然参数估计)
加上负号之后,就可以变成最小化的问题。当然,加上一个log并不会影响整个的w,b的估计值。因为L(w,b)L(w,b)最大的时候,log(L(w,b))log(L(w,b))也是最大的,log是个单调递增的函数。所以可以得到下面的:
【注意:所有的log其实是以e为底数的自然对数】
一文搞懂:线性回归与逻辑回归(似然参数估计)
log又可以把之前的乘积和,转换成加法。
log(L(w,b))=log(f(x1))+log(f(x2))+log(1f(x3))...log(L(w,b))=log(f(x^1))+log(f(x^2))+log(1-f(x^3))...

然后,为了更加简化这个算是,我们将C1,C2C_1, C_2数值化,变成1和0,然后每一个样本的真实标签用yy来表示,所以就可以得到:
log(L(w,b))=iNylog(f(xi))+(1y)log(1f(xi))log(L(w,b))=\sum_i^N{ylog(f(x^i))+(1-y)log(1-f(x^i))}
【有点像是二值交叉熵,然而其实就是二值交叉熵。。】

  • 当y=1,也就是类别是C1C_1的时候,这个是log(f(xi))log(f(x^i))
  • 当y=0,也就是类别是C2C_2的时候,这个是1log(f(xi))1-log(f(x^i))

所以其实我们得到的损失函数是:
loss=log(L(w,b))=iNylog(f(xi))+(1y)log(1f(xi))loss=-log(L(w,b))=-\sum_i^N{ylog(f(x^i))+(1-y)log(1-f(x^i))}

之前说了,要找到让这个loss最小的时候的w和b,那怎么找?
【无情万能的梯度下降】

所以计算lossw\frac{\partial loss}{\partial w},然后乘上学习率就好了。这里就不继续推导了,有耐心的可以慢慢推导,反正肯定能推出来的。
这里放个结果把:
lnL(w,b)wi=nN(ynfw,b(xn))xin\frac{-\partial lnL(w,b)}{\partial w_i}=\sum_n^N{-(y^n-f_{w,b}(x^n))x_i^n}

  • 其中wiw_i为第i个要估计的参数,第i个特征;
  • xinx^n_i是第n个样本的第i个特征的值;
  • yny^n是第n个样本的真实类别,0或者1。

喜欢的话请关注我们的微信公众号~《你好世界炼丹师》,或者知乎【你好世界炼丹师】。

  • 公众号主要讲统计学,数据科学,机器学习,深度学习,以及一些参加Kaggle竞赛的经验。
  • 公众号内容建议作为课后的一些相关知识的补充,饭后甜点。
  • 此外,为了不过多打扰,公众号每周推送一次,每次4~6篇精选文章。

微信搜索公众号:你好世界炼丹师。期待您的关注。