回归算法求解分类问题

上一篇讲了回归算法求解关于feature的线性函数的问题,这一篇讲一下求解分类问题的思路。

先看一个函数:

这个函数叫logistic函数(下面都写成$F(x)$),它的表达式是$F(x)=\frac{1}{1+e^{-x}}$,有$\lim_{x\rightarrow\infty}F(x)=1$和$\lim_{x\rightarrow-\infty}F(x)=0$。由上图可以看出,在$x=\pm4$的时候就已经非常接近极限了。

这个函数有什么用呢?

上一篇文章讲了线性回归的思路,这个算法对于线性函数关系非常好用,或者它对于大多数连续函数都非常好用。但是分类问题不是连续函数,比如二分类问题,它只有两个值,0或者1。

那我们可以这样想,我定义的函数还是线性关系的函数,$Y=\Theta^TX$,如果根据这个函数算出来的值大于0,我就认为它是1,如果算出来小于0,我就认为它是1。这是一个很自然的思路。但是问题在哪里?问题在于怎么定义损失函数?因为我们的训练集的Y值都是只有0或者1,所以我们显然需要把我们定义的函数Y也映射到[0,1]之间,否则我们压根没法写出损失函数(怎么跟真实值去求距离?)。那么我们用什么函数呢?就是logistic函数。因此我们最后选择的关系函数是$Y=F(\Theta^TX)$,其中F是logistic函数。

从概率上讲,我们可以把Y理解为这个样本是1的概率。此外其实能把实数映射到[0,1]之间的函数很多,为什么选择这个呢?事实上不仅有这一种,只要效果好都可以。

后面会看到,logistic函数求导还有非常好的性质,从而使得表达式非常简洁。

那么有了关系函数,我们要来定义损失函数了。损失函数怎么定义呢?最简单的一种思路:按照原来的$J(\Theta,X,Y)={\frac{1}{m}}\sum_{i=1}^{m}{\frac{(\Theta^{T}X^{i}-Y^{i})^2}{2}}$的思路,改成$J(\Theta,X,Y)={\frac{1}{m}}\sum_{i=1}^{m}{\frac{(F(\Theta^{T}X^{i})-Y^{i})^2}{2}}$。但是这样有一个问题,那就是惩罚的力度不够大,假设我们定义的损失函数就是这个,那么我们来求一下偏导。

首先,$\frac{\text{d}F(x)}{\text{d}x}=(\frac{1}{1+e^{-x}})'=-(1+e^{-x})^{-2}(-e^{-x})=\frac{1}{1+e^{-x}}\frac{e^{-x}}{1+e^{-x}}=F(x)(1-F(x))$。

然后,给J求偏导:

$\frac{\partial {J(\Theta)}}{\partial \Theta_i}$

$=\frac{1}{m}\sum_{i=1}^{m}\frac{\partial{\frac{(F(\Theta^{T}X^{i})-Y^{i})^2}{2}}}{\partial \Theta_i}$

$=\frac{1}{m}\sum_{j=1}^{m}\frac{\partial{\frac{(F(\Theta^{T}X^{j})-Y^{j})^2}{2}}}{\partial F(\Theta^TX^j)}\frac{\partial F(\Theta^TX^j)}{\partial \Theta^TX^j}\frac{\partial \Theta^TX^j}{\partial \Theta_i}$

$=\frac{1}{m}\sum_{j=1}^{m}(F(\Theta^TX^j)-Y^j)F(\Theta^TX^j)(1-F(\Theta^TX^j))X^j_i$

因为F(x)的值域是(0,1)的,而且通常X也会规范化到[0,1]之间,另外Y也是0或者1的值,所以这个偏导的值有可能非常非常的小。不仅如此,而且F(x)的变化有可能非常非常的缓慢,因此对这个函数回归是非常不靠谱的。

由数学的对称美的思想,我们用了$e$来做事情,也要用$\log$来做事情,事实上用$\log$来解决F(x)变化缓慢最合适不过了。

定义损失函数如下:$J(\Theta)=\frac{1}{m}\sum_{j=1}^{m}(-(1-Y^j)\log(1-F(\Theta^TX^j))-Y^j\log(F(\Theta^TX^j)))$

可以分类讨论一下,就可以知道,这个损失函数的意思就是:当$Y^j=0$时,$F(\Theta^TX^j)$越接近0,损失函数越小;当$Y^j=1$时,$F(\Theta^TX^j)$越接近1,损失函数越小。而且与真实值差距太多的时候,损失函数会趋近于无穷大。

 对J求偏导:

$\frac{\partial J(\Theta)}{\partial \Theta_i}$

$=\frac{1}{m}\sum_{j=1}^{m}\frac{\partial{(-(1-Y^j)\log(1-F(\Theta^TX^j))-Y^j\log(F(\Theta^TX^j)))}}{\partial \Theta_i}$

$=-\frac{1}{m}\sum_{j=1}^{m}((1-Y^j)\frac{\partial \log(1-F(\Theta^TX^j))}{\partial \Theta_i}+Y^j\frac{\partial \log(F(\Theta^TX^j))}{\partial \Theta_i})$

$=-\frac{1}{m}\sum_{j=1}^{m}((1-Y^j)\frac{\partial \log(1-F(\Theta^TX^j))}{\partial F(\Theta^TX^j)}\frac{\partial F(\Theta^TX^j)}{\partial \Theta^TX^j}\frac{\partial \Theta^TX^j}{\partial \Theta_i}+Y^j\frac{\partial \log(F(\Theta^TX^j))}{\partial F(\Theta^TX^j)}\frac{\partial F(\Theta^TX^j)}{\partial \Theta^TX^j}\frac{\partial \Theta^TX^j}{\partial \Theta_i})$

$=\frac{1}{m}\sum_{j=1}^{m}((1-Y^j)F(\Theta^TX^j)X^j_i-Y^j(1-F(\Theta^TX^j))X^j_i)$

$=\frac{1}{m}\sum_{j=1}^{m}(F(\Theta^TX^j)-Y^j)X^j_i$

结果让人震惊!

再回顾一下线性回归的J求偏导的结果:

$\frac{\partial J(\Theta)}{\partial \Theta_i}=\frac{1}{m}\sum_{j=1}^{m}(\Theta^TX^j-Y^j)*X^j_i$

由此可以看出,这个损失函数定义的非常科学合理。

转载于:https://www.cnblogs.com/mlsong/p/7713979.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值