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为个体数量),更加大了对于空间计算量的需求。这方面,解决思路一方面是把线性的计算分块化、分批跑;对于非线性的计算,更多的则可能是先抽取一个小样本,然后确定一个或几个模型,最后利用其它高性能计算工具来实现最终在整个大数据集上面的运行。

Categories
经济、IT观察与思考

发改委打的飞机和引发的地震

最近比较流行的段子,发改委继打完飞机后,又开始引发地震了~

打飞机的段子(截取):

2009年3月25日
发改委决定将汽、柴油价格每吨分别提高290元和180元
当天,美国空军一架正在执行测试飞行F-22“猛禽”战机加州爱德华兹空 军基地以北六英里的地方坠毁。
2009年6月1日
发改委发布调价通知,上涨油价
当天14时,一架载有228人的法航空客A330起飞不久后与地面失去联系。机上228人全部遇难,其中包括9名中国 人。
2009年6月30日
发改委再次发布调价通知,上涨油价
一架载有154人的客机在从也门前往科摩罗的途中坠毁
2009年7月15日
发改委就成品油价格问题发表说明,称价格未调整到位
当日,伊朗里海航空公司的一架客机在该国西北部城市加兹温附近的村庄坠毁,机上153名乘客和15名机组人员全部遇难。
...

当然很大程度上反映的是大家的情绪,但是这样的东西真的可信吗?“巧合”真的有那么多吗?让我们看一眼最近几年油价调整和飞机失事的记录(完整数据集在这里:oil_price.xlsx,数据来源分别是Wiki的失事记录和搜狐的油价调整记录)。

53d5aaeajw1dr8ovj1649j

(最上面的一行蓝点是涨价;中间是降价;最下面一行红点是飞机失事。点击上图查看大图
看出来了吧,首先呢,发改委的油价调整是有涨有跌的。可是这条新闻明显只挑着涨价的来说事儿;然后,飞机一年失事也得有二三十次,发改委调价也就是一年几次……换言之,发改委要想挑个飞机完全不失事的时间区间,还真有点难!

既然这个明显是选择性样本,那么我姑且臆测一下几个结论:
1. 发改委每次降价,也是在打飞机。
2. 发改委不涨不降油价,飞机也照样掉下来无误,所谓躺着也中枪啊~

其实本来就是无影儿的事儿,真的是黑的也能说,白的也能描。翻手为云,覆手为雨。不要轻易相信所谓的“统计数字”哦!如果你信这种所谓证据,我再给你抓一把出来~什么稀奇古怪的东西都能被我关联起来,亲,你信吗?我还能找出更漂亮的看起来更科学的模型来包装一下,让你觉得“超级专业”……真的是,选择性样本误人啊!

好吧,其实我写这个的目的,只是想说,不要轻易被这种“别有用心”的统计数字骗到!统计一下估计这连个correlation都不算,新闻稿却写的信誓旦旦的跟前因后果似的(关于causality inference的事儿,还敬请期待COS上dingpeng兄的大作哦!)

同样的道理估计也适用于下面的段子,证据我就先偷个懒,不找了。

墨西哥又地震了!!因为发改委又涨油价了 2010年4月13日发改委上调油价玉树7.1级地震。2010年10月25日发改委调油价,印尼苏门答腊岛7.2级地震。2010年12月22上调油价,日本7.4级地震。 2011年2月20日发改委调油价新西兰6.5级地震。2011年4月7日发改委上调油价墨西哥发生6.5级地震日本再发生7.4级地震

还有这个,我窃以为数字不是这样的,也没去细细的追本溯源。大家可以帮忙斧正一下。

---
题外话:虽说这里说了这么多,只是想证明这样的段子荒谬之处,但是背后其实可以理解的是,这只是大家宣泄情绪的方式而已。物价上涨、生活成本增加,林林总总,总要给人出气的机会的。不过,也只能出出气而已,深刻的改变需要太多太多的努力,也可能不是一挥而就的,需要量变产生质变啊。

Categories
事儿关经济 互联网产业观察

大数据的潮流?

一边是流浪的心,一边也是在思考一些现实中的问题。还是感谢昨天那位朋友耐心的跟我扯了一下午,说到了一个很有意思的话题,“我们为什么需要海量数据”?或者说, why and how does big data make a difference?

当时说的统计/计量分析的应用很简单,无非是做一些销量、价格弹性和资源投放的预测与优化罢了,典型的咨询业务。然后我就好奇的问了一句数据源,无非是nielsen或者iresearch的市场调查数据之类的,或者厂商自己的一些销量和价格数据。这些数据往往被aggregate到一定的程度,所以一般都是long panel(T>N),以城市为单位之类的。

这样的数据量,肯定没法跟互联网或者电商的individual records相比。百万或许都是小数目。当然咯,我们多少也会把这些原始数据做一个aggregate,比如以每人每日为单位(当然单位的选择取决于具体项目的关注点),但是大多数还是wide panel,N>>T。这两种panel data的(计量)模型显然就不一样了。一个会更多的沿袭time series的分析路子,什么auto-regression、unit root之类的;另外一个要沿袭的更多是cross-section的方法,关注大量个体的特性。

对计量的一个争议就是 ATE (average treatment effect),尤其是做data mining的那些人。明明individuals之间千差万别,计量怎么可以这么简单的取个平均呢?不过一个辩护就是,关注的问题太不同了!data mining很多时候关注的是针对每个个体选择适当的信息传递,而计量模型背后往往跟随的是一个统一的strategy or policy making。毕竟政策不可能太细化到每个人身上,针对这一点我现在越来越认同某个计量学家对于consistency的评价了:

(大意)我喜欢计量经济学,正是因为他对于政策制定的强力支撑。

况且,还有quantile regression可以做一个完整的系数分布估计呢!加之各种bayesian方法的引入……计量变得越来越宽容和好玩了。

最近思喆大哥发了一句感慨

要会技术(统计、机器学习、可视化、最优化),要懂市场(营销,产品,客户行为,渠道),要懂沟通(同事协同,上级汇报,对外呈现),工具要熟练(SQL、Excel、SAS、ppt),公司战略还要懂点,没准还要带团队,要懂管理……。OMG,我在说什么,不是MBA,是数据挖掘专家

可见现在一个资深的数据分析专家活得多么艰辛(题外话,我等consultant活得也格外艰辛啊,这些加上无穷无尽的出差 -_-|| ),而我后面跟的一句是“市场发展不成熟,分工不明确,相关领域人才太少的恶果”。没办法,只做模型和分析远远不够啊,太少人可以看懂并完美应用了,所以搞分析的不得不自己卷起袖子上阵,即当爹又当妈……

那么说到底,为什么现在big data这么火?为什么 quantitative analysts 对数据源这么 obsessing 呢?我的理解是,

1. 大数据可以很容易的aggregate到适当的level,从而灵活适应不同分析目的需求。而已经整理好的数据则无法逆向变通(既实话又废话)。
2. 大数据使得很多大样本的性质可以直接应用,需要依赖的模型假设大大放松,从而模型的选择可以更多的贴近分析目标而不是过多考虑数据本身的性质。
3. 大数据可以进行data mining(又废话了),从而不仅仅服务于单一的policy making,还可以实现定点、极端个性化的信息投递。说白了,就是既可以分析群体特性,又可以兼顾个人特质,像大海一样宽广的胸怀包容着不同分析的目的。
4. 大数据往往是第一手数据,格式整齐(要不搜集成本过高也没法搜集)、数据真实、定义明确,很容易进行data cleaning(一个反例:跟统计年鉴打过交道的童鞋们应该知道那东西有多么混乱,统计口径什么的千差万别,数据来源也未必可信)。这样的数据只要简单的编程处理就可以了,把研究人员从搜集数据的辛苦低层次劳动中解脱出来。
5. 大数据往往包含着传统数据源所无法提供的信息,比如GPS数据可以直接用于跟踪个体的行动路线。这意味着统计分析的结果可能可以被更加灵活的应用(idea -> result -> implementation)。关于这一点,Frank曾经发给我一个很好的summary,说的是大数据为发展(经济学)带来的新机遇:http://www.weforum.org/reports/big-data-big-impact-new-possibilities-international-development
6. 最后一点比较自私的,social network的数据往往都是大数据(得有links嘛),所以既然我的研究兴趣在那里,自然会更多的关注大数据。

那么,大数据的对于分析人员挑战在哪里呢?
1. 从噪音中找到有用的信息: 正如前面所说,大数据包含了太多个体的信息,所以有时候很难找到一个简单的总体指标。如何从噪音中挖掘有用的信息,对于统计分析专家的思路清晰要求度非常之高(Frank兄曾经对此做过一些简单的批判,业界的一些报告有时候无奈的直接把数据aggregate了,丢失了部分有用信息)。而我总觉得,对数据背景一定要有所了解才可以,不能是简单的大海捞针,还是要有直觉指引方向的。(只针对业界数据,制药行业之类的实验数据我没接触过,没有感觉~)
2. 大数据对于建模者的学术训练背景要求更高: econometrics, data mining等等统计分析方法,及其结合,往往意味着分析者需要有着良好的数据直觉。而这一切,往往离不开一个solid的学术训练背景。最简单的,如果不会C或者python之类的编程,不会R之类的统计软件,那对于大数据往往就在data cleaning阶段就束手无策了。而传统的数据集,我知道很多人就是excel手动做数据清理,然后扔到stata之类的软件中调用相关的命令(或者可以称之为函数)就可以了。大数据分析的门槛在提高。
3. 数据敏感性和隐私: 大数据往往来源于个体,这也就意味着data access往往被控制的很严,不可能向所有研究者开放。那么,研究者往往只能接触一个领域、一个公司的数据,而无法是非常全面的行业数据(比如,通信数据你要么有移动的,要么有联通的,不太可能移动联通的同时都给你)。这也多少造成了分析只能从一边入手(依赖双方数据的,比如game theory的实证分析,可能会有些困难)。

暂时先想到这些,或许日后还会补充吧,欢迎各种批判(我只是小小的井底观天而已,加上各种眼高手低、站着说话不腰疼)。其实有的时候,想想自己明明是 more into theories than empiric,但是也就被各种“拉上贼船”下不来了。至少我还是坚信,更难积累的是analytical sense而不是skills,后者更依赖时间而前者多少对天赋还是有些要求的吧。虽然也说,很多时候还轮不到拼天赋……

(p.s. 发现新版WP的全屏编辑模式很好用啊,很简洁明了令人可以专注写作!)

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
网络新发现

无知的受伤

真的觉得自己有的时候就是没缘由的狂妄,班门弄斧地在各种数学专业的面前卖弄……唉。不丢人就奇怪了。

一大早,一同学QQ问我一个很“深奥”的题,大概就是一群人在排队,怎么来比较快。当时我脑子转啊转,最多也只想到运筹里面涉及的星星点点的图论,然后在R里面弄了半天连穷举怎么举都没想出来……顿时感觉各种悲哀。

最后,忍不住去网上搜了一下,找到了出题教授的网站,然后顺利下到了一个solutions文件。当看到答案的时候,抽了一口凉气,Johnson’s algorithm?这是个神马东东?

果然,算法设计还是一个比较精妙的问题,像我这种连《算法导论》都没读过的人,怎么可能玩的转呢?最近不是很流行的在说,“以大多数人努力程度之低,根本轮不到去拼天赋”。哎!我就是好高骛远、无知使得自己到处丢人的典范啊。

好吧,我觉得还是有必要去读读《算法导论》了,至少这个Johnson’s algorithm我第一遍看wiki没看明白,没找到直觉和来龙去脉什么的。伤心啊。排队论排队论……算法果然水很深啊。