逻辑回归算法的原理及实现(LR)
Logistic回归虽然名字叫”回归” ,但却是一种分类学习方法。使用场景大概有两个:第一用来预测,第二寻找因变量的影响因素。逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为因变量,将用户的特征属性,例如性别,年龄,注册时间等设置为自变量。根据特征属性预测购买的概率。逻辑回归与回归分析有很多相似之处,在开始介绍逻辑回归之前我们先来看下回归分析。
回归分析用来描述自变量x和因变量Y之间的关系,或者说自变量X对因变量Y的影响程度,并对因变量Y进行预测。其中因变量是我们希望获得的结果,自变量是影响结果的潜在因素,自变量可以有一个,也可以有多个。一个自变量的叫做一元回归分析,超过一个自变量的叫做多元回归分析。
下面是一组广告费用和曝光次数的数据,费用和曝光次数一一对应。其中曝光次数是我们希望知道的结果,费用是影响曝光次数的因素,我们将费用设置为自变量X,将曝光次数设置为因变量Y,通过一元线性回归方程和判定系数可以发现费用(X)对曝光次数(Y)的影响。
以下为一元回归线性方式,其中y是因变量,X是自变量,我们只需求出截距b0和斜率b1就可以获得费用和曝光次数之间的关系,并对曝光次数进行预测。这里我们使用最小二乘法来计算截距b0和斜率b1。最小二乘法通过最小化误差的平方和寻找数据的最佳函数匹配。
下表中是使用最小二乘法计算回归方程的一些必要的计算过程。在表中最左侧的两列分别为自变量X和因变量Y,我们首先计算出自变量和因变量的均值,然后计算每一个观测值与均值的差,以及用于计算回归方程斜率b1所需的数据。
根据表中的数据按公式计算出了回归方程的斜率b1,计算过程如下。斜率表示了自变量和因变量间的关系,斜率为正表示自变量和因变量正相关,斜率为负表示自变量和因变量负相关,斜率为0表示自变量和因变量不相关。
求得斜率b1后,按下面的公式可以求出Y轴的截距b0。
将斜率b1和截距b0代入到回归方程中,通过这个方程我们可以获得自变量和因变量的关系,费用每增加1元,曝光次数会增长7437次。以下为回归方程和图示。
在回归方程的图示中,还有一个R^2,这个值叫做判定系数,用来衡量回归方程是否很好的拟合了样本的数据。判定系数在0-1之间,值越大说明拟合的越好,换句话说就是自变量对因变量的解释度越高。判定系数的计算公式为SST=SSR+SSE,其中SST是总平方和,SSR是回归平方和,SSE是误差平方和。下表为计算判定系数所需三个指标的一些必要的计算过程。
根据前面求得的回归平方和(SSR)和总平方和(SST)求得判定系数为0.94344。
以上为回归方程的计算过程,在根据费用预测曝光数量的场景下,我们可以通过回归方程在已知费用的情况下计算出曝光数量。逻辑回归与回归方程相比在线性回归的基础上增加了一个逻辑函数。例如通过用户的属性和特征来判断用户最终是否会进行购买。其中购买的概率是因变量Y,用户的属性和特征是自变量X。Y值越大说明用户购买的概率越大。这里我们使用事件发生的可能性(odds)来表示购买与未购买的比值。
使用E作为购买事件,P(E)是购买的概率,P(E’)是未购买的概率,Odds(E)是事件E(购买)发生的可能性。
Odds是一个从0到无穷的数字,Odds的值越大,表明事件发生的可能性越大。下面我们要将Odds转化为0-1之间的概率函数。首先对Odds取自然对数,得到logit方程,logit是一个范围在负无穷到正无穷的值。
基于上面的logit方程,获得以下公式:
其中使用π替换了公式中的P(E),π=P(E)。根据指数函数和对数规则获得以下公式:
并最终获得逻辑回归方程:
下面根据逻辑回归方程来计算用户购买的概率,下表是用户注册天数和是否购买的数据,其中注册天数是自变量X,是否购买是自变量Y。我们将购买标记为1,将未购买标记为0。
接下来我们将在Excel中通过8个步骤计算出逻辑回归方程的斜率和截距。并通过方程预测新用户是否会购买。
- 第一步,使用Excel的排序功能对原始数据按因变量Y进行排序,将已购买和未购买的数据分开,使得数据特征更加明显。
- 第二步,按照Logit方程预设斜率b1和截距b0的值,这里我们将两个值都预设为0.1。后续再通过Excel求最优解。
- 第三步,按照logit方程,使用之前预设的斜率和截距值计算出L值。
- 第四步,将L值取自然对数,
- 第五步,计算P(X)的值,P(X)为事件发生的可能性(Odds)。
- 具体的计算步骤和过程见下图。
- 第六步,计算每个值的对数似然函数估计值(Log-Likelihood)。方法和过程见下图。
- 第七步,将对数似然函数值进行汇总。
- 第八步,使用Excel的规划求解功能,计算最大对数似然函数值。方法和过程见下图。设置汇总的对数似然函数值LL为最大化的目标,预设的斜率b1和截距b0是可变单元格,取消”使无约束变量为非负数”的选项。进行求解。
Excel将自动求出逻辑回归方程中斜率和截距的最优解,结果如下图所示。
求得逻辑回归方程的斜率和截距以后,我们可以将值代入方程,获得一个注册天数与购买概率的预测模型,通过这个模型我们可以对不同注册天数(X)用户的购买概率(Y)进行预测。以下为计算过程。
- 第一步,输入自变量注册天数(X)的值,这里我们输入50天。
- 第二步,将输入的X值,以及斜率和截距套入Logit方程,求出L值。
- 第三步,对L值取自然对数。
- 第四步,求时间发生可能性P(X)的概率值。
注册天数为50天的用户购买的概率约为17.60%。
我们将所有注册天数的值代入到购买概率预测模型中,获得了一条注册天数对购买概率影响的曲线。从曲线中可以发现,注册天数在较低和较高天数的用户购买概率较为平稳。中间天数用户的购买概率变化较大。
我们继续在上面的计算结果中增加新的自变量“年龄”。以下是原始数据的截图。现在有年龄和注册天数两个自变量和一个因变量。
依照前面的方法计算斜率和截距的最优解,并获得逻辑回归方程,将不同的年龄和注册天数代入到方程中,获得了用户年龄和注册天数对购买的预测模型。我们通过Excel的三维图表来绘制年龄和注册天数对购买概率的影响。
从图中可以看出,购买概率随着注册天数的增加而增长,并且在相同的注册天数下,年龄较小的用户购买概率相对较高。
转载于: http://bluewhale.cc/2016-05-18/logistic-regression.html#ixzz4RbUh8R3T
一 从线性回归到Logistic回归
线性回归和Logistic回归都是广义线性模型的特例。
假设有一个因变量y和一组自变量x1, x2, x3, ... , xn,其中y为连续变量,我们可以拟合一个线性方程:
y =β0 +β1*x1 +β2*x2 +β3*x3 +...+βn*xn
并通过最小二乘法估计各个β系数的值。
如果y为二分类变量,只能取值0或1,那么线性回归方程就会遇到困难: 方程右侧是一个连续的值,取值为负无穷到正无穷,而左侧只能取值[0,1],无法对应。为了继续使用线性回归的思想,统计学家想到了一个变换方法,就是将方程右边的取值变换为[0,1]。最后选中了Logistic函数:
y = 1 / (1+e-x)
这是一个S型函数,值域为(0,1),能将任何数值映射到(0,1),且具有无限阶可导等优良数学性质。
我们将线性回归方程改写为:
y = 1 / (1+e-z),
其中,z =β0 +β1*x1 +β2*x2 +β3*x3 +...+βn*xn
此时方程两边的取值都在0和1之间。
进一步数学变换,可以写为:
Ln(y/(1-y)) =β0 +β1*x1 +β2*x2 +β3*x3 +...+βn*xn
Ln(y/(1-y))称为Logit变换。我们再将y视为y取值为1的概率p(y=1),因此,1-y就是y取值为0的概率p(y=0),所以上式改写为:
p(y=1) = ez/(1+ez),
p(y=0) = 1/(1+ez),
其中,z =β0 +β1*x1 +β2*x2 +β3*x3 +...+βn*xn.
接下来就可以使用”最大似然法”估计出各个系数β。
二 odds与OR复习
odds: 称为几率、比值、比数,是指某事件发生的可能性(概率)与不发生的可能性(概率)之比。用p表示事件发生的概率,则:odds = p/(1-p)。
OR:比值比,为实验组的事件发生几率(odds1)/对照组的事件发生几率(odds2)。
三 Logistic回归结果的解读
我们用一个例子来说明,这个例子中包含200名学生数据,包括1个自变量和4个自变量:
因变量: hon,表示学生是否在荣誉班(honors class),1表示是,0表示否;
自变量:
female :性别,分类变量,1=女,0=男
read: 阅读成绩,为连续变量
write: 写作成绩,为连续变量
math:数学成绩,为连续变量
1、不包含任何变量的Logistic回归
首先拟合一个不包含任何变量的Logistic回归,
模型为 ln(p/(1-p) =β0
回归结果如下(结果经过编辑):
hon |
系数β |
标准误 |
P |
截距 |
-1.12546 |
0.164 |
0.000 |
这里的系数β就是模型中的β0 = -1.12546,
我们用p表示学生在荣誉班的概率,所以有ln(p/(1-p) =β0 = -1.12546,
解方程得:p = 0.245。
odds = p/1-p = 0.3245
这里的p是什么意思呢?p就是所有数据中hon=1的概率。
我们来统计一下整个hon的数据:
hon |
例数 |
百分比 |
0 |
151 |
75.5% |
1 |
49 |
24.5% |
hon取值为1的概率p为49/(151+49) = 24.5% = 0.245,我们可以手动计算出ln(p/(1-p) = -1.12546,等于系数β0。可以得出关系:
β0=ln(odds)。
2、包含一个二分类因变量的模型
拟合一个包含二分类因变量female的Logistic回归,
模型为 ln(p/(1-p) =β0 +β1* female.
回归结果如下(结果经过编辑):
hon |
系数β |
标准误 |
P |
female |
0.593 |
.3414294 |
0.083 |
截距 |
-1.47 |
.2689555 |
0.000 |
在解读这个结果之前,先看一下hon和female的交叉表:
hon |
female |
Total |
|
Male |
Female |
||
0 |
74 |
77 |
151 |
1 |
17 |
32 |
49 |
Total |
91 |
109 |
根据这个交叉表,对于男性(Male),其处在荣誉班级的概率为17/91,处在非荣誉班级的概率为74/91,所以其处在荣誉班级的几率odds1=(17/91)/(74/91) = 17/74 = 0.23;相应的,女性处于荣誉班级的几率odds2 = (32/109)/(77/109)=32/77 = 0.42。女性对男性的几率之比OR = odds2/odds1 = 0.42/0.23 = 1.809。我们可以说,女性比男性在荣誉班的几率高80.9%。
回到Logistic回归结果。截距的系数-1.47是男性odds的对数(因为男性用female=0表示,是对照组),ln(0.23) = -1.47。变量female的系数为0.593,是女性对男性的OR值的对数,ln(1.809) = 0.593。所以我们可以得出关系: OR = exp(β),或者β= ln(OR)(exp(x)函数为指数函数,代表e的x次方)。
3、包含一个连续变量的模型
拟合一个包含连续变量math的Logistic回归,
模型为 ln(p/(1-p) =β0 +β1* math.
回归结果如下(结果经过编辑):
hon |
系数β |
标准误 |
P |
math |
.1563404 |
.0256095 |
0.000 |
截距 |
-9.793942 |
1.481745 |
0.000 |
这里截距系数的含义是在荣誉班中math成绩为0的odds的对数。我们计算出odds = exp(-9.793942) = .00005579,是非常小的。因为在我们的数据中,没有math成绩为0的学生,所以这是一个外推出来的假想值。
怎么解释math的系数呢?根据拟合的模型,有:
ln(p/(1-p)) = - 9.793942 + .1563404*math
我们先假设math=54,有:
ln(p/(1-p))(math=54) = - 9.793942 + .1563404 *54
然后我们把math提高提高一个单位,令math=55,有:
ln(p/(1-p))(math=55) = - 9.793942 + .1563404 *55
两者之差:
ln(p/(1-p))(math=55) - ln(p/1-p))(math = 54) = 0.1563404.
正好是变量math的系数。
由此我们可以说,math每提高1个单位,odds(即p/(1-p),也即处于荣誉班的几率)的对数增加0.1563404。
那么odds增加多少呢?根据对数公式:
ln(p/(1-p))(math=55) - ln(p/1-p))(math = 54) = ln((p/(1-p)(math=55)/ (p/(1-p)(math=54))) = ln(odds(math=55)/ odds(math=54)) = 0.1563404.
所以:
odds(math=55)/ odds(math=54) = exp(0.1563404) = 1.169.
因此我们可以说,math每升高一个单位,odds增加16.9%。且与math的所处的绝对值无关。
聪明的读者肯定发现,odds(math=55)/ odds(math=54)不就是OR嘛!
4、包含多个变量的模型(无交互效应)
拟合一个包含female、math、read的Logistic回归,
模型为 ln(p/(1-p) = β0 +β1* math+β2* female+β3* read.
回归结果如下(结果经过编辑):
hon |
系数β |
标准误 |
P |
math |
.1229589 |
略 |
0.000 |
female |
0.979948 |
略 |
0.020 |
read |
.0590632 |
略 |
0.026 |
截距 |
-11.77025 |
略 |
0.000 |
该结果说明:
(1) 性别:在math和read成绩都相同的条件下,女性(female=1)进入荣誉班的几率(odds)是男性(female=0)的exp(0.979948) = 2.66倍,或者说,女性的几率比男性高166%。
(2) math成绩:在female和read都相同的条件下,math成绩每提高1,进入荣誉班的几率提高13%(因为exp(0.1229589) = 1.13)。
(3)read的解读类似math。
5、包含交互相应的模型
拟合一个包含female、math和两者交互相应的Logistic回归,
模型为 ln(p/(1-p) =β0 +β1* female+β2* math+β3* female *math.
所谓交互效应,是指一个变量对结果的影响因另一个变量取值的不同而不同。
回归结果如下(结果经过编辑):
hon |
系数β |
标准误 |
P |
female |
-2.899863 |
略 |
0.349 |
math |
.1293781 |
略 |
0.000 |
female*math |
.0669951 |
略 |
0.210 |
截距 |
-8.745841 |
略 |
0.000 |
注意:female*math项的P为0.21,可以认为没有交互相应。但这里我们为了讲解交互效应,暂时忽略P值,姑且认为他们是存在交互效应的。
由于交互效应的存在,我们就不能说在保持math和female*math不变的情况下,female的影响如何如何,因为math和female*math是不可能保持不变的!
对于这种简单的情况,我们可以分别拟合两个方程,
对于男性(female=0):
log(p/(1-p))= β0 + β2*math.
对于女性(female=1):
log(p/(1-p))= (β0 + β1) + (β2 + β3 )*math.
然后分别解释。
分类变量(哑变量)的处理及解读
一、哑变量的设置方法
年龄 | 变量1 | 变量2 |
青年 | 1 | 0 |
中年 | 0 | 1 |
老年 | 0 | 0 |
变量1 = 1代表青年,0代表非青年
这是分类变量的编码表格,可以看出,年龄被替换为两个新的变量:年龄(1)和年龄(2)。年龄(1)代表青年人,年龄(2)代表中年人,他们的取值都为0表示老年人,作为青年和中年的参考对象。
来源于:http://blog.sina.com.cn/wjyhumor
逻辑回归算法的原理及实现(LR)的更多相关文章
- SparkMLlib学习分类算法之逻辑回归算法
SparkMLlib学习分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/51693 ...
- SparkMLlib分类算法之逻辑回归算法
SparkMLlib分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/5169383 ...
- sklearn调用逻辑回归算法
1.逻辑回归算法即可以看做是回归算法,也可以看作是分类算法,通常用来解决分类问题,主要是二分类问题,对于多分类问题并不适合,也可以通过一定的技巧变形来间接解决. 2.决策边界是指不同分类结果之间的边界 ...
- 100天搞定机器学习|Day8 逻辑回归的数学原理
机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...
- Spark机器学习(2):逻辑回归算法
逻辑回归本质上也是一种线性回归,和普通线性回归不同的是,普通线性回归特征到结果输出的是连续值,而逻辑回归增加了一个函数g(z),能够把连续值映射到0或者1. MLLib的逻辑回归类有两个:Logist ...
- 《BI那点儿事》Microsoft 逻辑回归算法——预测股票的涨跌
数据准备:一组股票历史成交数据(股票代码:601106 中国一重),起止日期:2011-01-04至今,其中变量有“开盘”.“最高”.“最低”.“收盘”.“总手”.“金额”.“涨跌”等 UPDATE ...
- Sklearn实现逻辑回归
方法与参数 LogisticRegression类的各项参数的含义 class sklearn.linear_model.LogisticRegression(penalty='l2', dual=F ...
- 逻辑回归LR
逻辑回归算法相信很多人都很熟悉,也算是我比较熟悉的算法之一了,毕业论文当时的项目就是用的这个算法.这个算法可能不想随机森林.SVM.神经网络.GBDT等分类算法那么复杂那么高深的样子,可是绝对不能小看 ...
- 通俗地说逻辑回归【Logistic regression】算法(一)
在说逻辑回归前,还是得提一提他的兄弟,线性回归.在某些地方,逻辑回归算法和线性回归算法是类似的.但它和线性回归最大的不同在于,逻辑回归是作用是分类的. 还记得之前说的吗,线性回归其实就是求出一条拟合空 ...
随机推荐
- 在ubuntu上建立多svn版本库
http://lucane.iteye.com/blog/857486 mkdir ~/dev/repository svnadmin create ~/dev/repository/a svnadm ...
- JavaWeb三大组件——过滤器的运行机制理解
过滤器Filter 文章前言:本文侧重实用和理解. 一.过滤器的概念. lFilter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有 ...
- IIS发布网站
IIS发布网站几个问题 1.部署步骤:http://jingyan.baidu.com/article/3065b3b6e5becdbecff8a4d5.html Win7下IIS报503Servic ...
- JS Note1
1.JavaScript 简史 JavaScript 诞生于1995 年.当时,它的主要目的是处理以前由服务器端语言(如Perl)负责的一些输入验证操作 如今,JavaScript 的用途早已不再局限 ...
- 百度地图坐标纠偏和转换工具和DLL
百度一直以来都是个即想装出一副拥抱互联网开放的样子,又为了短期商业利益封闭自己的公司,模仿谷歌地图,开放了自己的百度地图 API,为了防止别人盗用其数据和用户自由迁移,地图相比于火星坐标,又更加封闭, ...
- Oracle 正则表达式函数-REGEXP_INSTR 使用例子
原文在这 戳 REGEXP_INSTR 6个参数 第一个是输入的字符串 第二个是正则表达式 第三个是标识从第几个字符开始正则表达式匹配.(默认为1) 第四个是标识第几个匹配组.(默认为1) 第五个是指 ...
- io与nio的区别
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大.使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数 ...
- Windows Phone 二、WP控件
- iptables四个表与五个链间的处理关系
转载自:http://www.linuxidc.com/Linux/2012-08/67505.htm netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加.编辑 ...
- 浅谈在静态页面上使用动态参数,会造成spider多次和重复抓取的解决方案
原因: 早期由于搜索引擎蜘蛛的不完善,蜘蛛在爬行动态的url的时候很容易由于网站程序的不合理等原因造成蜘蛛迷路死循环. 所以蜘蛛为了避免之前现象就不读取动态的url,特别是带?的url 解决方案: 1 ...