R语言与机器学习logistic回归

上传人:平*** 文档编号:12792580 上传时间:2017-10-20 格式:DOCX 页数:21 大小:590.09KB
返回 下载 相关 举报
R语言与机器学习logistic回归_第1页
第1页 / 共21页
R语言与机器学习logistic回归_第2页
第2页 / 共21页
R语言与机器学习logistic回归_第3页
第3页 / 共21页
R语言与机器学习logistic回归_第4页
第4页 / 共21页
R语言与机器学习logistic回归_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《R语言与机器学习logistic回归》由会员分享,可在线阅读,更多相关《R语言与机器学习logistic回归(21页珍藏版)》请在金锄头文库上搜索。

1、写在前面的废话2014,又到了新的一年,首先祝大家新年快乐,也感谢那些关注我的博客的人。现在想想数据挖掘课程都是去年的事了,一直预告着,盘算着年内完工的分类算法也拖了一年了。本来打算去年就完成分类算法,如果有人看的话也顺带提提关联分析,聚类神马的,可是, 。借着新年新气象的借口来补完这一系列的文章,可是,这明明就是在发。尽管这个是预告里的最后一篇,但是我也没打算把这个分类算法就这么完结。尽管每一篇都很浅显,每个算法都是浅尝辄止的,在 deep learning 那么火的今天,掌握这些东西算起来屌丝得不能再屌丝了。考虑到一致性与完备性,最后补上两篇一样 naive 的:组合方法提高分类效率、几种

2、分类方法的绩效讨论。希望读到的人喜欢。算法六:logistic 回归由于我们在前面已经讨论过了神经网络的分类问题(参见R 语言与机器学习学习笔记(分类算法)(5),如今再从最优化的角度来讨论 logistic 回归就显得有些不合适了。Logistic 回归问题的最优化问题可以表述为:寻找一个非线性函数 sigmoid 的最佳拟合参数,求解过程可使用最优化算法完成。它可以看做是用 sigmoid 函数作为二阈值分类器的感知器问题。今天我们将从统计的角度来重新考虑 logistic 回归问题。一、logistic 回归及其 MLE当我们考虑解释变量为分类变量如考虑一个企业是否会被并购,一个企业是否

3、会上市,你的能否考上研究生这些问题时,考虑线性概率模型 P(yi =1)= 0 + 1xi 显然是不合适的,它至少有两个致命的缺陷:1、概率估计值可能超过 1,使得模型失去了意义;(要解决这个问题并不麻烦,我们将预测超过 1 的部分记为 1,低于 0 的部分记为 0,就可以解决。这个解决办法就是计量里有一定历史的 tobit 模型)2、边际效应假定为不变,通常来说不合经济学常识。考虑一个边际效应递减的模型(假定真实值为蓝线),可以看到线性模型表现很差。 但是 sigmoid 函数去拟合蓝线确实十分合适的。于是我们可以考虑 logistic 回归模型:假定有 N 个观测样本 Y1,Y2,YN,设

4、 P(Yi=1|Xi)=(Xi)为给定条件 Xi 下得到结果 Yi=1 的条件概率;而在同样条件下得到结果 Yi=0 的条件概率为 P(Yi=0|Xi)=1-(Xi),于是得到一个观测值的概率 P(Yi)=(Xi)Yi1-(Xi)1-Yi 假设各观测独立,对 logistic 回归模型来说,其对数似然函数为:于是便可求解出 logistic 模型的 MLE。二、logit 还是 probit?虽说 sigmoid 函数对边际递减的模型拟合良好,但是我们也要知道 S 型函数并非仅 sigmoid 函数一个,绝大多数的累积分布函数都是 S 型的。于是考虑 F-1(P)(F 为标准正态分布的累积分布

5、函数)也不失为一个很好的选择。像这样的,对概率 P 做一点变换,让变换后的取值范围变得合理,且变换后我们能够有办法进行参数估计的,就涉及到广义线性模型理论中的连接函数。在广义线性模型中我们把 log(P/(1-P)称为 logit,F-1(P)(F 为标准正态分布的累积分布函数)称为 probit。那么这里就涉及到一个选择的问题:连接函数选 logit 还是 probit?logistic 回归认为二分类变量服从伯努利分布,应当选择 logit,而且从解释的角度说,p/(1-p)就是我们常说的 odds ratio,也就是软件报告中出现的 OR 值。但是 probit 也有它合理的一面,首先,

6、中心极限定理告诉我们,伯努利分布在样本够多的时候就是近似正态分布的;其次,从不确定性的角度考虑,probit认为我们的线性概率模型服从正态分布,这也是更为合理的。我们来看一下经过变换后,自变量和 P 的关系是什么样子的:如果你确实想知道到底你的数据用哪一个方法好,也不是没有办法,你可以看一下你的残差到底是符合logit 函数呢还是符合 probit 函数,当然,凭肉眼肯定是看不出来的,因为这两个函数本来就很接近,你可以通过函数的假定,用拟合优度检验一下。但通常,估计不会有人非要这么较真,因为没有必要。但是有一点是要注意的,logit 模型较 probit 模型而言具有厚尾的特征,这也是为什么经

7、济学论文爱用 logit 的原因。我们以鸢尾花数据中的 virginica,versicolor 两类数据分类为例,看看两种办法分类有无差别。 probit.predictionsversicolor virginicaversicolor 47 3virginica 3 47logit.predictionsversicolor virginicaversicolor 47 3virginica 3 47从上图与比较表格均可以看出,两者差别不大。三、多项式 logit 与 order logit对于二项分类模型的一个自然而然的推广便是多项分类模型。我们借鉴神经网络里提到的异或模型,有:按照上

8、面这种方法,给定一个输入向量 x,获得最大 h(x)的类就是 x 所分到的类。选择最大的 h(x)十分好理解:在类别选择问题中,不论要选的类别是什么,每一个类别对做选择的经济个体来说都有或多或少的效用(没有效用的类别当然不会被考虑) ,一个类别的脱颖而出必然是因为该类别能产生出最高的效用。我们将多项 logit 模型的数学表述叙述如下:假定对于第 i 个观测,因变量 Yi 有 M 个取值:1,2,M,自变量为 Xi,则多项 logit 模型为:与 logistic 回归的似然估计类似,我们可以很容易写出多项 logit 的对数似然函数:多项 Logit 模型虽然好用,但从上面的叙述可以看出,多

9、项 Logit 模型最大的限制在于各个类别必须是对等的,因此在可供选择的类别中,不可有主要类别和次要类别混杂在一起的情形。例如在研究旅游交通工具的选择时,可将交通工具的类别粗分为航空、火车、公用汽车、自用汽车四大类,但若将航空类别再依三家航空公司细分出三类而得到总共六个类别,则多项 Logit 模型就不适用,因为航空、火车、公用汽车、自用汽车均属同一等级的主要类别,而航空公司的区别则很明显的是较次要的类别,不应该混杂在一起。在这个例子中,主要类别和次要类别很容易分辨,但在其他的研究中可能就不是那么容易,若不慎将不同层级的类别混在一起,则由多项 Logit 模型所得到的实证结果就会有误差。对于分

10、类模型,我们还会遇到被解释变量中有分类变量的情形。对于连续变量解释离散变量,且被解释的离散变量是有顺序的(这个是和多项 logit 最大的区别)的情形,我们就需要考虑到 order logit 模型。其数学模型叙述如下:其中,F(.)表示累积分布函数,当 F 表示正态分布的分布函数时,对应的是order probit;F 表示logistic 分布时,变对应 order logit。与 logistic 分布类似,我们可以很容易写出其对数似然函数:四、dummy variable在 logistic 回归中,经常会遇到解释变量为分类变量的情形,比如收入:高、中、低;地域:北京、上海、广州等。这

11、里对分类变量而言就涉及一个问题:要不要将分类变量设置dummy variable?这个问题的答案在线性模型中很显然,必须要这么做!如果我们不设置哑变量,而是单纯地赋值:北京=1,上海=2,广州=3,即我们将自变量视作连续性的数值变量,但这仅仅是一个代码而己,并不意味着地域间存在大小次序的关系,即并非代表被解释变量(响应变量)会按此顺序线性增加或减少。即使是有序多分类变量,如家庭收入分为高、中、低三档,各类别间的差距也是无法准确衡量的,按编码数值来分析实际上就是强行规定为等距,这显然可能引起更大的误差。但是在 logistic 回归中,由于 logit(p)变化的特殊性,在解释定序变量时,为了减

12、少自由度(即解释变量个数),我们常常将定序变量(如家庭收入分为高、中、低)视为连续的数值变量,而且经济解释可以是 XX 每提高一个档次,相应的概率会提高 expression(delta(XX)(expression 的表达式还是很复杂的,不打了)。当然减少变量个数是以牺牲预测精度为代价的。毕竟数据处理是一门艺术而非一门技术,如何取舍还得具体问题具体分析。当然,非定序的分类变量是万万不可将其视为数值变量的。五、广义线性模型的 R 实现R 语言提供了广义线性模型的拟合函数 glm(),其调用格式如下:glm(formula, family = gaussian, data,weights, su

13、bset,na.action, start = NULL, etastart, mustart, offset,control= list(.), model = TRUE, method = glm.fit,x =FALSE, y = TRUE, contrasts = NULL, .)参数说明:Formula:回归形式,与 lm()函数的 formula 参数用法一致Family:设置广义线性模型连接函数的典则分布族,glm()提供正态、指数、gamma、逆高斯、Poisson、二项分布。我们的 logistic 回归使用的是二项分布族 binomial。Binomial 族默认连接函数为

14、 logit,可设置为 probit。Data:数据集鸢尾花例子使用的 R 代码:logit.fit 0,virginica, versicolor)table(iris51:150,5,logit.predictions)probit.fit 0,virginica, versicolor)table(iris51:150,5,probit.predictions)程序包 mlogit 提供了多项 logit 的模型拟合函数:mlogit(formula, data, subset, weights,na.action, start = NULL,alt.subset = NULL, ref

15、level = NULL,nests = NULL, un.nest.el = FALSE, unscaled = FALSE,heterosc = FALSE, rpar = NULL, probit = FALSE,R = 40, correlation = FALSE, halton = NULL,random.nb = NULL, panel = FALSE, estimate = TRUE,seed = 10, .)mlogit.data(data, choice, shape = c(wide,long), varying = NULL,sep=.,alt.var = NULL,

16、chid.var = NULL, alt.levels = NULL,id.var = NULL, opposite = NULL, drop.index = FALSE,ranked = FALSE, .)参数说明:formula:mlogit 提供了条件 logit,多项 logit,混合 logit 多种模型,对于多项 logit 的估计模型应写为:因变量0|自变量,如:mode 0 | incomedata:使用 mlogit.data 函数使得数据结构符合 mlogit 函数要求。Choice:确定分类变量是什么Shape:如果每一行是一个观测,我们选择 wide,如果每一行是表示一个选择,那么就应该选择 long。alt.var:对于 shape 为 long 的数据,需要标明所有的选择名称选择 wide 的数据示例: 选择 long 的数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号