为什么写这篇文章
本人初学python,碰巧做的东西需要用一下Logistic回归,自觉这个很基础的东西应该已经有很多比较好的实现了,于是我就很自觉地问了下度娘。结果大囧==..出来的相关结果少得可怜,只有一个实现好的代码,但是看了下实现的比较粗糙,梯度下降部分用的是固定步长..于是抱着死马当活马医心态google了一下,结果发现有不少成熟的统计和科学计算的包里面已经实现好了,比如statsmodels,于是本文就讲一下怎么用statsmodels做Logistic回归好啦~
吐槽下..学术上的事果然还是国外比国内靠谱得多..
什么是Logistic回归
用处
Logistic回归主要用于分类,即给定一个用数值表示的特征向量X(粗体表示向量),求出这个向量所属的类别Y
当然,可以用来分类的算法很多,比如SVM,神经网络等。但是这些算法都比较复杂,要掌握其细节有些难度。Logistic回归虽然简单,但是在很多情况下也能得到很好的效果
函数形式及学习参数的算法
Logistic回归的函数属于sigmoid函数,就相当于把sigmoid的自变量替换成多元线性回归的自变量部分(等号右边)即可
学习自变量X的参数θ的方法是梯度下降法(GradientDescent),核心思想就是根据原函数的特性,构造出一个准则函数J(θ),这个准则函数的特性是J(θ)的值越小,原函数的拟合程度就越好。然后随机对θ赋初值,每一次迭代计算出J(θ)的梯度▽J(θ),我们知道函数的梯度是函数值上升最快的方向,所以这里取梯度的负方向-▽J(θ),再乘以一个步长η(k),就可以得到每次迭代后更新的参数