目录:网上冲浪指南

逻辑回归与梯度上升

2017/11/07

二分类问题

逻辑回归是一个二分类问题。
二分类问题是指预测的y值只有两个取值(0或1),二分类问题可以扩展到多分类问题。例如:我们要做一个垃圾邮件过滤系统,xix_i是邮件的特征,预测的y值就是邮件的类别,是垃圾邮件还是正常邮件。对于类别我们通常称为正类(positive class)和负类(negative class),垃圾邮件的例子中,正类就是正常邮件,负类就是垃圾邮件。

逻辑回归

逻辑函数

将特征值输入一个函数,得到的结果非零即一。这个函数就是逻辑函数(或者说,阶跃函数),但这种函数在数学上不容易处理,所以使用一种类似的函数来代替—— Sigmoid 函数:

σ(z)=11+ez\sigma(z)=\frac{1}{1+e^{-z}}

image_1blt3u3r01hk2m031mf61orn1ic19.png-92.9kB

横坐标尺度足够时,他就看起来像是一个阶跃函数

逻辑回归表达式

把特征值乘上相应的回归系数然后求和,扔进逻辑函数里面:

hθ(x)=σ(θTx)=11+eθTxh_\theta(x)=\sigma(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}

为了取消一些误差,令x0=1x_0=1

θTx=θ0+j=1nθjxj\theta^Tx=\theta_0+\sum_{j=1}^n\theta_jx_j

θ0\theta_0看起来就像是多项式中的常数项

逻辑回归的结果可以看作输入的xx为正类的概率:

P(y=1x;θ)=hθ(x)P(y=0x;θ)=1hθ(x)P(y=1|x;\theta)=h_\theta(x)\\\\ P(y=0|x;\theta)=1-h_\theta(x)

上面的式子合并一下:

P(yx;θ)=(hθ(x))y(1hθ(x))1yP(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y}

最大似然估计

为了求出一个比较合适的θ\theta的值,需要使用梯度上升的算法来求解。

最大似然函数

如果已经有了样本集,那么可以寻找使得样本集出现的概率最大的θ\theta作为θ\theta的估计。
因为样本X1...XnX_1...X_n相互独立且服从相同的分布,那么样本的联合概率密度函数为:

L(x1...xn;θ1...θk)=i=1nf(xi,θ1...θk)L(x_1...x_n;\theta_1...\theta_k)=\prod_{i=1}^nf(x_i,\theta_1...\theta_k)

当样本值固定的时候,他就是θ1...θk\theta_1...\theta_k的函数,仍然把这个函数记为:

L(θ1...θk)=i=1nf(xi,θ1...θk)L(\theta_1...\theta_k)=\prod_{i=1}^nf(x_i,\theta_1...\theta_k)

并称它为似然函数。
就像本小节开头说的一样,我们需要选择使L(θ1...θk)L(\theta_1...\theta_k)最大的 θ\theta 作为真 θ\theta 的估计。

求解最大似然估计

对于两个给出的 θ1,θ2\theta_1,\theta_2,如果L(θ1)>L(θ2)L(\theta_1)>L(\theta_2),那么从L(θ)L(\theta)是概率密度函数的角度来看,θ1\theta_1 能让样本 XX 出现的可能性更大,所以,求出 θ\theta 的最大似然估计实际是求 L(θ)L(\theta) 的最大值,由于对数函数是单调增函数,所以 log(L(θ))log(L(\theta))L(θ)L(\theta) 具有相同的最大值点,而且,在许多情况下,对数函数求最大值比较简单,所以我们只要求出 log(L(θ))log(L(\theta)) 的最大值点即可。

上一节中提到的概率密度函数的似然函数就是:

L(θ)=p(yX;θ)=i=imp(yixi;θ)=i=im((hθ(x))yi(1hθ(xi))1yi)\begin{aligned} L(\theta)&=p(\vec{y}|X;\theta) \\\\ & = \prod_{i=i}^mp(y_i|x_i;\theta) \\\\ & = \prod_{i=i}^m((h_\theta(x))^{y_i}(1-h_\theta(x_i))^{1-y_i}) \\\\ \end{aligned}

对似然函数取 log:

log(L(θ))=i=1myilogh(xi)+(1yi)log(1h(xi))log(L(\theta))=\sum_{i=1}^my_ilogh(x_i)+(1-y_i)log(1-h(x_i))

使用梯度上升求解最大似然估计

image_1blt7et2714ag1ev91ok5ba61lj59.png-87.6kB

上图形象的说明了梯度上升在做的事:给定初始的 θ\theta 值,并规定一个步进长度 α\alpha,那么梯度就是 θlog(L(θ))α\frac{\partial}{\partial \theta}log(L(\theta)) \bullet \alpha 他的含义是指向数值更大的等值线的一个单位向量,因为:

θlog(L(θ))=(yihθ(xi))xi\frac{\partial}{\partial \theta}log(L(\theta))=(y_i-h_\theta(x_i))x_i

所以 θ\theta 的迭代表达式就是:

θ:=θ+α(yihθ(xi))xi\theta:=\theta+\alpha (y_i-h_\theta(x_i))x_i


参考

数学基础:http://www.cnblogs.com/gaoshangbing/articles/1709636.html

算法详解:http://www.cnblogs.com/BYRans/p/4713624.html

内容导航

本网站所展示的文章由 Zeeko Zhu 采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可

Zeeko's blog, Powered by ASP.NET Core 🐳