Categories
读书有感

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

开春,复课。

一句无关的话...今天打开Google Reader看到7月份要关的提示,无限悲伤。看着落园若干RSS源里面累计800+的读者,只能说句bless...2008年开始使用,到现在,伴我度过了多少读书时光呀。不过确实也衰落了,高峰的时候一个RSS源就有600+读者,现在也只剩一半了。写博客,越来越像一件出力不讨好的事情了。

--------正文开始---------

提升与梯度树

1. Boost(AdaBoost)

这里讲的AdaBoost是仅针对二类分类器的提升。大致的思想就是,给我一个弱分类器,还你一个强分类器。听起来蛮神奇的对不对?

先说算法实现。

第一步:初始化。,权重初始值

第二步:迭代。

for m = 1 to M

  • 根据已有算法(即弱分类器)和{}得到一个分类器.
  • 计算误差:,这里我们把权重进行归一化。
  • 计算权重:
  • 修改样本权重

也就是说,我们不断的生成新的权重,当分类器分错的时候更改权重。

第三步:输出。最终的分类器为前面的加权。

这样就实现了从一个弱分类器改善到一个强分类器。这里弱分类器是指误差比随机猜的1/2少一点。

另注:在修改权重那一步的时候,也可以定义,然后,这样在最后的时候也可以改成。总之这里的直觉是,如果分对了,那么权重下降;反之,分错的时候这些样本的权重上升。最后take average就可以了。

2. 自适应基函数模型、前向分布算法

之所以上面又引入,便是为了更好地理解这一类模型:自适应基函数模型。

1. 我们称 为基函数模型,其中成为基函数基。注意这里和GLM有很大的不同,广义线性模型后面的为确定的。

2. 前向分步算法。

数据集记作。定义一个损失函数,比如常见的均方误差,

,或者0-1准则。

然后步骤为:

  • 初始化:
  • 迭代:For m=1 to M,
  • 输出

这样我们就把这个最优化问题转变成了M步,每步只做一个参数的最优化(近似方法)。

3. 指数损失函数与AdaBoost

有了这么一个一般性的框架,我们就可以套用具体的形式。

1. 定义指数损失函数:

2. 两类分类、指数损失函数的自适应基函数模型。

前向分布算法:

(i)

定义

这样上式就可以化作

(ii) 固定,优化.

然后最小化,则。假定已被优化,然后继续。

(iii)优化

取一阶条件FOC,则有

这样最后

这样就看出来上面那个AdaBoost里面的是怎么来的了吧?

(iv) 回到AdaBoost

看出来最后的AdaBoost雏形了吧?

Categories
些许欢笑

Les Misérables - dream back to Paris

一句话评价: It made my day.
再罗嗦一句的话:我真的经不起诱惑,朋友一条短信就成全了我这个完美的周末。

看到影片结束,才恍然意识到这是Hugo的著作...我说为什么觉得名字那么似曾相识,又为什么对着这两个法语单词不觉得陌生。当年在巴黎的Panthéon里面,毫无意识的就走过了雨果的墓穴,然后被朋友提醒才恍然间如梦初醒,一路小跑奔回雨果墓棺前,呆呆的愣了好久。

Les Misérables也上映了有一段时间了,但是一直没有特别想着去看。如是没有靠谱朋友提醒,我怕就会错过了吧。还好,运气不错。进入电影院,一开始稍稍有点茫然,后来开始渐渐的喜欢起来音乐剧的唱腔。没有想到这部片子从头到尾都是音乐剧,本以为会偶尔有些间断的来着。对于音乐剧男高音的迷恋来自于前段时间看To Love in Roma的时候,某个男角色洗着澡引吭高歌...那声音的浑厚和穿透力,瞬间打败了银幕前的我。

我承认,没有看过舞台版的Les Misérables是这次看电影的硬伤,一边欣赏音乐一边脑补剧情,这个真心来不及兼容并纳呀。就这样,随着音乐,快乐着你的快乐,悲伤着人们的悲伤。当do you hear the people sing 第二次在那个小孩子口中唱出来的时候,瞬间眼泪就开始打转儿...这不,现在还在听着这首Hoor Je 'T Zingen Op De Straat?(法语版,我只是想体味一下原始的法兰西风味,虽然英语版已经是绝对经典了)在这里试图多多捕捉一点当时的悲伤呢。(p.s. 法语烂到家是硬伤...连蒙带猜才找到这个法语版)

0508937b6cbdaa5a9b7754f8ecae4e05爱死了这个孩子第二次唱响do you hear the people sing的那个时刻

从视觉的角度,好喜欢这部电影里面的特写(虽然有人说是毁誉参半)。我觉得这才是电影特有的冲击力,不同于舞台剧,特有的冲击力。还有那些巴黎城景的速写,一下子好像就回到了那个十九世纪的巴黎。现在越来越遗憾两年前去巴黎的时候对这座城市太过于无知了,现在倒是越来越希望可以重走一遍,拾起一些片段或者回忆。无论悲伤,或是欢喜。那是巴黎。那种向往自由的精神,永远让人震撼。

下次去纽约,或者伦敦,或者巴黎,一点要去歌剧院重温一下这样的味道。

Categories
网络新发现

那些毫无节操的经济学研究(一):JJ尺寸与经济增长?

无聊的时候读几篇paper提提神总是好的...太严肃的看久了,还是找点调节操的吧。

source一般是weibo...神人出没之地呀!

第一篇就是:

Male Organ and Economic Growth: Does Size Matter?Tatu Westling, University of Helsinki and HECER

嗯,人家作者就是扛着卫生经济学(health economics)大旗的啦~所以有这么篇文章不是很正常么?

结果发现,JJ大小和经济发展水平居然是倒U型相关的。嗯...如果想要知道JJ大小到底是遗传基因还是后天营养(经济发展水平较高的国家营养一般会更好)的影响大,是不是可以研究一下发达国家的亚裔移民后代相比于他们父亲的penis size的generation difference呢?

仅供娱乐,认真就不好玩了。

Categories
读书有感

Bootstrap + subsample: simple, efficient, then elegant?

继续昨天。早晨一起来,看到施老师的一句简短评论,瞬间人就清醒了。然后跟做错了事的小孩子似的,惴惴不安的跑到office里面,翻墙,开始下paper。

现在的节奏基本上是白天开会写代码,晚上回家看paper,哎,不看心里总觉得好惶恐。还好中间等车等了蛮久的,顺便就借着六七点昏黄的路灯把这篇不算太长的paper看完了。有趣的是等车的时候碰到一位同事,然后我俩就开始呱唧呱唧的聊起来统计推断了...不知道当时旁边的路人是不是一道黑线,幸好当时把ebay的牌牌藏在了衣服里面...

这篇不算长的paper是:Bootstrapping Big Data,UC Berkeley 计算机系一群人鼓捣出来的。idea很简单(符合第一标准,simple),就是在大数据上(无放回的随机抽样)取一些subsamples,然后在这些subsamples上面做bootstrap,然后把结果取平均数。

这样的好处显而易见,天生的分布式算法,把数据随机分布到各个计算节点就可以了。然后bootstrap也不用占那么大的内存了,空间时间都省掉了,所以符合第二标准:efficient。

最后,就是还是比较effective的,有着良好的渐进收敛性质。和直接的bootstrap相比,它不仅保持渐进一致,而且有着更高的收敛速度,还是天生并行的...过年回济南的时候joke童鞋(高中同学)去火车站接我,然后我们就兴致昂扬的聊起来大数据和算法并行问题了...是不是有点天雷滚滚?哇咔咔,大过年的...好久没见竟然是如斯叙旧,汗。

此外,还可以结合binning的思路做一些weighted calculation,这样又进一步节省了时间。

不知道这样是不是就足够的elegant了...我看了一眼converging rate 还是比较好看的。伪代码思路也是简单得很。还可以用在各种现成的线形非线性、参数非参数模型上,真是瞬间变身并行高富帅。貌似和前段时间看到的rmr2包里面做OLS并行的思路有点像,待我细细研究一下。

algorithm

唯一的concern就是这东西更适合hadoop而不适合teradata,哎。我没法在TD上控制节点的分配,这个比较讨厌。Hadoop可以直接写并行map reduce,就会方便很多了。

 

先看了这一篇简介,后面慢慢地研究一些理论证明什么的,有点too good to believe...还是先找点数据测试玩玩吧^_^
efficiency

Categories
读书有感

Binning in Computational Methods: Gaussian Kernel Regularization, etc.

成天跟大数据打交道,最恨的就是out of memory这种错误。诚然,可以通过加大内存等方式来保证运行,但是随着数据量的增长,时间上的损耗也是很厉害的——比如时间复杂度为O(n^2)甚至更高。所以为了一劳永逸的保证计算的运行,需要在算法的改良上做一些文章。有了一个简单的类似于binning的idea,就去厚颜无耻的骚扰施老师了。

然后就顺利的套到了一篇paper,我能说我是瞎猫走狗屎运了么?居然还真问对人了,如获至宝的搞到一篇paper:

Yu, Bin, and Tao Shi. "Binning in Gaussian Kernel Regularization." (2005).

兴致勃勃的读起来,page 1 the history, interesting; page 2, ok...loss and penalty function ; page 3, oh...; page 4, fine...page 5, what the hell?瞬间扑面而来的各种公式一下子把我打回了原形——没学过就是没学过,再装还是读起来一片茫然。

然后开始迅速的往后找,找到了binning method的定义,嗯,不就是画格子嘛,和我本来要的思路差不多,多少找回一点感觉(binning的想法就是直方图,只不过是高维的扩展,把点aggregate到一个个格子,然后统计频数就可以啦,或者固定点的数量来确定格子)。跳过若干公式...直到后面的结果,眼前一亮:

2013-07-03 02_20_25-2006_Shi_Yu_Stat_Sinc(1).pdf - Adobe Reader

嘻嘻,就是这个!时间缩短至0.4%!神啊,比我想象的效率还高很多。这点loss in accuracy完全可以忍受嘛,重要的是——时间!时间!

然后问题就是,这个binning该怎么定义为好呢?看他simulate的结果,嗯,好像在这个case中每个格子的点到了9以上误差开始上升。

2013-07-03 02_20_10-2006_Shi_Yu_Stat_Sinc(1).pdf - Adobe Reader

还好啦对不对。具体的格子数量可以用实际数据测试一下,看看哪个更符合实际需求,直觉上应该是跟X以及Y的(联合)分布有关的...

好吧,我这是高射炮打蚊子么?我只是想在一个很简单的线性回归上面做一些binning...喵。多学一点总是好的,俗语嘛,“不畏浮云遮望眼,只缘身在最高层”。

p.s. 我也不知道为什么作为一个算法基础极为薄弱的、数学公式看起来依然会晕晕的、看到各种hilbert space开始感觉眼前飘过一团云雾的孩子会开始研究算法的问题...真的是被折磨太久了么?不过有时候看看这类的paper还蛮有裨益的...

相关文章