Categories
Uncategorized 我的生活状态

逻辑问题

最近真心觉得自己的逻辑训练有问题了...SQL总是写错...脑子一点都不清醒。

@Pompei@Pompei

不觉得自己是个很粗心的人啊,但事实证明犯错的时候可以一犯一连串...

貌似每年11月我总得惹出一些祸来。06年11月,删掉了某网站的数据库...10年11月,西班牙语考的一塌糊涂...11年11月...12年11月,连续的在一件工作上犯错犯错再犯错。郁闷啊郁闷。

真想把自己丢在冬天的水里好好清醒一下,或者干脆回娘胎重新出生一回,这个脑子完全处于不灵光的状态。还最近连续做梦,各种寝食不安,各种乱七八糟,各种...

谁可以告诉我应该怎么解救自己...我是不是应该做点什么练一练自己的耐心和细心了?好讨厌自己这样子的状态啊,好讨厌啊。最近来上海欢迎教育我一下,煞煞莫名其妙的浮躁。好失败的感觉...连最最基本的细致都做不到,好失败...这样子的状态,还能做好什么呢?好讨厌好高骛远的心理啊...

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
读书有感

have to make a note

前几天说要看intro to algorithms,然后居然真的看起来了。我都服了自己了。现在已经达到追美剧的水平了(我就去down了个MIT的公开课,也没字幕什么的,就直接当看美剧了),频率基本一天一集,时间大都在晚上9点以后。我为什么说是看美剧呢,看美剧前总是很自责的跟自己说不要浪费时间,看一会儿就好,然后不知不觉就看完了;看这个教程也是,劝着自己要慢点要慢点,不要一口气看太多,结果每次都是欲罢不能的非要看完一集不可。OMG...我突然发现自己原来这么喜欢做学生的状态啊,恍然一下子回到了2010年冬天lugosi的real analysis课程上,那么的欲罢不能啊!

今天看完了第三集,讲的是各种奇妙的算法。前面的都还好,基本在他讲的时候我就可以跟着想出来后面大概是什么……直到Fibonacci数列,突然看到这种东西,顿时眼前一亮!怎么就没想到可以用矩阵乘法哩?后面看到了矩阵乘法的算法化简思路,明明知道可以用分块矩阵,原来是这样磨来磨去才可以达到O(N^3)一下的啊,也终于明白前阵子看到一篇文章说什么“矩阵乘法的时间复杂度降到2.xxx了”是什么缘故了;最后看到那个"H"形状的树,刹那间明白为啥那么多geek都痴迷于分形了……recursion啊,divide and conquer,真神奇!

不得不在这里稍稍记录一下,原来算法真的这么好玩啊!各种后悔当年没有去学这门课……还好,亡羊补牢,不晚不晚,至少这门课的什么先修课知识(主要是一堆数学知识)我都知道,所以现在还能跟得上看得懂,欣慰+无限庆幸中……数学,或者说逻辑,永远都是那么的好玩啊。

----
最近难得在上海的零碎时间,一直流连在上海图书馆里面。突然间发现自己还是这么喜欢书香的味道,喜欢被书架环绕的氛围(一下子仿佛回到了大三烤G的那段时间),喜欢从架子里取出红皮的AER慢慢翻看(不知为什么,看QJE什么的次数越来越少,AER仿佛成为了我和经济学的最敏感连系),喜欢获取知识的感觉。说白了,喜欢自己做学生的状态吧。清净,充实。

Categories
经济、IT观察与思考

千里之堤,溃于蚁穴

最近连续有人说我“过于认真”了……当然知道这并不是一个贬义词儿,但是这样也意味着某种灵活性的损失吧。本来一个人两个人说我我是不会在意的,或者跟我生活工作没啥交集的我也不会在意的,但是偏偏是几个跟我最近接触比较多、指导我工作也比较多的,所以我就不得不格外留心了。

学经济的时候感觉,如果数学家看到我们的文章,一定会被气死的,太不够严谨了……同样的,刚开始工作的时候看到周围人写的各种report,强烈无语。这个,不仅仅是方法论的问题啊,有时候基本的逻辑都不通啊。后来曾经和若干正在读Ph.D的朋友谈及此事,感觉他们对于各种商业报告的鄙夷确实并不是无不道理的,但是仅限于理解他们的想法,毕竟除了自己手下出来的东西,其他人的东西都是不可控的,而且对所有人都要求一个很高的statistical and analytical sense完美结合,是不现实的……这个时候,才觉得自己做的最有价值的事儿,或许就是在一堆纷繁的数据里面,有一些清晰的分析策略和指标形成吧。好像学了半天经济学,最大的收获就是遇到问题不会完全的不知所措,还是知道怎么可以一层层剥开坚壳看内涵的。

千里之堤,溃于蚁穴啊。多少对于统计模型的乱用、统计结果的错误解读(前几天微博上流传着一句“很多分析师是用直觉强奸数据”),导致了后期决策的偏差。也正是因为自己接触到的都是第一手的数据,清清楚楚的可以从一行行R代码里面知道各种指标是怎么计算出来的,才可以对某些人对于结果的一厢情愿的解读、理直气壮的提出意见吧。有些事情,过分的“完美主义”是不必须的,但是统计结果和指标制定,我觉得认真还是应该是第一原则吧。

至于统计模型……我想说,看过了这么多其妙的算法啊,模型啊,其实觉得很多时候是“殊途同归”和“返璞归真”。有的时候,把握一个方向确实比多么精确的去测度一个指标更重要。在一个实际的business里面,大家关注的并不是学术界的各种指标,更多的是“好用、易用、实用”而已。像我这种有时候“完美癖”发作的,确实感到一种现实过于骨干的痛苦……但是也没有办法。毕竟你关心的,大多数人是不关心的。同样的,很多开发人员、算法设计人员关心的事儿,在我这里看来也不是那么重要……最多能理解他们,但是,亲,真的,很多事情没有你想象的那么重要的。

最后,罗嗦一句,CV毕竟是面子工程啊……亲,别乱写行不行,排版漂亮点行不行?在这个信息浩繁的时代,酒香也怕窖子深啊~

Categories
事儿关经济

底线

有的时候怀疑自己是不是还有一点点底线,很多事情越来越习惯于容忍和接受。前几天在slides中还在意气昂扬的讲随机分组的重要性云云,现在就开始各种妥协了。毕竟,不可能拿学术界的标准来衡量一切的事情,哪怕这个标准再基本不过、可谓学术论文必须遵守的底线。

想想其实也不足为奇。新闻报道到处都是可以拿来当作GRE AW论文素材的东西,经不住最基本的逻辑批判,那么还谈什么其他的商业报告?当所有的人都在商业报告里面搅混水的时候,默默遵守规则恐怕只是一种一厢情愿的清高了。有的时候,必然的,底线也就是一降、再降。不管心里多么痛苦、多么无奈。

一个不讲究逻辑和科学性的大环境。