Categories
读书有感

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(十一)

上海的冬天越来越冷了,这门课也越来越临近这学期结束了。这节课公式推导不多,有也是那种烂熟于胸无数次的,所以可以稍稍歪楼,不时掺杂一点八卦什么的。

BootStrap

1. 定义

BootStrap的基本思想就仨字:重抽样。先开始八卦~

跟高斯窥探天机猜出来正态分布的密度函数表达式相似,Efron搞出来BootStrap的时候,大概也在偷偷的抿嘴而笑吧。“上帝到底掷不掷骰子呢?”,每次我们都在揣测天意,也是现在越来越有点理解为什么牛顿老先生晚年致力于神学了。每当我们猜中一次,就会有一个新的突破到来。BootStrap思想简单到如斯,以至于我的一位朋友在当高中老师的时候(可惜是美国不是中国),就尝试着跟 teenagers 介绍BootStrap思想了(貌似用的还是Econometrica上的一篇文章,我瞬间声讨“你们这群高中老师真凶残-_-||)——结果显然是我多虑了,那群熊孩子居然表示理解毫无压力!可见BootStrap这个东西是有多么的平易近人。什么测度论什么高等代数都不需要,会摸球就可以了!

顺便抄一下杨灿童鞋《那些年,我们一起追的EB》上的一段八卦:

五十多年前,Efron为 Stanford 的一本幽默杂志 Chapparal 做主编。那年,他们恶搞 (parody) 了著名杂志Playboy。估计是恶搞得太给力了,还受到当时三藩的大主教的批评。幽默的力量使 Efron 在“错误”的道路上越走越远,差点就不回Stanford 读 PhD 了。借用前段时间冰岛外长的语录:“Efron 从事娱乐时尚界的工作,是科学界的一大损失!”在关键时刻,Efron在周围朋友的关心和支持下,终于回到 Stanford,开始把他的犀利与机智用在 statistics 上。告别了娱乐时尚界的 EB,从此研究成果犹如滔滔江水,连绵不绝,citation又如黄河泛滥,一发不可收拾...

所以说嘛,天才之人做什么都是能闪光的,Efron从事科学界的工作,怕也是美国几亿人民周末娱乐的损失吧。好了,满足了你们这群越来越挑剔的读者八卦的胃口了,开始正儿八经的说BootStrap。

我们有观测数据集,然后对这N个样本,进行有放回的重抽样。每轮我们还是抽N个,然后一共抽B轮(比如几百轮,话说前几天weibo上有人问“如果给你一万个人,你要做什么”,放在这里我就要他们不停的抽小球抽小球抽小球,哈哈!)。这样就得到了新的观测样本

2. 应用

BootStrap几乎可以用来干各种合法的不合法的事儿,只要是跟数据估计有关的...这就如同你问一个画家,“什么最好画?”“上帝和魔鬼,因为大家都没有见过。”大家都没有那么明确的知道BootStrap的界限在哪里,所以BootStrap就被应用在各种跟估计有关的地方了。

在统计学习中,我们最常用的可能就是估计精度:对于每一个,我们都可以得到一个预测函数,然后就对于给定的,有B个预测值,这样就可以做直方图什么的,还可以排排序算出来的置信区间。

最大似然估计(MLE)

我们有一族密度函数,其中为参数集,可不止一个参数。按照概率的定义,我们有,而且

数据方面,我们有一组数据,为\emph{i.i.d}(独立同分布)。

这样就可以写出来似然函数: ,从而可以写出来对数似然函数:。接下来驾轻就熟的,我们就有最大似然估计量:

最大似然估计之所以这么受欢迎,主要是他有一个非常好的性质:一致性,即当,估计值收敛于真值

仅仅渐进一致还不够,我们当然更喜欢的是MLE的附加优良性质:渐进正态,即,其中称为信息矩阵,定义为。实际中,如果我们不知道真值,则会用估计值来代替正态分布中的参数。(没想到事隔这么多年,我居然又手动推导了一遍MLE...真的是,我跟统计的缘分怎么这么纠缠不断呀)。

MLE大都要求数值解的,少数情况下可以求解解析解。比如正态分布。

正态分布的密度函数为:,所以我们有对数似然函数:

还有一个特例是正态线性回归模型(Gauss-Markov),即,其中,这个就和OLS的BLUE性质蛮像了,MLE和OLS对于此种情形估计值是完全一样的。所以说高斯王子在搞出OLS的时候,也是各种深思熟虑过的...揣测上帝的“旨意”也不是件信手拈来的事儿的。

简单情形下,我们可以直接求得估计量的置信区间,但是在复杂的情形下,就只能用BootStrap了。人们的思路就从传统的数学推倒,越来越多的转换到计算能力了。有的时候稍稍感觉这更符合统计学的思维——归纳嘛,这也是统计学在computer

area和数学渐行渐远的表现之一么?

吴老师总结了一句话:BootStrap类方法,就是思想简单、实际有效,虽然不知道为什么...

模型平均

模型平均也是有点延续上面的BootStrap思想,就是我有很多重抽样出来的模型之后,要怎么平均这些结果来找出最优模型的。

1. Bagging方法。 这个就有点直截了当了。利用BootStrap,我可以,然后自然收集了一堆,所以简单一点就平均一下:

2. Stacking方法。这个就稍稍动了一点心思,直接平均看起来好简单粗暴呀,还是加权平均一下比较细致一点。所以:,其中权重。实际操作中,的选取也是一个蛮tricky的事儿。可以利用validation集来优化...

3. Bumpping (优选)方法。,即在所有的中,选择最好的那个,使得一定标准下的损失最小。

话说,Machine learning或者统计学习,无非就是四件事儿:数据(D)、函数族()、准则()、算法(A)。说来说去,每一样改进都是在这四个的某一方面或者某几方面进行提升的。

Categories
读书有感

≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(二)

继续一周一次的课堂笔记 昨天去晚了站着听讲,感觉好好啊,注意各种集中。想想整个教室里面就是我和老师是站着的,自豪感油然而生。

第二次课讲的东西依旧比较简单,是这本书第二章的前半部分。作为一个好久之前已经预习过的孩子,我表示万分的得意(最小二乘法难道不是三四年前就学过的?话说以后我再面人的时候,就让他推导最小二乘估计量,嘻嘻...考验一下基本功)。

------------原谅我的废话,笔记开始------------

简单预测方法:最小二乘法(以下沿用计量经济学的习惯,简称OLS)

OLS实在是太普遍了,我就不赘述细节了。OLS的思想就是,基于已有的样本信息,找出一条直线,让预测值与真实值之间的残差平方和最小,即最小。其中,为真实的样本观测值(已有样本),而是OLS的预测值。用图来讲的话,X为一维向量的时候,就是用一条直线来最好的拟合各个样本点。

这里就很明显了,首先OLS假设是一条直线。那么就是一个参数模型,即我们需要假设一个未知的参数,构成一个线性方程,然后再去估计的值。然后呢,直线会有很多条,所以我们要找到一个目标——比如这里,就是最小化残差平方和RSS。换言之,我们寻找的就是最优的向量使得RSS最小。

解这个最优化问题很简单,我就不重复了。最后解得的最优估计量为:

这里写成矩阵形式,比较简单。X为一维向量的时候,可以改写成形式,我个人不大喜欢,就不展开了。

简单预测方法:K近邻(k nearest neighbor)

K近邻的思想就更简单了。不就是想预测某个点x对应的y么?那么就把它的邻居都找来,平均一下好了。不是有句话叫做什么“一个人的收入就大概是他的圈子收入的平均值么?”

所以 ,这里表示点x的K近邻。至于这个近邻怎么定义嘛,嘻嘻,很简单啊,欧几里德距离就可以嘛~

评语:吴老师对于这两个算法的直观评价是,OLS呢就是勤奋的学生,预测前先做足功课,预测的时候只要知道X,噼里啪啦一下子y就估计出来了。然而knn则是一个临时抱佛脚的学生,预测的时候开始找自己的k近邻,然后把它们平均一下就好了。哈哈,大意如此,大家可以体会一下这种精神。我个人感觉呢,OLS属于以不变应万变的,而knn则是见机行事的。

统计决策理论(Statistical Decision Theory)

说了这么多,这个模型好不好到底怎么判读呢?凡事总得有个标准呢。这一系列的标准或者说准则,就是统计决策理论了。

首先呢,大致我们需要对X,Y有个分布上的描述:用记作向量的联合分布,然后为其对应的密度函数。之后为了估计Y,我们会有很多很多模型,即各种,而这些组成的函数空间记为

然后我们定义一个损失函数,比如在均方误差意义下,,这样就有了一个选择的标准——使得损失函数的期望最小:。接下来就是,到底在空间里面,哪一个最符合这个标准呢?

首先自然是把联合分布变为条件分布。这个idea显而易见——我们总是知道X的(原谅我吧,全中文确实比较难写,偶尔穿插英文一下 ^_^)。所以conditional on X,我们就有了

去解最小化问题,最终我们得到的就是在每个点X上, 。通俗的讲就是,对于每个点预测,把和它X向量取值一样的样本点都找出来,然后取他们的平均值就可以了。很直观的不是么?这里也有点最大似然的想法呢——比如预测一个男孩的身高,最保险的就是把和它同龄的其他男孩的身高平均一下,不是么?

但是说来简单啊,很多时候都是未知的,根本无法计算嘛。所以只能近似:

  • 回忆一下knn,就是放松了两点:1) 取的是x的近邻,而不一定是x; 2)用样本平均数代替了期望
  • 而OLS呢,也是最后在这里,用样本平均代替了期望。

近似嘛,自然有好的近似和不好的近似。很显然的,当样本比较大、尤其是比较密集的时候,x的邻居应该都离x很近,所以这个误差可以减小;此外,当样本很大的时候,根据大数定律,平均数收敛于期望。所以,这两种算法应该说,都在大样本下会有更好的效果。

模型选择、训练误差与测试误差、过拟合

这里讲的比较简单。模型选择就是的选择,即选择哪一类函数空间,然后再其中找/估计最优的。很显然,如果只有若干个有限的样本,我们总能把各个样本用直线或者曲线依次连起来,这样的话就有无数个f可以作为此问题的解。显然这不是我们想要的——这样的称为“不设定问题”,即可能无解、可能多个解、还可能因为一点点X的变化导致整个解的解答变化。因此我们需要先设定一个解的类别。

训练误差:预测模型估计值与训练数据集之间的误差。RSS就是一个典型的训练误差组成的残差平方和。

测试误差:用训练集以外的测试数据集带来的误差,显然我们更关心的是测试误差——训练总能训练的很好,让损失函数期望最小,然而测试集则不一定这样。一般说来,测试误差>训练误差。

过拟合:选择一个很复杂的f,使得训练误差很小,而实际的测试误差不一定小。最极端的就是刚才说的,把训练集的点一个个依次连起来...训练误差肯定是0是不是?

我们关心的自然是怎么降低测试误差。显然这东西会跟训练误差有关,但是它还跟f的复杂度有关。最最棘手的就是,f的复杂度是一个难以衡量的问题。早期的研究有用自由度来衡量这个复杂度的,但是也不是那么的靠谱...后面的有人鼓捣出来PAC(使得近似正确的概率最大——吴老师原话),还有一个VC来衡量复杂度——但几乎实践中无法计算,没几个计算出来的。嗯,水很深哇。