标签归档:回归

共轭梯度法计算回归

共轭梯度示意图(图片来源:维基百科)
轮回眼 共轭梯度示意图(图片来源:维基百科

引子

之所以写这篇文章,是因为前几天统计之都的微信群里有同学提了一个问题,想要对一个很大的数据集做回归。然后大家纷纷给出了自己的建议,而我觉得共轭梯度算回归的方法跟这个背景比较契合,所以就正好写成一篇小文,与大家分享一下。

说到算回归,或许大家都会觉得这个问题太过简单了,如果用 $X$ 表示自变量矩阵,$y$ 表示因变量向量,那么回归系数的最小二乘解就是 $\hat{\beta}=(X’X)^{-1}X’y$。(本文完)



哎等等,别真走啊,我们的主角共轭梯度还没出场呢。前面的这个算系数的公式确实非常简洁、优雅、纯天然、不做作,但要往里面深究的话,还是有很多问题值得挖掘的。

最简单暴力的方法,就是从左向右,依次计算矩阵乘法,矩阵求逆,又一个矩阵乘法,最后是矩阵和向量的乘法。如果你就是这么算的,那么可以先默默地去面壁两分钟了。

更合理的方法,要么是对 $X’X$ 进行 Cholesky 分解,要么是对 $X$ 进行 QR 分解,它们基本上是现在算回归的软件中最常见的方法。关于暴力方法和矩阵分解方法的介绍和对比,可以参见这个B站上的视频。(什么?你问我这么严肃的话题为什么要放B站上?因为大部分时间都是在吐槽啊)

好,刚才去面壁的同学现在应该已经回来了,我们继续。前面这些通过矩阵运算求回归系数的方法,我们可以统称为直接法。叫这个名字,是因为它们都可以在确定数目的步骤内得到最终的结果。而与之相对的,则叫做迭代法,意思是通过不断更新已经得到的结果,来逐渐逼近真实的取值。打个比方,你想要知道一瓶82年的拉菲值多少钱,直接法就是去做调研,原料值多少,品牌值多少,加工费多少,运输费多少……然后加总起来得到最终的定价;而迭代法就是去问酒庄老板,你先随便蒙一个数,然后老板告诉你高了还是低了,反复循环,总能猜个八九不离十。

说到这里,你自然要问了,既然算回归的软件大都是用直接法,为什么还要考虑迭代法?莫非直接法有什么不好的地方?这就说到问题的点子上了。

继续阅读共轭梯度法计算回归

标题党统计学

如果你是被这个标题骗进来的,那么说明标题党的存在的确是有原因的。在网络高度发达(以及“大数据”泛滥)的今天,数据动不动就是以 GB 和 TB 的级别存储,然而相比之下,人类接受信息的速度却慢得可怕(参见大刘《乡村教师》)。试想一下,你一分钟能阅读多少文字?一千?五千?总之是在 KB 的量级。所以可以说,人们对文字的“下载速度”基本上就是 1~10KB/min。如果拿这个速度去上网的话你还能忍?

既然如此,每天网上有成千上万的新闻、报告、文章和八卦,怎么看得过来呢?没办法,只能先对正文进行一次粗略的筛选——看标题。俗话说得好,这是一个看脸的世界。于是乎,文章的作者为了吸引读者,就要取个足够博眼球的标题,而所谓标题党便是充分利用这种心理,用各种颇具创意的标题来吸引读者的注意。

好了,既然看官已经看到了这里,我就可以承认本文其实也是标题党了。这篇小文并不是要讨论标题党的前世今生,而是研究一个与此有关的统计问题:怎样的标题会更加吸引读者的关注?

这个问题有点太大了,所以我们缩小一下范围。既然是统计问题,就拿自家的一个例子下手吧:做统计学研究的,都得读各种各样的统计论文,那么论文的标题是否会对这篇文章的阅读量产生影响呢?巧的是,美国统计协会期刊(JASA)的网站上正好提供了该期刊旗下文章的下载访问量,所以我们可以以此做一个小分析,来研究一下标题与文章阅读量之间的关系。

可能有读者要问,为什么要使用文章的访问量,而不是引用率呢?这是因为 JASA 在其网站上说明,访问量数值是指从 JASA 官网下载的统计量,不包括从其他途径(比如购买的论文数据库)的来源。在 JASA 网站上,下载文章之前读者能获取到的主要是文章的标题和作者信息,所以访问量的主要驱动因素就是读者在阅读标题和作者之后产生的好奇感,从而减少了数据中的噪音。相反,引用一篇文章,通常是对文章有了充分理解之后产生的行为,这时候标题的作用可能就非常微弱了。总而言之,JASA 文章的下载量可以较好地代表读者在获取了文章的基本信息后对它感兴趣的程度。

jasa

继续阅读标题党统计学

数据江湖,回归5式

作者:王汉生(北京大学光华管理学院)

今天要跟大家分享的主题叫做:数据江湖,回归5式!

如今啊,大数据时代,群雄割据,天下大乱。各位童鞋,闯荡江湖,凶险难测。没一些必备的看家的本领,就想从数据出发,直达价值的彼岸,恐怕很难。

为此呢,熊大教大家几招防身绝技,叫做:回归5!简单的说,就是5种最常见的回归模型。这5个招式,看似简单,却是熊大行走江湖的看家本领。回归5式,就如同少林长拳,看似平淡无奇,但是如果辅以深厚的内力,就能威力无比。

所以呀,今天除了要教给大家这回归5式以外,熊大还要跟大家说道说道这内力的修为。没有深厚的内力修为,任何绝妙的功夫,都是花拳绣腿。

好了,闲话少说,先从回归5式开始。

继续阅读数据江湖,回归5式

极简 Spark 入门笔记——安装和第一个回归程序

现在的各种数据处理技术更新换代太快,新的名词和工具层出不穷,像是 Hadoop 和 Spark 这些,最近几年着实火了一把。事实上听说 Spark 也有一段时间了,但一直是只闻其名不见其实,今天就来简单记录一下初学 Spark 的若干点滴。

Spark 是什么

按照 Spark 官方的说法,Spark 是一个快速的集群运算平台,以及一系列处理大型数据集的工具包。用通俗的话说,Spark 与 R 一样是一套用于数据处理的软件和平台,但它最显著的特点就是处理大型数据(我就是不说大数据 ( ̄^ ̄))的能力。

极简安装

Spark 本身面向的是大规模的分布式计算,但对学习和测试来说,利用单机的多核 CPU 就已经足够了,所以作为入门,我并没有打算去涉及多台计算机相连的情形。在这个基础上,第一件出乎我意料的事情就是,Spark 的安装和配置其实可以是异常简单的。

在网上出现的各种资料中,Spark 经常与 Hadoop 和 Scala 这两个名词一起出现。前者也是一个大型分布式计算的框架,诞生得比 Spark 更早;后者是 Spark 主要使用的一种编程语言。这就给不明真相的群众造成了一种印象,好像要使用 Spark 的话就得先安装配置好 Hadoop 和 Scala,而要安装它们又得有更多的软件依赖。但实际上,要在单机上使用 Spark,真正需要的只有下面几样:

  1. 一台金光闪闪的电脑
  2. 在上面这台电脑里面装一个金光闪闪的 Linux 操作系统
  3. 在上面这个系统里面装一个金光闪闪的 Java 开发环境(JDK)

这三样可以说是大部分计算环境的标配,如果系统还没有安装 JDK,那么一般都可以用系统的包管理工具,比如 Fedora 下是

sudo yum install java-1.8.0-openjdk

Ubuntu 下是

sudo apt-get install openjdk-7-jdk

有了上面的开发环境,安装 Spark 就非常容易了,基本上只要下载预编译包,解压缩,然后添加系统路径即可。首先,到 https://spark.apache.org/downloads.html 选择最新的 Spark 版本和 Hadoop 版本(实际上我们暂时用不上 Hadoop,所以任何版本都行),然后下载压缩包。 继续阅读极简 Spark 入门笔记——安装和第一个回归程序

因果推断简介之七:Lord’s Paradox

在充满随机性的统计世界中,悖论无处不在。这一节介绍一个很有名,但是在中文统计教科书中几乎从未介绍过的悖论。这个悖论是 Educational Testing Service (ETS) 的统计学家 Frederic Lord 于 1967 年提出来的;最终由同在 ETS 工作的另外两位统计学家 Paul Holland 和 Donald Rubin 于 1982 年圆满地找出了这个悖论的根源。这部分先介绍这个悖论,再介绍 Holland 和 Rubin 的解释,最后是一些结论。

一 Lord’s Paradox
考虑下面一个简单例子,具体的数字是伪造的。某个学校想研究食堂对于学生体重是否有差异性的影响,尤其关心食堂对于男女学生体重影响是否相同。于是统计学家们收集了如下的数据:学生的性别 $G$;学生在 1963 年 6 月入学时候的体重 $X$;学生在 1964 年 6 月放暑假时候的体重 $Y$。

第一个统计学家,采取了一种很简单的方法。如图所示,横轴表示 1963 年 6 月入学前的体重 $X$,纵轴表示 1964 年 6 月前放假的体重 $Y$。个体上来看,男女入学前和入学后一年体重都会有些变化,男女学生体重的散点图分别用绿色和红色标出。从男女学生生平均体重来看,男生入学前后一年平均体重均是 $150$ 磅(图中右上角的黑点),女生入学前后一年平均体重均为 $130$ 磅(图中左下角的黑点)。图中的虚线是对角线 $Y=X$,两个黑点均位于对角线上。因此,第一个统计学家的结论是食堂对于男女学生体重都没有影响,因此对男女学生体重的作用相同。
继续阅读因果推断简介之七:Lord’s Paradox