从零开始学Python数据分析【26】--Logistic回归(理论部分)
作者:刘顺祥
个人微信公众号:每天进步一点点2015
前文传送门:
从零开始学Python数据分析【2】-- 数值计算及正则表达式
从零开始学Python数据分析【3】-- 控制流与自定义函数
从零开始学Python数据分析【5】-- pandas(序列部分)
从零开始学Python数据分析【6】-- pandas(数据框部分01)
从零开始学Python数据分析【7】-- pandas(数据框部分02)
从零开始学Python数据分析【8】-- pandas(数据框部分03)
从零开始学Python数据分析【9】-- pandas(数据框部分04)
从零开始学Python数据分析【10】-- matplotlib(条形图)
从零开始学Python数据分析【11】-- matplotlib(饼图)
从零开始学Python数据分析【12】-- matplotlib(箱线图)
从零开始学Python数据分析【13】-- matplotlib(直方图)
从零开始学Python数据分析【14】-- matplotlib(折线图)
从零开始学Python数据分析【15】-- matplotlib(散点图)
从零开始学Python数据分析【16】-- matplotlib(雷达图)
从零开始学Python数据分析【17】-- matplotlib(面积图)
从零开始学Python数据分析【18】-- matplotlib(热力图)
从零开始学Python数据分析【19】-- matplotlib(树地图)
从零开始学Python数据分析【20】--线性回归(理论部分)
从零开始学Python数据分析【21】--线性回归(实战部分)
从零开始学Python数据分析【22】--线性回归诊断(第一部分)
从零开始学Python数据分析【23】--线性回归诊断(第二部分)
从零开始学Python数据分析【24】--岭回归及LASSO回归(理论部分)
从零开始学Python数据分析【25】--岭回归及LASSO回归(实战部分)
在《从零开始学Python【20】--线性回归(理论部分)》和《从零开始学Python【24】--岭回归及LASSO回归(理论部分)》我们已经详细介绍了线性回归及带惩罚项的岭回归、LASSO回归的理论知识,但这些线性回归一般用来解决类似房价、身高、GDP、学生成绩等连续数值的建模和预测。如果你的因变量并非是这些连续的数值型,而是类似于成功或失败、流失或不流失、涨或跌等二元问题,那就不能使用线性回归了。
所以,我们接着线性回归,再跟大家聊聊Logistic回归。它是一个非线性的回归模型,其最大的好处恰恰是可以解决二元类问题,目前在金融行业,基本都是使用Logistic回归来预判一个用户是否为好客户,因为它还弥补了其他黑盒模型(SVM、神经网络、随机森林等)不具解释性的缺点。接下来,我们先从理论的角度,好好剖析一下这个神奇而强大的回归模型。
对于Logistic回归来说,它的思想就是依赖已知的X变量,去构造Y变量(某个事件发生)的概率值,说白了就是一个条件概率:P=P(y=1|X)。我们都知道,概率的范围是0~1,而且还是连续值,那接下来是不是就可以往线性回归这个思路去延伸了呢。那问题来了,如何根据X的值,去构造一个属于0~1之间的概率值呢?聪明的统计学家们,构造了一个Logit函数,其函数形式为:
如果把这个函数以图形的方式展示的话,将会是:
从图形上来看,确实y值是落在0~1之间的。假设线性回归写成如下表达式:
再将g(x)套入到Logit函数,再来看看某个事件发生的概率表达式:
OK,请睁大眼睛,接下来就要开始变魔术了,通过详细的推导就能将上面的非线性函数变成一个线性回归模型啦:
上面得到的exp(g(x)),一般称为事件的发生比,即某个事件发生概率与不发生概率的比值。如果将上式的两边取一下对数,那么不就演变成了一个线性回归模型了嘛:
问题又来了,只要能够通过X数据集,找到对应的beta系数,就能够计算出某个感兴趣事件发生的概率P,那这个beta系数该如何求解呢?对于聪明的统计学家兼数学家来说,他们构造了极大似然函数,作为一个搬运工的我来说,就简单说说这个似然函数是怎么实现beta系数求解的。
对于每一个观测样本(不妨有n个样本),某个事件发生的概率(y变量不妨用1表示)和不发生(y变量用0表示)的概率可以表示成:
其中概率pi就是关于beta系数的Logit函数。那么,将上面两种情况合起来,就是一个简单的二元分布,可以表示为:
二元分布是一种常用的离散型分布,接下来我们就可以应用这个二元分布构造似然函数。在Logistic回归中,一般会假设样本之间是相互独立的,那么 它们的联合分布就可以表示为各边缘分布的乘积。可以通过下面这个式子来表达这个似然函数:
要想求得beta系数,可以根据上面这个似然函数计算它的极大值,具体求解的推导步骤如下:
为了求解上式的极大值,我们可以对每一个beta进行偏导,并将求导结果设置为0,最后就可以得到n+1个方程组,再根据这么多的方程组求出每一个beta系数值。下面不妨对beta1求偏导作为演示:
为了能够让大家理解上面式子的进一步求解,我们再来回顾一下大学里学习的微分知识点:
OK,有了上面的理论铺垫,你再看下面这个式子就一定很轻松了:
上面理论知识的推导过程是不是比较容易理解呢?小编特别希望各位看官能够推导一遍,这对数学知识的提升有一定的帮助,反过来,也会促进你理解模型的结果。
OK,关于Logistic回归模型的理论部分我们就分享到这里,下一期我们将针对该回归模型进行使用Python和R语言进行实战分析。如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的人学习和进步。
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
关注后在公众号内回复“课程”即可获取:
0.小编的Python入门视频课程!!!
1.崔老师爬虫实战案例免费学习视频。
2.丘老师数据科学入门指导免费学习视频。
3.陈老师数据分析报告制作免费学习视频。
4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
5.丘老师Python网络爬虫实战免费学习视频。