Prismatic:用机器学习分析用户兴趣只需10秒钟

摘要:斯坦福大学和伯克利的四位年轻的计算机科学博士创立了Prismatic。他们不仅是科学家同时也是实干家,他们放弃了Hadoop等重量级框架,通过过程化语言的深度使用,简单并且高效的实现了大数据的处理,高度并发,实时等优异的特性。

这篇文章主要描述的是Prismatic公司系统架构,作者是Todd Hoff,本文出自Todd对Prismatic的程序员Jason Wolfe的邮件专访。

关于Prismatic,首先有几个事情要说明下。他们的创业队伍很小,仅仅由4个计算机科学家构成,其中的三个都是年轻有为的斯坦福以及伯克利博士。他们是在用智慧解决信息超载这个问题,然而这些博士也同时担任着程序员的角色:开发网站、iOS程序、大数据以及机器学习需要的后台程序。Prismatic系统架构的亮点是如和使用机器学习实时地解决社交媒体流的处理问题。由于商业机密的原因,他没有透露他们的机器学习技术,但是我们可以通过架构看个大概。Prismatic创始人之一Bradford Cross把Prismatic的系统简洁地描述为:“它是一个提供大规模、实时以及动态的个性化信息排名、分类以及分组功能的综合系统。”接下来就把这个系统的架构展现给大家。

Prismatic主要功能是发现我们的兴趣,为我们推荐阅读

今天你应该读点什么呢?任何一个现代人每天都会陷入这个困境,大家通常使用一些很隐秘的途径去找到自己想要读的东西:Twitter、RSS、Facebook、Pinterest、G+、email以及Techmeme等这些信息源。Prismatic回答了“今天我应该读什么?”的问题,Jason Wolfe慷慨的同意并且详细地描述下他们正在使用的解决方案,言语中包含了许多时髦的技术名词,例如机器学习,社交图谱,大数据,过程化编程以及事实需求等等。然而结果是他们的方法更隐秘,但和其他一些相似应用不一样的地方在于他们会发掘你的兴趣,无论这些兴趣在你的信息中藏得有多深。

正如大家预料的,他们的做法有点特别。他们选了Clojure做为开发语言,它是一个编译成Java bytecode的现代Lisp语言。主要目的是充分利用过程化语言去构建具有丰富粒度,结构自由的程序,从而满足各种问题带来的特殊需求。列举两个他们用到的过程化语言的优点的例子:第一个是他们几乎每个地方都使用图库。对于每个用户来说,他们的图形计算可以被称为低延迟,流程化的map-reduce任务集;另外一个例子是他们使用子图实现了模块化的服务配置。

他们把系统设计的焦点放在过程化开发上来,避免了使用像Hadoop那样的巨型框架,转去使用小型的,这使得系统更可靠,更容易纠错,更容易扩展以及更容易理解。Prismatic的机器学习做法的难点在于要求一个非常长的训练周期。需要指出的是:首先,获得优质分析源内容并不需要多少时间;其次,使用基于机器学习的推荐系统需要对用户从幼儿到现在的一生的所有数据进行训练;这个可扩展的思维数字模拟系统扮演着信息的收集者以及生产者双重的角色。

图:越来越多的应用开始关注用户的阅读推荐

统计数据

  • 现在每天有几千万篇文章、博客以及其他一些内容通过Twitter,Facebook,Google Reader以及互联网发布。
  • 但是仅仅需要用户登录时的那几秒钟,Prismatic就能够使用他们之前的阅读历史进而去分析用户的兴趣,然后推荐阅读,使用用户在社交网络上的活动,从而将联系人发表的、符合用户胃口的文章推荐过来。同时,Prismatic也会记录用户在它本身上的动作,也将它做为分析的一个来源。
  • Prismatic只需要数十秒钟去访问用户的个人主页,通过和用户兴趣模型对比,便可以分析出用户最感兴趣的东西。
  • 现在每周有数百万的优秀文章通过Prismatic成功分享给用户。

平台

  • Prismatic的主机托管在AWS的EC2上,使用Linux操作系统。
  • Prismatic99.9%的后台通道和API服务都用Clojure开发。
  • Prismatic所有的重量级框架部署在JVM中。
  • Prismatic使用MongoDB存储服务器参数和用户分析数据。
  • Prismatic使用了MySQL。
  • Prismatic使用了S3。
  • Prismatic使用了Dynamo。
  • Prismatic将重点放在开发能解决特殊问题产生的需求的代码上。

数据存储和输入输出

  • 和典型的结构不同,Prismatic的服务都围绕着数据而设计,可以提供实时读写数据的能力。
  • 大部分数据都直接在后端管道之间传输,不会和磁盘发生I/O。
  • Prismatic把数据保持在离CPU尽可能近的地方,这样就让API的请求几乎没有IO延迟,同时把API绑定到CPU上,巧妙的扩展了系统的规模。
  • Prismatic使用了许多现成的解决方案:MongoDB,MySQL以及Amazon的S3和Dynamo。每个都是经过对实际需求仔细研究的,包括规模,接入模式和数据存储相关的其他特性。

发表评论

电子邮件地址不会被公开。 必填项已用*标注