逻辑回归

介绍

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

sigmoid函数

先来看这样一个函数
y=11+ex y = \frac{1}{1+e^{-x}}
这个函数叫做sigmoid函数,它的图像是这样的逻辑回归(一)—— 基本推导

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

极大似然估计

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

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

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

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

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

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

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

代价函数

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

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

梯度下降

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

J(θ)θ=i=1n(yihθ(xi)1yi1hθ(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}

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

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

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

hθ(xi)θ=h(t)tθ=h(t)θTxθ=h(t)(1h(t))xi=hθ(xi)(1hθ(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

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:=θjαi=1nxi(hθ(xi)yi) \theta_j := \theta_j - \alpha\sum_{i=1}^{n}x_i(h_\theta(x_i)-y_i)

相关文章:

  • 2021-07-28
  • 2021-12-18
  • 2021-12-13
  • 2021-11-12
  • 2021-08-25
  • 2022-12-23
  • 2021-09-16
猜你喜欢
  • 2021-12-11
  • 2021-08-03
  • 2022-01-07
相关资源
相似解决方案