正在阅读:

机器学习之Logistic回归(非线性回归)

引言

回归问题在前面的几篇文章已经简单的介绍过了,不过前面几篇文章都是线性回归问题,这一篇文章就写一下在非线性情况下的线性回归问题。简单来说,非线性回归问题和线性回归问题的区别在于预测值得类型,线性回归处理的是线性问题,而非线性回归处理的则二分类问题。比如下面的例子:

blob.png

上图坐标中展示的是肿瘤的尺寸和良性肿瘤和恶性肿瘤的之间的关系,这就是典型的二分类问题,而图像确是一条直线,这条直线上的y值其实代表的是概率,可以看出,其基本处在0和1之间,可以说,当x大于某个值时可以判断出该肿瘤有可能为恶性,当x的值小于某个值时可以判断出该肿瘤可能为良性。

基本模型

跟线性回归问题类似,我们可以的回归函数如下:

blob.png

这里的χ是我们的训练数据,θ是2我们的参数,使用向量的形式表示如:

blob.png

θ={θ1,θ2,.....,θn},X={x1,x2,....,xn},θT代表θ的转置。

因为我们处理的是二分类问题,所以这里我们的输出Z并不是我们的最终结果,我们需要将结果Z映射成为类别输出,在神经网络那一篇文章中提到过这一点,我们可以使用Sigmoid函数,这里再简单说一下,先看以下Sigmoid的函数图像,如下:

blob.png

该函数的方程为:

blob.png

该方程将Z映射为接近1或者0的值,将线性问题转换为分类问题,完成分为1类或者2类的任务。由此我们可以得到下面的预测函数:

blob.png

不过,这里我们似乎还没有缺点参数θ,前面的几篇线性回归问题中我们介绍了其参数的确定方法,下面我们回顾一下:

blob.pngblob.pngblob.png

 

我们要找到最合适的参数θ0、θ1,使得上式最小,我们前面使用的方法是最小二乘法,具体介请参见《机器学习简单线性回归模型》。下面使用一种新的方法,叫作梯度下降法。

在Logistic回归中跟线性回归还是有些区别的。下面将通过Cost函数和梯度下降法来介绍,如何确定参数θ。

Cost函数

这里的Cost函数可以理解为代价函数,其用途就是对假设的函数进行评价,Const函数越小的函数,说明拟合训练数据拟合的越好。从网上找了一张图来介绍Cost:

QQ截图20170822170506.jpg

下面给出Const函数的具体内容:

QQ截图20170822170935.jpg

上式解释为当y为1时Const(h(x),y)=-log(h(x));当y=0时,Const(h(x),y)=-log(1-h(x))。

这里的Cost函数和J(θ)函数是基于最大似然估计推导得到的,我们可以通过简单的变换,将其合并:

QQ截图20170822171228.jpg

我们知道,J(θ)越小对我们也就越有利,所以我们需要做的就是寻找合适的参数,是的J(θ)最小。

梯度下降法

引用网上的一句话解释梯度下降法是怎么回事,梯度下降法可以理解为一个人站在山坡上,往周围看,从哪个方向走可以最快到达山底。下图就说明了下降过程:

1.jpg

算法基本流程如下:

1、先确定向下一步的步伐大小,我们称为Learning rate(学习率);

2、给定任意的参数值θ

3、确定一个向下的方向,并向下走预先规定的步伐,并更新θ

4、当下降的高度小于某个定义的值,则停止下降;

其中第三部的下降有两种方法,一种是批梯度下降,是对全部的训练数据求得误差后再对θ进行更新;另一种是随机梯度下降,每扫描一步都要对θ进行更新。前一种方法能够不断收敛,后一种方法结果可能不断在收敛处徘徊。二者各有优缺点,可看情况使用。

①、批梯度下降法公式:

2.jpg

这里的J(θ)便是上面我们提到的Const函数,通过求导化简,我们得到如下更新法则:

3.jpg

  • 优点:全局最优解;易于并行实现;总体迭代次数不多。

  • 缺点:当样本数目很多时,训练过程会很慢,每次迭代需要耗费大量的时间。

②、随机梯度下降(SGD)法公式:

日日日.jpg

  • 优点:训练速度快,每次迭代计算量不大

  • 缺点:准确度下降,并不是全局最优;不易于并行实现;总体迭代次数比较多。

参数i代表第i个实例,j代表第j个参数。

补充一点,梯度下降算法的随机参数是会影响其最终下降结果的,看下面这张图:

222.jpg

此图中的随机参数点和之前的不同,通过梯度下降也同样到达了最下面,注意不是最低点,从图中可以看出,它到达的是局部最低点,并不是全局最低点,所以,梯度下降的一大特点就是到下降的最低点在大多数情况下都是局部最低点而不是全剧最低点。

结束语

本文中只讲解了简单的Logistic理论,侧重点主要在于梯度下降算法,很多公式的推导并没有写,感兴趣的同学可以研究一下。在下面的文文章中将简单介绍如何试用Python实现两种梯度下降算法,并使用Logistic建立简单的机器学习模型。

 

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌