快乐十分走势图_快乐十分开奖结果_天津快乐十分基本走势图

后来Hastie

更新时间:2019-10-09 12:54点击:

  对应的自变量X的系数应取值为0,代表相应的自变量跟Y关系不大。Lasso就可以帮助我们得到。

  而右上角这幅图则是经常来来和Lasso进行对比的ridge regression,其表达式如下:

  最后我们筛选出来的变量包括 “高频含量”以及下图中画有蓝色五角星的方格的像素值的均值。可以看出这些点主要居于物体边缘地带,因此,物体边缘部分的信息对于预测雾霾可能具有更多价值。

  下面我们来看一个具体的例子《看图识雾霾》。我们图片数据是从同一个位置拍摄的206天的图片数据,同时还有这206天对应的pm2.5测量值。

  1、虽然最小二乘估计是无偏估计,但是在变量过多的情况下,往往带有较大的方差。我们再回味一下我们熟知的MSE(Mean Square Error)分解:

  刚才我们已经提到生物技术的发展带来了高维问题分析场景。正如Tibshrani所总结的,另一个关于Lasso问题是如何高效运算输出结果。在最初的论文实现中,Lasso计算效率比较低,是算法应用的很大瓶颈。这个问题后来被Efron等人提出的Least angle regression(LARS,最小角回归)算法解决,大大提高了计算效率,并且Efron等人给出了很棒的几何性质的解读。不过发明LARS算法却是一个非常偶然的事儿。那个时代机器学习中的各种树的设计(如决策树,随机森林,Boosting等)是非常热的研究热点。有一次Friedman在实施Gradient Boosting的时候,发现将一个新生成的树乘以一个很小的步长,会使得模型准确性大大增加,他把这个技巧叫做“Shrinkage”。后来Hastie,Tibshirani 和 Friedman(就是Elements of Statistical Learning的三位大神作者)发现如果把这个方式应用到线性回归中,得到的Solution Path与Lasso的如出一辙。这事儿看起来其中必有蹊跷,但是他们没有立即得到严格的数学论证。这个故事的结局是Tibshirani 找到自己的恩师 Efron,Efron加入后一起解决了这个问题,并发明了最小角回归(Least Angle Regression, LARS)算法。这一算法大大减小了Lasso的计算复杂度,可以说使其如有神助。

  2、对于最后得到的回归方程,我们需要在估计出每一个放入模型的自变量的系数后,能够更好地解释它。正如前面提到的例子,当得到稀疏估计之后,我们就能够明确得知:到底哪些因素对耗子药销量有显著的影响,从而调整商业决策。举个例子,假如发现卫生情况较差的小区耗子药销量较好,那就可以增加对应地方的库存,做好物流管理。

  从英文的字面意思,Lasso含义是“(套捕马、牛等用的)套索”。统计学中的Lasso跟套马索没啥关系,它其实是个缩写,全称是The Least Absolute Shrinkage and Selection Operator。LASSO于1996年由Tibshrani发表于统计期刊Journal of the Royal Statistical Society (Series B)上。全文并不长,只有22页。作者可以说是艺高人胆大:这篇发表于著名统计学期刊的文章没有一个证明。有关Lasso理论性质的证明在之后被逐渐建立起来,感兴趣的读者可以阅读:“On Model Selection Consistency of Lasso”,文中给出了一个几乎充分且必要的条件,叫做“不可表示条件”。该条件限制了重要变量(也就是系数不为0的变量)与其他变量的相关关系。

  如果您对【R语千寻】的内容感兴趣,请在微信公号内回复“R”,即可查看往期精彩文章。

  两个式子是等价的,但在实际应用中更多地提到第二个式子。在第一个式子中,第一行是我们熟知的OLS的目标函数,但在Lasso的估计过程中加上了第二行的限制条件,这个限制条件就对应与第二个式子中的第二项。t越小,或者越大,对估计参数的压缩作用就越强。当我们对这个目标函数求最小时,一些不那么重要的自变量的系数将被压缩为0,从而达到筛选变量的作用。下面小编来详细介绍其筛选变量的原理。

  在实际中,往往不会使用上面的s,而是选择用作为压缩参数。越大的一般对应越严格的限制。如果选不好,模型的表现就非常“惨淡”了。有许多学者研究如何选取λ,常见使用的准则有CV(Cross Validation), AIC, BIC等。当存在真模型的假设下,常常选取BIC准则。

  模型已经跑出来了,这时读者可能会问,那筛选出来的变量是哪些呀?但笔者现在也没法告诉你,不是因为模型出错了,而是我们还得确定lambda,也就是在上图中画一条垂直于横轴的直线,这样我们才能知道哪些变量被压缩为0,以及未被压缩为0的变量的系数的估计值究竟是多少。

  通过下面这幅图我们来了解一下Lasso筛选变量的动态过程,以及更直观地了解“压缩估计参数”的意思:

  图为Robert Tibshirani教授,现任斯坦福大学统计与健康研究与政策系教授。

  在数据时代的今天,我们并不缺乏数据。如果问问企业的分析师,可能动辄整出来几十上百个变量是家常便饭。在许许多多的场景中,我们并不缺乏数据,也拥有大规模存储数据的能力。

  我们尝试从图片像素值中提取可能的重要变量共计774个自变量,包括整体图片指标“灰度差分的方差”、“清晰度”、“信息熵”、“饱和度”、“高频含量”,也包括分区域的指标,我们分别将综合图片1280*960的灰度像素矩阵等分成768块40*40的正方形区域,然后分别计算其均值和方差作为待筛选的自变量。自变量详细介绍如下:

  下面我们来看一下变量压缩的过程,上文中我们已经从第一个式子t的角度进行了观察,下面我们从实际应用中更常用的第二个式子的lambda进行观察,R代码如下:

  上世纪20年代,生物技术的兴起带来了高维数据。人体的DNA上有数以万计的基因数据。哪些基因是致病基因?哪些是无关基因?这是生物学家感兴趣的问题。另一方面,由于成本等问题的限制,无法收集到很多样本并进行基因检测。高维数据分析应运而生。时势造英雄,变量选择方法随之变得更加重要。今天,我们来讲一下变量选择中一个非常经典的模型和实现——Lasso。

  使用R进行Lasso模型的估计可以使用glmnet包里的glmnet函数,具体代码如下:

  为了简单起见,我们可以以二维的情况为例,如左下图所示,图中椭圆表示上式第一项在不同的取值时的图像(椭圆上的点取值相同),越靠近椭圆中心越优。而图中以原点为中心的正方形则表示满足一式第二行的限制条件的点集,所以我们也只能选取落入该正方形的点。最终Lasso的估计值为椭圆和下面矩形的交点,除非椭圆与矩形正好相切在矩形的某条边上,否则交点将落在矩形的顶点上,这时某参数的估计值将被压缩到0,即该变量已被剔除出模型。

  其与Lasso的不同在于第二行的限制条件,Lasso限制各系数绝对值之和,而ridge regression则是限制各系数的平方和,所以在二维的情况下,其可行域为以原点为圆心的圆,其最终的估计值也为不断扩大的椭圆与可行域的第一个交点。我们可以发现,由于可行域从矩形变成的圆,其交点将为椭圆与圆的切点,且难以刚好落在坐标轴上。这也使得ridge regression很多时候并不能将多余变量的系数压缩为0。

  正如我们前文中提到的,lambda和t的大小产生的压缩作用是相反的,t越小压缩作用越强,而对于lambda,则是其值越大,压缩作用越强。图中我们也可以看到,初始模型中的102个变量随着lambda的不断增加,其绝对值也相应的被压缩,部分相对不重要的变量则被压缩至0。

  下面我们来说说Lasso的想法。Lasso相比于普通最小二乘估计,可以在变量众多的时候快速有效地提取出重要变量,简化模型。我们举一个线性回归的例子:隔壁老王卖耗子药生意越来越大,在经过一段时间销售后,他想知道耗子药销售量跟哪些因素有关。他考虑了这些因素:这个片区大概有多少耗子?卫生状况如何?片区是大叔大妈多还是年轻小两口多?有多少猫?耗子药广告应该投放在哪里?需要包括哪些关键词?……夜不能寐,越想越多。这些因素有的是“关键因素”,有的仅仅是打个酱油,与销量关系不大。对应到回归问题中:

  现在一切听起来很完美,Lasso可以产生稀疏估计,让我们对这个世界的理解更进一步。但是,世界上没有免费的午餐:Lasso产生的是有偏估计。那我们实际得到了什么?Tibshirani 在他的原作中提出了两方面好处:

  也就是MSE由偏差和方差两部分组成;这两部分很难“鱼和熊掌兼得”。 Lasso虽然是有偏估计,但是在引入一定的偏差的同时,可能可以大量降低估计的方差,从而降低整体的MSE。Lasso的优点不言而喻:如果我们拥有的样本信息是有限的,那么我们想要用有限的信息去估计过多的系数,此时信息很可能会出现不够用的情况,所以筛选变量提高估计效果十分必要。

  在讲这个模型之前,我们先讲讲一个基本的假设,也就是这个模型的世界观是啥。这个假设就是:稀疏性假设。简单来说,我们认为,尽管世界如此复杂,但有用的信息却非常有限。套用到常见的统计学模型中,假如,我们考虑一个线性回归模型,有一个因变量Y,但有成百上千的自变量X。我们假设,只有有限个X的回归系数不为0,但其余的都是0。也就是说他们跟Y并没有啥子特别显著的关系。找到其中重要的X,对我们理解数据有重要的意义。对应前文的例子,生物学家想要研究基因对于某类疾病的影响,面对上万个可能的基因,生物学家们倾向于认为只有其中的一小部分对于该类疾病有着显著的影响;而为了预测消费者对于电影和书籍的喜好,线上电影和书店也倾向于认为一个消费者的喜好可以从少量的评分数据中得到。而“稀疏性假设”就是对于人们这种倾向的具体体现,举个例子,在分析基于和疾病的关系时,对于我们放入的10000个可能的基因,我们认为这10000个基因在回归模型中的回归系数只有少量的不为0。

  s于之前提到的t除以OLS估计值得绝对值之和。t越小表示限制越强,即s越小,图中垂直于横轴的虚线也更靠左,而图中其余曲线则代表在指定s的条件下,该变量系数的估计值。当我们确定s值后,各估计参数的值即为x=s的直线与图中其他曲线交点的横坐标。我们可以看到,当s越小,各估计参数相应的也被压缩得更小,而当s达到一定值以后,一部分不重要的变量将被压缩为0,代表该变量已被剔除出模型,图中从右至左不断下降的曲线如同被不断减小的s一步一步压缩,直到压缩为0。

  但是,这些就足够了吗?我们可能缺乏的是对数据的理解。举一个栗子,我们想要预测熊大明天是不是变得更帅,需要考虑:他过去一段时间是不是一直在变帅?最近他是不是在运动?最近他写了几篇万字长文?收获了多少粉丝?心情怎么样?有没有身体倍儿棒,吃嘛嘛香?……好的,我们能想出许许多多的变量。但是我们发现,好像只有为数不多的几个变量对因变量(熊大有没有变更帅)有显著的贡献,其他变量基本可以忽略。那么,哪些变量是重要的呢?这就是变量选择讨论的问题。

  相比于如今Lasso的“家喻户晓”,在其发明的头几年人气却不是很旺。后来Tibshrani归纳其原因大致三点:1、缺少能快速求解Lasso的算法;2、新鲜出炉的Lasso还未能被大家所理解;3、当时对于高维数据的研究还没有火起来。

  说了这么久Lasso的优点,那Lasso是如何实现这些优点的呢?从数学上,它有非常简单而优美的表达。我们先来看看Lasso的表达式:

  那我们如何选择lambda呢?我们可以使用R的glmnet中另一个函数cv.glmnet。这个函数使用的是“交叉验证”挑选lambda,那什么是“交叉验证”呢?不熟悉交叉验证的读者可以参看《R语千寻 基于Caret包的机器学习概要》的“数据分割”介绍。通过交叉验证,我们可以选择平均误差最小的那个lambda,也可以选择平均误差在一个标准差以内的最大的lambda,我们这里选取的“lambda.1se”采用的是第二条标准。

  除了Lasso对应的L1惩罚以及ridge regression对应的L2惩罚,还有许多著名的惩罚函数。比如,在牺牲了惩罚函数凸性的情况下,一些non-concave的惩罚函数(如SCAD、MCP惩罚等)能够获得渐近无偏的估计,与之而来的是较高的计算成本,感兴趣的读者可以进一步阅读相关文献。

推荐文章

官方微信公众号