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

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

公式

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

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

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

sigmoid

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

函数图像是:

线性回归得到大于0的输出,逻辑回归就会得到0.5~1的输出;
线性回归得到小于0的输出,逻辑回归就会得到0~0.5的输出;


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


似然估计逻辑回归参数

举个例子,现在我们有了一个训练数据集,是一个二分类问题:

上面的 x 1 x^1 x1是样本,下面的 C 1 C_1 C1是类别,总共有两个类别。

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

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

  1. x 1 x_1 x1 C 1 C_1 C1的概率是 f w , b ( x 1 ) f_{w,b}(x^1) fw,b(x1);
  2. x 2 x_2 x2 C 1 C_1 C1的概率是 f w , b ( x 2 ) f_{w,b}(x^2) fw,b(x2);
  3. x 3 x_3 x3 C 2 C_2 C2的概率是 1 − f w , b ( x 3 ) 1-f_{w,b}(x^3) 1fw,b(x3);
  4. ……
  5. x N x_N xN C 1 C_1 C1的概率是 f w , b ( x N ) f_{w,b}(x^N) fw,b(xN);

样本之间彼此独立,那么上面那个数据集的概率是什么?是每一个样本的乘积,这个就是似然Likelihood:

我们希望这个w,b的参数估计值,就是能获得最大化似然的那个参数。也就是:

加上负号之后,就可以变成最小化的问题。当然,加上一个log并不会影响整个的w,b的估计值。因为 L ( w , b ) L(w,b) L(w,b)最大的时候, l o g ( L ( w , b ) ) log(L(w,b)) log(L(w,b))也是最大的,log是个单调递增的函数。所以可以得到下面的:
【注意:所有的log其实是以e为底数的自然对数】

log又可以把之前的乘积和,转换成加法。
l o g ( L ( w , b ) ) = l o g ( f ( x 1 ) ) + l o g ( f ( x 2 ) ) + l o g ( 1 − f ( x 3 ) ) . . . log(L(w,b))=log(f(x^1))+log(f(x^2))+log(1-f(x^3))... log(L(w,b))=log(f(x1))+log(f(x2))+log(1f(x3))...

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

  • 当y=1,也就是类别是 C 1 C_1 C1的时候,这个是 l o g ( f ( x i ) ) log(f(x^i)) log(f(xi))
  • 当y=0,也就是类别是 C 2 C_2 C2的时候,这个是 1 − l o g ( f ( x i ) ) 1-log(f(x^i)) 1log(f(xi))

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

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

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

  • 其中 w i w_i wi为第i个要估计的参数,第i个特征;
  • x i n x^n_i xin是第n个样本的第i个特征的值;
  • y n y^n yn是第n个样本的真实类别,0或者1。

喜欢的话,可以微信扫码关注微信公众号【机器学习炼丹术】,成为炫酷的炼丹师吧~

公众号回复【下载】有精选的免费机器学习学习资料。 公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~

  • 【机器学习的基础数学(PDF)】
  • 【竞赛中的大数据处理流程(PDF)】
  • 【如何做大数据的基础特征工程(PDF)】
  • 【自然语言处理NLP的应用实践大合集(PDF)】
  • 【python入门级教材(400页PDF)】

公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值