Logistic回归
2018-05-28 本文已影响0人
当时年少_青衣
在之前我已经写了一篇关于线性回归的文章,今天给大家带来另一个重要的回归分类算法----逻辑回归
逻辑回归考虑的数值情况不同与线性回归,根据问题中随机变量的不同种类而选择不同的分类算法
线性回归主要用于解决连续型数值的问题
逻辑回归主要用于解决离散型数值问题
那么什么样的数值是连续型?什么是离散型?
首先我们要知道随机变量分为离散型和连续型,然后我们给出其定义:
如果随机变量X只可能取有限个或至多可列个值,则称X为离散型随机变量
能按一定次序一一列出,其值域为一个或若干个有限或无限区间,这样的随机变量称为离散型随机变量
在离散型问题中我们考虑最多的就是二元离散,也就是情况为正或者为负,我们将其记为1和0
image.png
就像下面这样
image.png
统计出数值结果后想对其进行分类,从而能够预测出一个新的x点应该是1还是0,发现很难使用一条直线去准确预测出这个分类线
最终,经过一堆数学家的努力,发现了一个非常适合离散型数值的函数
逻辑回归
通过改变函数的参数,我们最终可以找到一个适合我们数据的一条线,然后,我们通过求出这个点的概率来预测最终结果,也就是给出一个参数x,我们通过求出y=1的概率,来预测结果
image.png
如上所示给出一个x值最终求出其y=1的概率我0.7,那么我们就可以预测出其值为1,如果求得概率为0.3的话我们就认为其值应该为0,而这里判断的概率阈值就是0.5,当概率大于等于0.5认为结果为1,否则为0
image.png
这里的阈值有一个专属名词为Decision Boundary(决策边界)
这里的决策边界就是日常中所说的分界线(学生时代的38线)
image.png
image.png
由上我们发现决策边界的选择各种各样,那么我们如何找出最适合的边界呢?
根据我们的函数,问题总结为如何找出最适合的参数Θ?
image.png
很显然,老套路,我们先算出其代价函数J(Θ),然后最小化J就行
而逻辑回归中的代价函数和之前中的线性回归的代价函数是相同的,
image.png
image.png
而和线性回归不同的就是H(Θ)的不同,而由于逻辑回归中y=1 or y=0
因此不同于线性回归,逻辑回归的代价函数
image.png
最后我们通过极大似然法简化代价函数
image.png
现在我们得到了代价函数,接下来我们将其最小化求出Θ
image.png
首先使用梯度下降法:
方法就是一如既往的对其求导找出下降最快的方向然后去下降
这次我们可以不用梯度下降法,我们找到其他优化算法:共轭梯度
image.png
使用共轭梯度时我们不用去手动选择下降速度α,因为共轭梯度会自动帮我们找出最优α,而且共轭梯度的速度更快,这些优点也保证了其复杂度,但是往往第三方库已经帮我们实现了这些算法,我们只需要知道如何去调用就行
image.png
上面我们拥有一个有两个参数的问题,我们知道了其代价函数J(Θ),我们想求求其最小化函数,右边是在Octave里直接调用一个函数来返回我们的代价函数,这个函数返回两个参数,jVal是代价函数,第二个参数是Θ
现在我们在下面使用无约束最小化函数来使J最小化,调用这个函数需要设置一下参数,@costFunction是我们刚刚定义的costFunction函数的指针,,optiojns中GradObj,'on'为设置梯度目标参数为打开,然后函数就可以自动实现求最优α,maxiter,100为设置最大迭代此数为100,然后initialtheta为我们设置的基础Θ值
最后这个函数会返回一组我们需要的,openTheta为最优Θ,functionVal为我们最后的代价函数值,而exitFlag值确定是否收敛,1为收敛