Categories
经济、IT观察与思考

一些观察

随便写写,随便看看。

1. 关于研究方向。

读的paper多了,发现大多数人的研究路数无非两种:

  • 一种是锚定一个问题,然后用尽各种办法来看哪种可解。换个通俗的就是,车坏了,找出一堆工具来看看怎么可以修好。
  • 另一种则是,沿袭一套方法论的路数,试图解决越来越多的问题。通俗的讲,就是木工不满足于打打家具,还要去试试电工水工装修工。

你说孰优孰劣?没有高下之分。谁也说不好一篇好的研究到底是问题导向的还是方法论导向的。不过鉴于一般来讲方法论比较容易训练出来,所以有的时候看似包装的很漂亮的paper可能正是这个方法灵了然后倒回头来包装问题本身。

本以为这个只是看paper时候的感觉。后面发现,工作其实也不外乎如此。有的人凭着一门专业技能,比如编程,就可以在不同部门之间切换来切换去,反正总有需要用到编程的地方。有的人有一些具体问题,然后就广撒网找来各种背景的人帮忙解决。前者最后进化为技术专家,后者进化为大BOSS。

2. 关于建模

说到模型,反正上来都是那句至理名言:

没有模型是正确的,只有一些是有用的。

所以一切试图证明自己是真理的模型都是无用功。如果是真理,搞成体系那就叫他理论,可以慢慢证明就叫做定理,不证自明那就叫公理好了。反正我觉得说某个模型是正确的这种言论都是挺无聊的。

基于这一条,在实际商业环境中建模,就不要一开始给自己摆太高的期望。就跟上面说的,很多时候问题都是第一类人发现的,他们只是寻求有着不同技能的第二类人帮忙看一下,实践中谁好用就用谁。所以一群第二类人内部争来争去,什么机器学习流派啊、数理统计流派啊、计量帮啊、物理统计帮啊还是算命仙人这些其实都不那么重要...比如最近世界杯大家都在预测,那么不管你是章鱼还是小丸子还是霍金,只有预测对了大家才信你。

所以在学校里被某个流派洗脑洗的深入骨髓的,可以醒醒了。不要一上来就摆出自己是真理这样的架势。每个人在象牙塔里都是这么教的。

3. 关于统计建模

如果大家笃定就要用统计的方法了,那么要解决的问题就无非是:搜集数据(变量)、选择模型、修改参数以达到最优。

具体到项目,搜集数据这个肯定是大头。每个学过统计的都被教导过“garbage in, garbage out”。只可惜大部分老师讲完这句话之后,学生并没有多少机会实际的去搜集数据,或者更直接的去想要怎么搜集数据。大部分学校里面的训练(尤以网上数据挖掘竞赛之时)都是,数据集给定,怎么找个更好的模型来预测/评估/解释。真到了项目上需要搜集数据了,大部分人的做法无非就是先找张纸把想到的变量都分门别类列出来,然后把所有可能拿到的数据都扔进去试试,从简单的线性回归或者分类器开始,到非线性的各种模型都扔进去跑一遍,反正这年头计算能力不是瓶颈,总有合适的模型自己可以去做变量选择。

听到这里,貌似也挺好啊。是啊确实没什么不好,如果大家都有充足的时间慢慢玩的话。可惜的就是这种无脑流在大多数情况下都是受制约于时间的。于是为了省时间,要么就某些麻烦的数据不搜集了,要么就某些计算复杂的模型不去跑了。差不多就好了。解决问题了么?可能也差不多解决了70%-80%。

与此同时还有一类业务流派。这类人特别像医生似的,是某个具体领域的专家,专到什么程度呢?基本上他熟悉的地儿有个风吹草动都逃不过他的眼睛。直觉很准,或者说经验实在是太丰富了。跟这个流派的人一起工作很好玩,他们想到一个问题大概的给你指一个方向,大部分情况下八九不离十,差不多就可以把问题解决了。就算事后需要稍微建建数理模型多做一些分析和验证,基本也不会太麻烦。每当此时,不禁大呼一声畅快,瞬间觉得自己以前的思路真实的麻烦爆了。嗯,爽归爽,不过这种流派需要在一个领域浸淫比较长的时间,逃出他的领域就比较难说了。

4. 关于这些碎碎念

基本上就是想说,容易训练出来的都是不重要的...那些东西都进化很快,学术界不是白白养了一群人浪费的(虽然也挺浪费的),所以长江后浪一定会把前浪拍死在沙滩上。

与此同时,业务知识也不是那么重要的。经济环境变化太快,谁也不知道明天这个世界会变成什么样子。

那既然都是以不变应万变,那还是选一条比较开心的路子。总是需要合作的,这个世界已经复杂到没有可以一个人解决的问题了。

Categories
事儿关经济

说说我所认识的“最小二乘君”(配图版)

由于近些年常常跟搞数据分析的人混迹在一起,所以很多时候说话方式有点偏向机器学习了...顺便心里暗暗的忧伤一下当年的心路历程(不知道我的基本轨迹的可以先去看看CV..)。这里聊作一二记录,讲讲我所认识的“最小二乘法”(下称最小二乘君)。那个,语言稍显浮夸,大家随便看看哈,别较真。

<锲子>

是写小说的时候大家都兴先来个“锲子”么。7年前,我还是一个年幼无知的大学新生儿。当时我们系开了两门传说中各挂50%的数学课:微积分和线性代数。同学们大都学的死去活来,我也学的死去活来,一度开始怀疑自己的智商...其实现在想想,我也不知道当年为什么学的那么痛苦,现在随手用个微积分貌似都很水到渠成的样子。嗯,可能是老师授课方式不够好吧。那年直到期末考试,我也不知道我学了一年的微积分有什么用处,除了背下来少数的几个证明推导和学会了一堆算微积分的“技巧”之外。

从前有棵树,叫高树,树上挂了很多人……挂了很多人的高树...

线性代数也是一样的。当年翻看某本计算机类入门书(可能是算法与数据结构),前言一开始就是一行金字,大意是“矩阵论是当代计算机基础×××”。然后翻翻后面的果然看不懂,于是默默的去图书馆把这本书还了,然后借了一本黄皮的泛着金光《矩阵论》回来。同样悲催的,啥也没看懂,然后默默的放弃了我在这个领域深修的打算,乖乖的回去上必修课了。(所以我当年学习高级计算机知识的一腔热情就被这么无情的浇灭了哇!果断考完当时的计算机等级考试——C语言和数据库就扔掉编程了...)

线性代数一直学到最后,我还是以为这东西就是来替代“高斯消元法”解联立方程式的...什么特征根啊,奇异值分解啊,格拉姆-施密特正交化啊,直到最后我也没明白是干嘛用的,除了会算几个数之外...没想到,那日一别,重逢已是花落花开好几轮之后...当真是良辰美景虚设!只是万万没有想到,他乡遇旧友,而这厮竟和日后的最小二乘君紧密相连,难分难舍。

138112_091242423086_2良辰美景虚设

Categories
事儿关经济

我(对于统计方法)的一些偏见

Yihui写篇文章居然链到了我那篇吐槽文,瞬间亚历山大...我就是随便说说而已,一定要文责自负么?

其实我经常会有些自我的偏见在那里,而且有时候明明知道这些偏见的存在不好,还是很难说服自己改变它们。

比如,最深的偏见就是我对于计量经济学,我实在无法从根本上接受计量经济学属于经济学的这个事实...我对于它从统计观点出发搞的“因果推断”始终加上一个引号。

再比如,计量经济学内,我偏见最深的就是时间序列分析,我实在无法从根本上接受时间序列分析居然可以做因果推断,这东西更多的是预测的意味嘛,和机器学习的观点很像...

再再比如,机器学习各种模型中,我最不能接受的就是那些完全没有假设检验的...这东西至少也得能算个方差什么的才让人觉得靠谱些吧?

再再再比如,没有假设简单的那些机器学习模型中,我最最最最无法认同的就是最粗暴的把各种模型结果混合起来,用类似bootstrap的方法求得置信区间之类...这简直是就毫无办法之下的粗暴猜测嘛。

然后最后一个问题,施老师说,这个某种程度上反映了“群体智慧”。呃,好吧,就算每个模型都提取了一定的信息量,然后这么混合起来就是万灵药了?怎么听怎么像中药一锅煮的感觉,而不是西药那么配方分明...

其实我还讨厌的是“数据科学家”这个说法...努力的把science的帽子往自己脑袋上套,是大家都要遵循“科学发展观”的缘故么?就像我原来特别讨厌有人争论“经济学是硬科学还是软科学”一样,一定要沾上科学的边么?是为了好申请经费么?

如果科学,定义为消除我们对于世界的不确定性,那么无论是经济学还是统计学,不用争议多少,自然都是科学。如果科学,定义为探寻事物发展的因果规律,那么怕不是建立在演绎法逻辑之上的方法,都算不上科学了。我想说的只是,定义可能并不重要,如果定义是狭隘的,那么必然排除了一些有用的方法;如果定义是广阔的,那么必然包容了一些没用的方法。这东西又不是非黑即白的...

我只能说,科学在我这里的定义相对狭隘,宁缺勿滥,所以我的偏见有这么多...偏见越多,观点越偏颇,经常有过两年自己都不知道自己当年为什么那么幼稚和狭隘的感觉。所以大家一来请见谅落园文章的局限性,二来欢迎帮我突破局限性,用鲜明的观点和生动的例子来说服我——不仅仅是一些口头上关于定义之类的争论。

------------

照例跑题:确实如yihui所说,我的blog文章太多了,找起来难免不方便。尤其是对于不是常年订阅的读者来说。所以我决定对自己的blog主题动动手术了,瀑布流什么的最近蛮流行的,挺好的打算学习一下。

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
互联网产业观察 经济、IT观察与思考

[RAAT]第一话:微博的数据该怎么玩呢?

引言(即废话):每当要准备presentation的时候,就会开始想一些问题。去年写的是【社会实验的特殊性】,然后有一系列的文字和最终的slides。现在,想多少从自己这大半年的工作经历出发,写一系列文章,就叫做 R as an analytical tool吧,简称RAAT。第一话,从微博入手好了;第二话,将由Joke童鞋过年时候问的一个问题引出;第三话,会是更偏向流程和实践的东西。这些我会一点点写,也可能有所改变,看到时候具体的想法了。

新浪微博也火了这么久了,但是对于吾等数据源控来说,这等数据简直不能被暴殄天物啊。怎么用来分析为好呢?

links类数据

微博有两大类links:

  • 粉丝关系
  • 评论与转发关系

然后呢然后呢?

首先很多人感兴趣的是信息传递吧?那么决定信息传递的就是,第一呢,每个用户的信息源(主要来自于他关注的其他微博用户);第二呢,他关注的人的发布及转发行为。用粉丝关系来计算影响力(influential rank)自然是没有问题,但是多少有点损失的感觉——我们总关心一个人在接受信息之后的response是不是?所以,一个简单可行的思路是,这里不妨用其转发行为来加权,判断每个他关注的用户对于他的影响程度的不同~如是,则每个有向的link上就附加了一个权重,成为了一个加权的有向图。

嗯,这样一个基本的网络模型就构建好了。然后呢?链路预测?等等,我们关注并分析微博数据是为了什么呢?到底构建什么样的指标是合理的呢?

如果你想扩大自己的影响力...

好吧,在下作为一个老字号(落园居然被我坚持写到第6个年头了,这是一种什么精神啊~)blogger,自然可能希望多少扩大一下影响力。落园是落园,blog对我来说有它自己特殊的意义(比如发泄,呃),但是我的新浪微博就沦落为一个落园的notifier了(这个特别的理由就不在这里公开说了,私底下聊)。如是,那么应该怎么办呢?

正常的话,经营一个微博,怎么判断自己是不是越来越受欢迎了呢?显然,简简单单一个“粉丝数”还是不够的,用“转发数”为每个粉丝关系加权也还是不够的,我还得关注一下我的“粉丝”们都是一些什么样的人。比如,他们有几千+的粉丝,还会转发我的东西,那么我的影响力就~哈哈。简单的说,一个衡量指标可以是:我的微博可能会被多少人看到呢?那么,我只要算一下我的粉丝和他们转发的可能性,然后再算他们的粉丝转发他们微博的可能性,以此类推,我就通过了“粉丝”这类link成功的影响到了更多的人。从这个角度而言,这比直接的“粉丝数”或者“转发次数”更能衡量一个微博的影响力。

当然,类似的指标还可以构建很多,比如对response进行加权。看具体目的了。我的微博算个特例,因为它有一个特殊性:不转发任何其他微博(机器人自然要符合自己的身份嘛),所以我关注的指标相对单一——我是比较关注“信息能传递到的人”,而不是特别关心他们的response程度(话说最近关评论了,直接刺激大家转发啊,故需要另当别论了)。如果是商业经营一个微博,那么在内容的选择上或许就要更加迎合各自群体的口味,具体的是否可以用Bayesian规则来算算被转发概率呢(不断的update概率)?

如果你是想提供一个互动渠道……

微博被很多企业作为新兴的接触客户的渠道(沟通成本低嘛),所以很多企业可能希望建立一个帐号来更多的获取用户的信息。比如会员制的商家,可以通过找寻自己会员的微博号,来得知他们最近的偏好,然后推荐相应的产品。电商也可以进一步的做一些销售活动,比如我的京东帐号和微博帐号绑定之后,是不是就可以直接留言给京东下单了呢?就像我打个电话似的那么方便。要是他搞什么团购之类的,我也可以直接在微博上买而不是跳转到京东复杂的页面上去,那该多好啊。

对于这样的目的,首要的任务就是找寻自己的用户群,然后建立他们微博帐号和会员帐号之间的关联。除了直接的搜索关键词之外,初期还可以利用社交网络的力量,比如洲际和喜达屋集团都在做一些转发抽奖的活动,让已经关注他们的微博用户来扩散到他们的朋友(所谓物以类聚嘛,自然更有可能也是酒店常客),这样一来就已经实现了用户的识别。然后,怎么引诱这群会员是这些商家的长项,各种美图诱惑之下,让人经常在屋子里面各种坐不住(比如我...)。如果这些用户发一些信息,比如“下周飞北京”,那么这些商家大可以直接找到这些用户施以小惠然后成功的从对手那里抢的客户(先发制人啊)……反正至少我认识的玩酒店常客计划的人,都没有只专心的玩一家的。

跟R啥关系?

说了这么多,我们有了一些基本的建模思路。比如希望借助微博扩大影响力,那么最直接的办法:去找粉丝多的微博来转发自己的内容。很多微博都有一个不太公开的转发价格,如果你相信市场是无摩擦的、处于均衡的,自然可以认为价格反映了其影响范围的大小。但是,首先市场就不是一个静态的,难免在动态潮流的波动下偏离均衡;再说怎么可能无摩擦呢,信息不对称总是到处存在的。因此,为了实现现有资金(或其他资源)的集约化投入,往往需要做到的就是“找到对目标群体影响力最大的微博”。

还是用那句俗话,“物以类聚,人以群分”,很多大众微博的粉丝关系并不是从天而降的。这些微博发布的内容往往偏重某一个侧面,如科学松鼠会往往会发布科普类知识,主动follow松鼠会的粉丝可能也就有着更高的教育背景和辨知能力。换言之,不同微博的粉丝往往有着不同的群体背景。为了识别这些形形色色的圈子,我们可以先利用微博的粉丝关系,建立起来一个网络图(更可利用转发情况来建立加权的有向网络)。这在R中可以利用SNA等package完成,或者Gephi之类的更专一的network analysis software。然后在此基础上,分析若干帐户发布的微博关键词(会用到一些text mining技术,其R中的实现可以参见思喆大哥的这篇指导:http://www.bjt.name/2012/03/text-mining-in-r/),然后找到一个或者若干个符合目标群体特征的微博帐户,在此基础上按照links顺藤摸瓜、获取更多相关的帐户。一切的影响力之类都可归结于一个数学上的distance的measure问题(think about real analysis...),而加权网络中计算这些并不困难(也可以加入随机的扰动项进行多次模拟得出结果)。最后,自然可以计算哪些微博帐号的转发会对某些目标群体产生极大的影响——不仅仅是定量计算,更可以进一步归结于一个有约束的最优化问题。一旦一个问题成为数学问题,在R中无论是模拟还是求解都不是难事。最后结论会告知,哪些微博是应该去争取转发的(无论是通过金钱还是内容本身的意义去说服)。

类似的思路,能做的事情还有很多。譬如,哪怕是作为一个个体用户,我只关心某些事情发展的潮流(比如那些会影响股市的情绪),利用R也可以在浩瀚的微博信息中更准确的找出我应该关注的信息源(可能不是全部,或者出于实时性要求无法做到全量检测),即排除噪音,然后这些信息源所提供的信息便有可能给我一些方向上的指导,而不是盲从大众媒体的言论。

利用微博作为新兴交互渠道的办法就更多了,背后依赖的数据分析知识也会相应有所调整。R作为一个开源、免费的工具,其已经提供的众多packages可以迅速的帮分析人员实现相应的想法,而不是把大量的时间用于无休止的编程以开发相应工具。这样,R便可以在一个想法探索阶段找到相应的数据支撑和信息。有了想法、去实现之后,很多时候还需要评估效果(这里可以参见去年写的关于社会实验的东西:演讲幻灯片),这方面简单的计量工具更是可以在R中迅速实现、并可以轻易实现可重复的评估和报告(简单的分析模型和结果重复可以利用已有的脚本,偏正式的报告可以借助当年的Sweave和进化版如knitr)。

总而言之,我一直觉得数据分析考察的是分析人员本身的统计知识、业务知识和具体学科知识的积累,以及一些对于数据的敏锐直觉,而不是编程能力。若有想法便有其他人可以帮忙实现自然好,但是有时候一味的借助他人往往存在着时滞,一闪而过的很多想法便成了过眼烟云。不是我不提倡团队合作,只是找到这么一个完美团队的成本实在是太高,更多的时候还是不得不自己做很多事情。团队的合作程度在现实中往往会有所降低,分工模式也会更加的偏向项目执行流程(比如分析->成熟模型->自动化系统),而不是在分析阶段就完全的实现了各展所长(那样对每个成员的要求可能都太高了~)。在效率和效果兼顾的现实情况中,R的贡献自然轻易的凸显。我想这也是这两年R越来越热的趋势背后的推动原因吧。Labor division problem with constraints 🙂 分工最优化的必然结果。

------remaining challenges ------
当然,有一个回避不了的问题就是大数据量……R现在面对大数据依旧有些吃力,而network的数据往往又是一个N*N维的(N为个体数量),更加大了对于空间计算量的需求。这方面,解决思路一方面是把线性的计算分块化、分批跑;对于非线性的计算,更多的则可能是先抽取一个小样本,然后确定一个或几个模型,最后利用其它高性能计算工具来实现最终在整个大数据集上面的运行。