Categories
互联网产业观察 经济、IT观察与思考

[RAAT]第二话:如果,定格初见~

有句很煽情很酸的文字,叫做“人生若只如初见”,然后再随意的填上几个星星点点的省略号就可以了。初见,嗯,那么多人事匆匆,初见也显得格外珍贵了。有的时候,是不是一别,就不知道何时才能再相见?

如果,如果,你是一个软件的开发者或者网店店主,那么,你和每一位顾客的初见,又是什么样子呢?这个时候第一印象——第一次使用体验或者第一次购买体验,往往是决定了这到底是个回头客还是一去不复返。顾客都是懒的,他不会那么主动的给你提供那么多反馈,那么,你可以怎么了解到他的更多信息呢?如果你自己开发一个软件,那么恭喜,每一次和用户数据交互的时候,你都可以记录一些信息。然后这些信息累加起来,就成为了你们之间的来往信息。可问题是,就算打电话我也不能把她说的每句话都记住啊,更何况来来往往那么多数据。应该保留哪些呢?

好吧,不效仿什么“甄嬛体”了,还是“说人话”吧。继RAAT第一话说了说微博数据与network effect玩法之后,现在的问题是:

如果你是一个app的开发者,你应该记录哪些用户反馈/交互的信息呢?

这个问题是一位创业青年过年的时候问我的,到现在我也只能理出来一个简单的回复,真的是有些抱歉。同样的类似的问题,或者更general一点用学术化的语言来表达,那就是,

设计一个社会实验/survey的时候,你会问哪些问题、记录那些反馈呢?

或者说,当你面对一个回归分析问题的时候,

你会把那些变量放入回归方程呢?你关心的是哪些纬度呢?

这个问题可能是一个非常ad hoc的,往往需要根据一个具体的产品、业务或者目标来因地制宜的选择。比如,我想提高落园用户的粘性——好不容易来一次,多看几个网页呗,那么除了版式设计什么好看一点之外,我还得多观察一下博文之间的关联性——读过XX的,还倾向于点击XXX。这样,“相关博文”那里就可以优化一下,而不仅仅是现在这样基于tags的关联了——嗯,根据已有用户的阅读行为,来建立collective intelligence记录,然后向新的访客推荐。挺好的不是么?那显而易见的,为了达到这个目标,我需要记录每个访客(比如ip或者cookie识别),landing的网页及其来源、停留的时间、接下来点击的动作等等,大多数指标都可以在google analytics里面看到。

那么对于一个app,用户识别首先不是大的问题——需要购买嘛。这样的话,就不用劳神记录cookie什么的了。然后,从用户体验的角度,往往需要经历一个新手->热衷体验->维持一个稳定的访问/使用频率。依旧以我的这位朋友的产品为例,他们的产品叫做“我有啦”,是一个在线分享自己所拥有的物品的社交平台,类似于一个“物品签到”的概念。现在有个很具体的问题,怎么充分调用network effect来增加新用户、减少流失用户呢?这个过程中,需要什么样的数据呢?

所有基于SNS的产品推广的时期最重要的怕就是利用社会网络自身的network effect扩散特性,最成功的例子大概就是开心网当年利用病毒营销异军突起,利用虚拟游戏当中的奖励刺激用户去邀请自己的亲朋好友加入。然后,开心网的社交游戏特性,又进一步加强了这种朋友联系对于用户使用粘性的正作用(network effect在社交游戏中成功的例子还可见于最近很火的猜词游戏Draw Something)。从直觉来说,用户最乐意向他的朋友们推广一个应用的时候,应该是他使用热度最高的时候--尤其是这种以“炫富”+“拼爹”为卖点的app,不赶紧向自己周围的朋友们炫耀怎么可以呢?

为了识别一个用户的成长轨迹、以便于在他热度很高的时候给予一些奖励(尤其是虚拟地位勋章等等),来刺激他拉自己的朋友进来攀比,必要的数据记录自然是用户每天登陆的时间、地点,然后一连串的点击行为来判断他到底是在摸索这个软件怎么使用还是已经成为了一个熟络的高手(包括错误操作的提示和记录),这样就可以完成初期对于用户成长周期阶段的识别(被用滥了的CRM-customer relation management-系统基本概念之一)。一种理想的情况是,如果根据已有用户的成长记录,发现用户的每日使用时长或者每日点击量呈现S型曲线增长,区别只是增长基数、斜率不同,那么一个简单的函数拟合预测便可以得知用户使用高峰时点的来临,然后采取相应的激励措施。另外一个需要强调的是,在采取了任何策略之后,务必须要关注的就是用户的反馈,这样会知道上一期时点的选择是不是最优的——一种事后的反馈和假设参数的更新。

除了激励用户推荐给自己的亲朋好友之外,network effect另外的应用便是在用户呈现流失倾向的时候,利用朋友的力量来提醒他回来看看。这里有意思的是,根据最近一个基于facebook的研究显示,并不是“来邀请加入的朋友的数量”而是“这些朋友分属的圈子”对邀请成功率有更决定性的影响,因此提醒的时候需要发送的内容也应该是该用户最感兴趣的商品类别以及他最关心的朋友。这样,需要记录的就是他每次访问、评论物品等展现出来的行为,以及他朋友们的互动记录。

到此,直接的一种利用社交圈子的营销机制已经建立,后面进一步利用"用户-物品"双重联系的网路模型还可以进一步优化。暂时直觉只到这里。于我看来,一切所谓的营销都是一个营销资源最优化的投放问题:在最优的时间、对最合适人、采取最优的策略。如是来看,其实什么基于网络与否也只是对资源投放效果的一个预估,和其他一般的营销总体思路并无二致(p.s. 有意思的是,最近还被问到诸如电商 coupon 券应该怎么发放…一样的道理嘛,为了最大化ROI自然是在已有数据的基础上,分析并预测式选择反馈最大的人群,促成其关键购买行为成长环节的转化)。

上述局限:只能知道使用自己开发的产品的用户信息,无法得到并利用其他业务的使用信息,从而偏好数据来源受到极大局限,进而影响全方位对用户的偏好识别、把握以及差异化新产品的推广。换言之,交叉推荐等不可行。

这一话更多的是一些具体的问题和可能的对策,暂时不涉及技术实现策略。在最后一话,针对前两话涉及到的数据搜集及分析,将会尽量给出相应的解决策略,还请稍待片刻。

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