逻辑回归
作为一个传统算法,可能从名字上来看,逻辑回归是一个回归算法,但是它却是一个分类算法,是最基础的分类算法,当我们做分类算法选择的时候,先用逻辑回归再用复杂的算法,能简单的先用简单的,逻辑回归的效果往往是最好的。
sigmoid函数
要学习逻辑回归,我们需要先认识一个函数,sigmoid函数,它的取值范围是0到1。
逻辑回归之所以是一个分类算法,是因为它把结果值都映射到0到1的区间上,我们只需要设定一个阈值(比如0.5),当大于0.5的时候,我们取1这个类别,当小于0.5的时候,我们取0这个类别。 下面是sigmoid的函数,
那么线性回归和逻辑回归有什么关系呢,我们可以这样理解,我们在线性回归得到了一个预测值,再将该值映射到sigmoid函数中,这样就完成了由值到概率的转换,也就是分类任务,就如下面这样。
对于一个分类任务,我们做一个基本的假设,当取1这个类别的时候,它的概率是h(x),所以它取0这个类别的时候,概率是1-h(x)。
我们可以把它整合成:
似然函数
关于似然函数,https://blog.csdn.net/caimouse/article/details/60142085 这篇博文我觉得还不错,大家可以参考一下,简单来说,似然函数就是求出什么参数跟我们的数据组合后恰好是真实值。
而极大似然估计,讲的是,什么样的概率使得我们的结果越大越好呢,我们要做的就是使他成为真实值的概率越大越好。下面是最大似然估计(m表示有m个样本):
上面的式子是累乘,我们要把它变成对数似然函数,因为logAB=logA+logB,加法问题比乘法问题好求太多了。
这是一个求最大值问题,我们需要转化为求最小值问题,我们要引入一个负号。
接下来,我们就要对参数求偏导了,下面是计算过程。(这里的i是第i个样本,j是第j个参数)
最后,我们就要进行参数更新了,一般这里1/m可以省略,因为α本身也是一个常数。
下面一篇文章的3.4是对逻辑回归梯度下降向量化有很好的介绍,对于手动实现逻辑回归有很好的帮助:
https://blog.csdn.net/ligang_csdn/article/details/53838743
另外,对于多分类问题,我们可以用softmax函数,这里就不深究,有兴趣的可以自己看一看。
到这里,我们的整个逻辑回归过程就都完成了,从sigmoid函数到目标函数再到参数更新,整一个过程,都是挺容易的。计算速度也很快,所以逻辑回归真的很好很好用!