逻辑回归(一)—— 基本推导

本文深入探讨逻辑回归原理,从sigmoid函数出发,解释如何使用极大似然估计确定参数,并通过梯度下降法优化代价函数,实现分类预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑回归

介绍

逻辑回归是用来做分类的,样本已经做好了分类,我们构建模型使得面对一个新的样本时可以对它进行分类。

sigmoid函数

先来看这样一个函数
y=11+e−x y = \frac{1}{1+e^{-x}} y=1+ex1
这个函数叫做sigmoid函数,它的图像是这样的sigmoid函数图像

可以看到无论x去什么值,总能把y映射到0~1之间。
hθ(x)=11+e−θTx h_\theta(x)=\frac{1}{1+e^{-\theta^T x}} hθ(x)=1+eθTx1
通过这个式子,我们就把原本的y值重新映射了一遍,所有的hθ(x)h_\theta(x)hθ(x)都处在0~1之间,对于h值大于0.5的我们将其类别标记为1,对于h值小于0.5的我们将其类别标记为0。这样就完成了分类。

极大似然估计

一些事情已经发生了,我们就把他们当做是在最大概率的情况下发生的,这就是极大似然估计。

举个例子,一个盒子里有100个球,有黑白两种颜色,但不知道黑白具体数量。

现在你一把抓了10个球,9黑1白,那么盒子里最有可能的分布是什么?

自然是90个黑球,10个白球,因为这种情况会让我们有最大概率抓到9黑1白。

也就是说我们要找到最大概率使得现状发生的这种情况,这种情况也就是最有可能的原有状况。

假设事件xix_ixi发生的概率为PxiP_{x_i}Pxi,那么这些事件都发生的概率就是:
P总=∏i=1nPxi P_总=\prod_{i=1}^nP_{x_i} P=i=1nPxi
此时我们还不知道θ\thetaθ的具体值,我们的目的就是求出使得P总P_总P达到最大的θ\thetaθ.

∏i=1nP(xi,θ)\prod_{i=1}^{n}P(x_i,\theta)i=1nP(xi,θ)也被称为似然函数。

代价函数

sigmoid函数的值域处在0~1之间,正好用来表示概率。

因此事件xix_ixi发生的概率就是
P(xi,θ)={hθ(xi)          ,y=11−hθ(xi),y=0 P(x_i,\theta)= \begin{cases} h_\theta(x_i) \,\,\,\,\,\,\,\,\,\,,y=1 \\ 1-h_\theta(x_i) ,y=0 \end{cases} P(xi,θ)={hθ(xi),y=11hθ(xi),y=0
写成一个式子就是
P(xi,θ)=hθ(xi)y(1−hθ(xi))1−y P(x_i,\theta)=h_\theta(x_i)^y(1-h_\theta(x_i))^{1-y} P(xi,θ)=hθ(xi)y(1hθ(xi))1y
那么P总P_总P就是
P总=∏i=1nhθ(xi)yi(1−hθ(xi))1−yi P_总=\prod_{i=1}^n h_\theta(x_i)^{y_i}(1-h_\theta(x_i))^{1-y_i} P=i=1nhθ(xi)yi(1hθ(xi))1yi
乘法太麻烦,我们求lnP总lnP_总lnP的最大值也是一样
lnP总=∑i=1nyilnhθ(xi)+(1−yi)ln(1−hθ(xi)) lnP_总=\sum_{i=1}^ny_ilnh_\theta(x_i)+(1-y_i)ln(1-h_\theta(x_i)) lnP=i=1nyilnhθ(xi)+(1yi)ln(1hθ(xi))
一般代价函数都会写成求最小值,所以我们在lnP总lnP_总lnP加个负号。
J(θ)=−∑i=1nyilnhθ(xi)+(1−yi)ln(1−hθ(xi)) J(\theta)=-\sum_{i=1}^ny_ilnh_\theta(x_i)+(1-y_i)ln(1-h_\theta(x_i)) J(θ)=i=1nyilnhθ(xi)+(1yi)ln(1hθ(xi))
这就是根据极大似然估计得出的逻辑回归的代价函数。

梯度下降

梯度下降是老办法了
θj:=θj−α∂∂θjJ(θ) \theta_j := \theta_j - \alpha\frac{∂}{∂\theta_j}J(\theta) θj:=θjαθjJ(θ)
还是求偏导
J(θ)=−∑i=1nyilnhθ(xi)+(1−yi)ln(1−hθ(xi)) J(\theta)=-\sum_{i=1}^ny_ilnh_\theta(x_i)+(1-y_i)ln(1-h_\theta(x_i)) J(θ)=i=1nyilnhθ(xi)+(1yi)ln(1hθ(xi))

∂J(θ)∂θ=−∑i=1n(yihθ(xi)−1−yi1−hθ(xi))∂hθ(xi)∂θ \frac{\partial J(\theta)}{\partial \theta}=-\sum_{i=1}^n(\frac{y_i}{h_\theta(x_i)}-\frac{1-y_i}{1-h_\theta(x_i)})\frac{\partial h_\theta(x_i)}{\partial \theta} θJ(θ)=i=1n(hθ(xi)yi1hθ(xi)1yi)θhθ(xi)

在最开始我们已经得到
hθ(x)=11+e−θTx h_\theta(x)=\frac{1}{1+e^{-\theta^T x}} hθ(x)=1+eθTx1
我们令θTx=t\theta^T x=tθTx=t

那么h(t)=11+e−th(t)=\frac{1}{1+e^{-t}}h(t)=1+et1
h,(t)=1et+e−t+2 h^,(t)=\frac{1}{e^t+e^{-t}+2} h(t)=et+et+21
又因为
h(t)∗(1−h(t))=1et+e−t+2 h(t)*(1-h(t))=\frac{1}{e^t+e^{-t}+2} h(t)(1h(t))=et+et+21

h,(t)=h(t)∗(1−h(t)) h^,(t)=h(t)*(1-h(t)) h(t)=h(t)(1h(t))

∂hθ(xi)∂θ=h,(t)∗∂t∂θ=h,(t)∗∂θTx∂θ=h(t)∗(1−h(t))∗xi=hθ(xi)(1−hθ(xi))∗xi \frac{\partial h_\theta(x_i)}{\partial \theta}=h^,(t)*\frac{\partial t}{\partial \theta}=h^,(t)*\frac{\partial \theta^Tx}{\partial \theta}=h(t)*(1-h(t))*x_i=h_\theta(x_i)(1-h_\theta(x_i))*x_i θhθ(xi)=h(t)θt=h(t)θθTx=h(t)(1h(t))xi=hθ(xi)(1hθ(xi))xi

∂J(θ)∂θ=∑i=1nxi(hθ(xi)−yi) \frac{\partial J(\theta)}{\partial \theta}=\sum_{i=1}^{n}x_i(h_\theta(x_i)-y_i) θJ(θ)=i=1nxi(hθ(xi)yi)

这么一来迭代的函数就有了
θj:=θj−α∑i=1nxi(hθ(xi)−yi) \theta_j := \theta_j - \alpha\sum_{i=1}^{n}x_i(h_\theta(x_i)-y_i) θj:=θjαi=1nxi(hθ(xi)yi)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值