Categories
读书有感

「Data Manipulation with R」若干笔记

最近两天读R的手册效率奇高无比,果然是和跟taiyun说起的一样,“有需求便有动力”。昨天一上午看完了ggplot2的手册,虽然有些晦涩难懂,但是还是很好的体系理解。p.s. ggplot2新手推荐「Cook Book for R」,先用起来再慢慢回头看原理嘛。ggplot2也是延年益寿的利器,嗯...默认的图都看起来好专业,嘻嘻。

回到本文的正题。看完了ggplot2之后,下一本被我扫荡的手册就是「Data Manipulation with R」,基本的数据整理操作。虽说数据整理是一件很没有技术含量只是耗时间的事情,但是正因如此节省起来时间也是大把大把的,顿时觉得人生加速运行了好多。说来惭愧,用R也有些年头了,一直没有静下心来好好的研究基本的R数据操作方式,总是遇到问题才会亡羊补牢似的上网开始搜,好在现在stackoverflow.com这些网站累积了大量类似的问题,所以搜起来也算方便。但终究不是个长久之计,当忍者太久了总觉得还是应该老老实实的学习一下王道正术。于是,开始花些时间细细的研读起在R里面收拾数据的那九九八十一招。

简单记录一些以前忽略的函数之类的。很多来自神奇的plyr包,如果直接?调不出来帮助那就先加载这个包吧。

  • expand.grid() : 最开始用R的时候,数据都是教材里面给的,整理的规范的很,基本就是调用一个lm()之类的函数扔进去就可以了,所以习惯于直接用factor类型相乘。后来发现经常要建立一些factor相乘出来的矩阵/data.frame之类的东西,却一直不知道怎么办。终于找到了这个函数,嘻嘻。哎,我是有多么懒才一直没有去搜这个需求啊。
  • cut():yihui兄前阵子提到的非常elegent的函数之一(另一个是with(),哎我居然连这个都一直没注意过),基本就是把连续变量离散化,即numeric型的数据转换成factor型的万能钥匙。
  • which():可能以前也没大用到类似的需求,所以没注意。一般来说,对于逻辑型的数据(很多数据筛选问题最后都可以归为逻辑型数据问题),只是选择出来符合条件的元素还是比较容易的,所以一直没留意这个函数。简而言之,就是这个函数返回的不是符合条件的元素的值,而是他们的位置(比如在一个vector中的位置,即下标)。这样有时候还是比较方便的~
  • with():这个就不多说了,基本拯救了需要attach(), detach()的地方,不用常年打dataframe的名称了。p.s. 不知道是什么缘故,很多R的教程上会用attach/detach,但实际中其实很不建议使用啊,容易把object搞混的。
  • arrange():当你需要对一个data.frame进行按照多列依次排序的时候,就不需要依次order了。说来有趣,它的函数帮助里面简洁明了,“This saves a lot of typing!”,可以少打字的都是好东西,嗯嗯。
  • cat():其实也用到过,只是很多时候更习惯paste(),毕竟不是所有的时候都要直接输出。不过需要的时候,还是比print()加paste()方便一些吧。看思考习惯了。
  • substring():常年只会用substr(),其实这两个函数蛮像的,只是参数不同。部分情况下substring()会更方便一些,不过反正有length(), nchar()这种东西,其实问题不大。
  • aggregate(), cast():前几天gaotao回复的时候提到的函数,其实某种程度上我现在更喜欢data.table()了...
  • apply类:sapply(), apply(), lapply(), mapply(),基本就是消灭显式循环的利器(当然消灭循环不仅仅是美观目的,还是提高效率的不二法宝,后面更是各种并行处理的基本架构函数,比如RHadoop重写的那堆函数)。当然,其实有的时候我会更倾向于把显式循环写出来(如果循环量不大比如<10而且每一次循环都还挺快的话)。这么做虽然效率上牺牲了一点,但是提高了代码可读性啊,就不用写很多注释提醒自己为什么当时这么弄了。由此可见我的编程水平基本停留在翻译脑子里面的逻辑化思维过程的模式,并没有实质性的在程序本身架构的角度来思考编程逻辑。咳咳,人家是做分析的,不是码农,效率的问题交给专业人士去解决吧,我更喜欢专注于思考分析的逻辑(多么苍白无力的狡辩,从来不肯在编程上原理上多花功夫的孩子飘过)。

暂时就是这些,最喜欢的就是R这种无限的可能性,总有人会贴心的帮你写好很多函数,然后傻傻的打一个?,看看函数怎么调用怎么附上参数就可以了。这才是美好的人生嘛,不喜欢过多关注那些脏活累活背后的原理,计算机自己辛苦去好了(当然还有那些辛勤的R包开发者们,嘻嘻,谢过大家的努力劳动)。不是有句话么,「科技都是为懒人服务的」。越来越赞同taiyun这次在北京R会上的惊人之语——省时间就是延年益寿。

Categories
读书有感

再读「数学之美」

今天难得的一点专注时间,打开了「数学之美」,实体书的阅读果然还是比较舒服。

和Google黑板报版相比,正式出版的版本的确增加了不少的内容,如果想深入的多了解某个算法一点,会合适的多。不过某种程度上感觉,没有黑板报版那么引人入胜了,写作风格变得更严谨了。

书不是很厚,加上排版比较宽松,其实看起来还是蛮快的。看到后面,突然对“条件随机场”这种东西产生了莫名的好奇感,然后匆匆的看过去,还是蛮好玩的。在过去的一年中,慢慢的揭开了自然语言处理的各种面纱,这个领域还真的是蛮好玩的,也看到那么多聪明的中国人在此不懈耕耘造就的各种神奇。比如,我用来打这篇日志的输入法——经过很长一段时间的训练之后,他越来越聪明的可以捕捉到我想说什么,打字的过程已经不会影响到思维了。对比以前用智能ABC的日子,突然觉得生活真的是美好了许多。而这一切背后的辛勤劳动,都离不开算法的支撑和我们对于数字信息理解的深入。

此外,还顺便看了一眼奇异值分解(SVD),以及MapReduce,反正对于各种可以降低算法复杂度的思路,都是很能裨益工作的。曾经很多人不知道“线性代数”这门课有什么用...从我个人经历来说,从学完它就一直在用,各种用。简洁的神奇。

还是挺好的一本书,就是浅了一些,有些深入的东西可能确实比较难以直观的描述出来。Machine learning果然还是需要下苦工的一个领域。

Categories
网络新发现

Machine learning for KIDS?

在慢慢火车旅途上,看看书还是不错的消遣。第二个kindle也挂了之后,只能借助ipad勉强看看书了。还好吧,至少还能集中注意力,不会手贱的不停刷微博什么的。

离开上海之前,两天奋战看完了备受推崇的「三体」三部曲,不禁对作者的想象力、天文、物理功底所深深折服。总有一段时间觉得自己的思维格外的开阔,喜欢这样智力上的挑战。而接下来打定主意在路上看的,第一本就是说「machine learning for hackers」,听说是R与数据挖掘教程之一,很多人多次提及过,思喆大哥貌似还评论过,却忘了大家是褒是贬。当然,这其中还有一层原因是,适合自己的才是最好的,就像我从来不能如同在经济学家面前声称自己学过经济学一样,在统计学phd面前号称自己学过统计学(cannot speak the statistics language well)。根基差太远。

然而看过了这本书之后,只想问一句,are you kidding?通篇都是各种回归就罢了,还常常一整页就一幅图(至少我看的版本中如此),每个例子都有配图(当然我不否认可视化对于帮助理解数据的意义,但亲啊,是不是有点多了啊?),这样稀哩哗啦的居然凑了300多页。我只想说,如果我的小册子也这么写,突破500页指日可待啊。

好吧,回到价值评价。这本书信息量真的不怎么大。我不是machine learning科班出身,没学过这东西的发展史,不知道这些模型的历史地位和演化过程,只是断断续续、这里一点、那里一片的接触了一些模型(当然回归模型除外,计量的招牌菜啊,虽然我一度觉得我计量学的也不咋地)。看完这本书,先是简单的线性回归,然后polynomial拟合,然后是logit回归等等,中间加上一些莫名其妙的检验指标,各种看着不爽。至少,以一种检验和model selection的形式出现好不好,显得多少严格一点嘛。

后面是支持向量机,然后居然还简单的涉及了sna。不过当我看到gephi的时候....好吧。这作者真心喜欢可视化啊。

说到机器学习,可能我没什么评头论足的资格。不过仗着最近看了一下「数学之美」(虽然只是06年的google黑板报版),还是觉得对这个领域的大致思路有所了解的。关于learning,个人认为除了各种回归等常规prediction之外就是bayesian规则下的模拟了。后者的话,个人倾向于"按需定制",模拟还是好好的从头开始写代码比较稳妥。搞不懂这本书的思路,不知道target group是哪群。

有的时候各个学科还真是殊途同归的。我所接触的很多学科的方法,无非的指向只有一个:如何从信息中提取信息,或者更简单的,如何降维。从这个角度看,经济学也没有落后太多嘛,只是出发点和原始信息集不一样。其实,平心而论,经济学的思维方式基本是数学分析(演绎法)+统计学(归纳法)的结合,虽然到个人层面上各有所侧重,但还是很大程度上相辅相成的,没法一条腿走路。所以,有志于挑战自己智力和创造力的同志们,可以偶尔学学经济学哦~嘻嘻。绝对是系统的对思维方式和分析能力的训练。

Categories
事儿关经济

把结论假设出来?——记郁彬讲座

一如前篇日志所述,这次帝都之行最大的收获就是有幸聆听了郁彬大神(Berkeley统计系主任)的讲座——还是自由交流式的,让人受益匪浅啊。走出来第一感觉:我要去读Ph.D。

或许以前也说过,最佩服的人就是能 show the beauty of what he/she is doing 的人。我是个极度喜欢美丽的事物的人,不论是那个领域。只要让我看到事物的美丽,那么热情就随之而来,拦也拦不住。幸运或者不幸,昨天郁彬教授恰恰向我展示了这一点。5555,顿时热血沸腾,各种激动。强心针不能长打啊,我脆弱的小心脏真不一定承受的了啊。

郁彬有些很经典的话,摘录于此:

1. “我一直努力的目标,就是不跟我不喜欢的人在一起”。多么的洒脱!是啊,你永远不可能让每个人都喜欢你,你也没必要去喜欢所有人,更没必要讨好什么。做自己喜欢的事情、让自己活得开心,这样就很好了。

2. “经济学者要负责任”。无可避免的,提到了经济学(后面紧接着还提到了social network,连中两枪的我表示格外happy)。确实,一个经济学的研究应该更负责任一些,不要制定了一个经济政策之后,无论好或者不好,都没法评价。那么,这样的事情做下去没有任何的事后风险,确实是不甚公允的。对此,我表示深深的赞同,我也希望有朝一日的经济学研究可以更贴近社会民生、更好的服务于经济发展而不仅仅是某些IQ超高人群的brain game。而且,不仅仅是更好的应用,从theory的角度也应该给出更好的应用指导。

3. “最好的证明,就是假设和结论离得比较远,让人眼前一亮。要不,你干脆把结论假设出来好了!”。确实是,很多时候我们写paper,假设一大堆,尤其是理论经济学那边。是啊,你只要承认我的假设,后面的结论肯定没有问题。关键是,这假设有没有道理呢?如果假设完全是空中花园,结论再美好又有什么意义呢?另外,如果假设和结论就差那么一两步,这样的文章又有多大的价值呢?好的theoretical的文章确实应该是,假设和结论乍看不相干,然后通过巧妙的逻辑推导严密的证明出来。这才是有用的嘛。(话说,数学家们喜欢争执的是definitions,更严格咯)

4. “相关和漂亮,我可能会选择相关”。爱美之心人皆有之,郁教授也一直在强调 enjoy the process not the results,但是很多时候 beautiful researches 并不是那么容易就可以达到的。诚然,我最喜欢的research就是, simple and elegant,但是这样的研究从来都不会是天上掉下来的,一定是不断的努力最后得到的。因此,我这里姑且理解为不能“好高骛远”,很多时候还是要静下心来慢慢沉淀,一点点突破,聚沙成塔。研究考验的不仅仅是人的聪明程度,还有耐心和毅力。一切的美好都是值得等待的。

5. 交叉学科。关于交叉学科,郁教授说了很多。她给我们分享她自己的辛酸历程,这才是今天可以站在聚光灯下的源泉。Title不是决定性因素,但是有的时候为了达到自己的科研目标不得不曲线救国。否则,空有一身本事但是科研资源不会自己找上门来的。郁教授在美国数十载,一步一步都走得那么艰辛,果然通往成功的道路从来都不会是一帆风顺的。失之东隅,收之桑榆,谁也不知道今日的失去明天会如何的pay back,但也不必因为一时的得失过于欣喜或悲伤。这大概就是,不以物喜,不以己悲吧。人生是一场马拉松,每个时刻,大家都在不停的努力,都需要一直去努力。另外,领域的选择,确实没有任何“随大流”的必要。只有自己喜欢的,才能做的卓越。还是,

做自己喜欢的事。

超级喜欢郁教授的坦率、直接和真诚。对我们这些还在、或者刚刚迈出校门的孩子们来说,这样的交流确实弥足珍贵。从来没有一个环境会是完美的,只是不同的环境会在人生不同的阶段提供不同的营养。我多少觉得,自己离开学校来到industry一段时间,是非常值得的(无法判定对错),而一开始选择一份与人打交道更多而不是天天面对数据的工作,也是让我受益匪浅的。很多事情,都要一点点的慢慢积累,路还长着呢,何必心急。只要时间不曾被浪费,就好。保持一颗看风景的心情,无论身在何方。

Thank you so much, Prof. Yu. I will go back to school and continue my research dreams one day, and hopefully, that day is not far away.

Categories
读书有感

略读「数学之美」

继前段时间匆匆瞄过「浪潮之巅」后,注意到最近作者又出了另一本书,「数学之美」,便寻思着一定要有时间读一下。搜了一下才发现原来早在06-07年,这些就在google黑板报上连载了。唉,当年是有多么的孤陋寡闻,才会浑然不知--说不定那年要是看到了,就会直接投奔CS去了,自此和econ无缘了。哈哈,时间不能倒流,玩笑而已。

google黑板报上的版本不长,昨天从杭州回来的高铁上匆匆便略读完了。从自然语言处理,到输入法,到语音识别,到排名算法,到anti-spam;从隐性马尔科夫模型,到贝叶斯网络,到pagerank,到"简单而有效"的必杀刃...算法的魅力在作者笔下翩然而现,不禁勾起了我心底的贪婪。看到优雅的条件概率公式,恩,世界被数学描述的真的是挺美好的。

不知道为什么,接触了很多CS出身的出色的工程师们,一边惊叹于他们卓越的coding能力和创造、组合工具的能力,另一边却又不知为什么总隐约觉得他们的统计学背景并不是那么的solid-换言之,统计分析的sense远远比不上熟练应用算法的能力。虽说术业有专攻,可是算法这么迷人的东西...好吧,我总是对于美好的事物,不由自主的表现出贪婪和心向往之。

看看接下来的一段时间,如果确实无聊,可以考虑静下心来学一段时间的算法,很多算法模型都是知道个大概却没有那么确切,心里也难免惶惶不可终日。有的时候确实是眼高手低了,好多东西都没有深深地挖掘过。浅尝辄止不是一件好事恩,还是自己推导出来的东西更能铭记于心。

话说,明天的R会议,我会发挥娱乐大众的功用,讲一些统计分析好玩的应用。基本是上次给松鼠会讲的「别让数字吓到你」的升级版,加入了一些稍稍高级的分析方法,然后案例也有增有减。为了吸引观众,我只能无情的拿cos开刀,有一些关于cos的内幕会被无情的曝光,还有依照惯例现场观众会被调戏--嘻嘻,不调戏你们一番你们怎么能记得住呢?这才不枉我又花钱又花时间跑到北京来一趟嘛。希望明天我的状态会比较好吧,喵~