2012年12月26日星期三

PHPCMS V9开放框架中的控制器


PHPCMS V9开放框架中的控制器



phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名成就是文件名+.php,例如一个名为mytest的控制器,那么他的命名为mytest.php即可。控制器类默认继承系统的函数库,可以直接使用。控制器类的类名称与控制器文件名必须相同。
如果您创建了一个mytest.php在test模块下,那么我们在浏览器里面输入URL:http://www.yourname.com/index.php?m=test&c=mytest
下面是一个控制器类的基本格式,在构建模块部分会具体讲解
<?php
                defined('IN_PHPCMS') or exit('No permission resources.');
                class mytest {
                   function __construct() {
                   }
                  public function init() {
                     echo 'hellp phpcms v9,my name is defalut action';
                   }
                }
?>
如果你添加的控制器类继承了其他的类,你要小心你的方法名不要和那个类中的方法名一样了,否则你的方法会覆盖原有的。

PHPCMS V9开发框架中的模块


PHPCMS V9开发框架中的模块

phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块。即url访问中的m示例:http://www.yourname.com/index.php?m=content 那么您访问的就是phpcms/modules/content 这个模块。
如果创建一个,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。 

PHPCMS系统MVC设计模式的入口程序


PHPCMS系统MVC设计模式的入口程序


PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户可以直接请求运行的。
phpcms v9的入口程序包含如下几行:
index.php
<?php
 define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
 include PHPCMS_PATH.'/phpcms/base.php';
 pc_base::creat_app();
?>
这段代码首先加载了 phpcms 框架的引导文件 base.php,然后它根据指定的配置文件建立了一个 Web 应用实例并运行。

云云来了,百度怎么办?


云云来了,百度怎么办?
  随着SNS的兴盛,搜索引擎的社会化趋势再明显不过。传统的搜索方式已经越来越难满足人们的需要。搜索引擎不仅需要收录来自社交网络的内容,也需要参考社交网络的用户数据对搜索结果进行优化。只有借助社交网络的数据,搜索引擎才能提供更准确更有说服力的结果。搜索引擎们显然明白这一点。
  谷歌一直就想得到Facebook的用户数据,可后者偏就不给,Google甚至还付费给Twitter用来及时获取其内容。后来Google推出了自己的社交工具Google+,并在搜索结果中加入越来来自Google+的信息,这又引起Twitter的不满,合作终止。
  百度也曾和新浪微博合作,推出实时搜索,显示来自新浪微博的最新结果,可牌巴子发现如今实时搜索已经无影无踪,原因不详。而据内幕人士透露,新浪微博一开始是拒绝被百度收录的,后来百度收录其他几家微博,新浪迫于被边缘化,才和百度合作。可见新浪微博和百度之间的合作并不一帆风顺。百度也曾推出自己的SNS产品——百度说吧,可是大多数中国人从来就不知道这玩意存在过。
  搜索引擎的社会化趋势不但搜索引擎们明白,SNS们也心知肚明。而对信息的检索从古至今就是硬需求,要不然也不会有那么多的字典和词典。在网络时代信息检索就体现在搜索引擎上。
  所以,SNS们会放着手里的大量用户数据和内容白白不用吗?Facebook已经明确表示要做搜索引擎,Twitter也有做搜素引擎的苗头,新浪微博则和破天而出的云云搜索进行深度合作。
  云云搜索的团队是由谷歌的前工程师组成,号称是第一个社会化搜索引擎
  随便用用云云搜索,大概就能明白什么叫深度合作。很多搜索结果下面都会显示有多少条微博引用了这个结果,你可以打开这些微博,还可以把搜索结果转发到多个社交网络上。云云还会参考新浪微博中的好友关系为用户提供个人化的搜索结果。此外,新浪微博还将把微博搜索换成云云搜索。
  这不同于谷歌和Twitter之间时好时坏的合作,也不同于新浪微博和百度之间浅层的合作。最根本的不同是,新浪在云云搜索创建之初就给予其投资,成为其一大股东。这意味着云云搜索打小就和中国最流行的社交网络在一个碗里吃饭。
  相比云云搜索,百度的前景则不太妙。首先,它不像谷歌那样拥有自己的社交工具,所以只能依仗别人。可是,一方面,它本身未必愿意为别人的SNS产品做嫁衣,另一方面,有了云云搜索的新浪微博也未必愿意合作。
  而云云搜索则具有两大先天优势:来自谷歌的技术团队,以及和新浪微博的深度合作。这样,云云不仅解决了当今做搜索引擎所面临的技术问题和社会化问题,还能借助新浪微博平台获得大量用户。除搜索引擎外,云云目前还有云云社区、云云微博订阅等产品,这些都可视为强化自身品牌的重要步骤。
  云云恐怕才是百度的真正敌人。

谷歌不愿错失机会 Android或不再成它人独享


谷歌不愿错失机会 Android或不再成它人独享

发表于2012-12-24 08:5911641次阅读| 来源CSDN29 条评论| 作者张勇

摘要:当传闻谷歌秘密开发Xphone手机时,笔者头脑里随即意识到:谷歌不愿错失机会,不愿Android系统的红利被它人独享。是的,这个世界不是革他人的命,就是被他人革命,与其让机会悄悄溜走,还不如更好地利用机会,于是谷歌不愿Android成它人独享的理由也就那么顺理成章了。
传谷歌秘密开发Xphone手机
当去年谷歌以125亿美元买下摩托罗拉移动公司时,一些科技评论员做了大量的推测称,谷歌的收购一方面是看上了摩托罗拉众多的移动电话专利,另一方面也是打算利用摩托罗拉的机顶盒业务进一步将谷歌TV推向大众,谷歌不会损害到众多Android合作伙伴的利益。
但事实的确如此吗?在今年8月份,谷歌首先对摩托罗拉移动公司展开布局的第一步,宣布在全球范围内削减20%员工,随后谷歌又于这个月20号宣布,它以23.5亿美元的价格正式将摩托罗拉机顶盒业务出售给Arris公司,迈出了更为关键的一步,其最终目的似乎遥指更具创新性和盈利性的终端产品。
谷歌对摩托罗拉动作频频,先是裁人,后是抛弃了摩托罗拉的机顶盒业务,这些是为了什么?难道只是再次印证了谷歌收购摩托罗拉真的只为专利?然而当传出谷歌正秘密开发“XPhone”手机时,人们总是恍然大悟——事实总是与人们的揣测大相径庭,谷歌的“野心”终于暴露。
据悉,谷歌主导的这款代号为“Xphone”的手机将有众多创新之举,不仅会在摄像头和图片软件上狠下功夫,同时也会采用新材料陶瓷和可弯曲的柔性屏。另外,为了重新发明和定义智能手机设计,谷歌还调派了几十名高管和产品经理进入摩托罗拉移动。
虽然谷歌此前向HTC、三星、LG等手机厂商一再保证,收购摩托罗拉后Android对大家仍将是一个机会平等的平台,但谷歌主导摩托罗拉开发“Xphone”手机却峥嵘地标志着一个巨大转变——谷歌不愿再让它人独享Android的红利。
机会稍纵即逝,谷歌不想错失
自从谷歌创始人Larry Page和Sergy Brin在斯坦福大学学生宿舍中研发出全新的在线搜索引擎,谷歌从那时起就开始逐渐成为一家伟大的互联网公司,它开始带来“革命”,这不仅让昔日的搜索巨头雅虎从此落寞,也成功地定义了人们互联网的新生活。
然而历史总是如此惊人的相似,不是革他人的命,就是被他人革命。昔日的互联网搜索巨头雅虎如此,手机巨头诺基亚也是如此。是的,随着乔布斯2007年推出iPhone,苹果软硬结合的策略大获成功,世界的一切都变了。
微软开始推自有品牌产品,开始调整方向,向软件结合的“设备+服务”公司转变,以前几年一次的系统换代或也将被每年升级所取代(具体请见:或免费升级:微软2013年推Windows Blue系统),微软如此,谷歌为何不如此?
虽然谷歌是家搜索巨头,它重心是要获得更多的数据,让更多的手机设备用上Android系统是它一直追求的目标,但三星在与苹果专利官司未了的情况下,三星电子第四季度居然还取得了82.3亿美元的营业利润。谷歌不淡定了,开始耐不住寂寞了,和微软一样不再甘心只做一家仅仅提供软件的公司,它不能错失,不能让机会悄悄溜走,尤其是手里还有个硬件经验丰富的摩托罗拉移动公司。
更重要的是,在与苹果和微软激烈的竞争中,谷歌不再像以前那么自信了,虽然目前它仍是家互联网大公司,仍是搜索巨头,但是否会被突然革命,这真的说不准。是的,当命运不再那么有把握掌握,未来前景不再那么清晰明朗,在移动上谷歌采取这样的策略似乎也是顺理成章的事情。

Tim Yang:后端技术这一年


Tim Yang:后端技术这一年

作者: baiyuzhong分类:云计算  阅读:10,016 次添加评论
文/杨卫华
2012年后端相关技术发生了一些重要的变化,在本年度接近尾声之际,我将简单地对后端的相关技术进行回顾并对其未来的发展发表一些看法。
云计算的意义与选择
云计算降低了创业门槛,提高了生产力。最耳熟能详的故事就是Instagram利用Amazon云服务来实现其架构。在2012年8月,其每日活跃用户已超过老牌网站Twitter。据称,在这么大的一个系统中仅有3名工程技术人员(Instagram被Facebook收购时共13名员工)。可见,云计算平台在这个新兴应用的快速成长中发挥了多么重要的作用。
2012年,国内的新浪、阿里巴巴等公司的云计算平台都得到了较快的发展,很多新兴应用也开始选择云平台,享受到节约初期硬件投入的成本、时间成本与人力成本的好处。而大型应用在云平台的选择上则表现谨慎,目前国内可见的迁移到云平台的 典型案例还不多。考虑到国情的特殊及对国内云厂商的诚信,大型系统对云计算平台存在数据安全的顾虑,担心数据的私密性能否得到保证。另外,在数据可靠性方 面,虽然不同的云平台对数据的可靠性都有一定的SLA可用性承诺,但目前的云平台运营时间都较短,数据可靠性需要更长的时间来验证。
在未来一年,除一些数据安全性不太敏感的应用,如图片CDN及部分垂直应用的数据外,开发商仍然面临两难的选择。一方面云计算的数据安全顾虑不能完全消除,对公有云的选择存在顾虑,关键核心业务很难迁移到云平台上。另一方面,如果选择私有云,针对大部分应用场景自行搭建一套类似OpenStack的体系,并不能带来运营人力成本及时间上的收益。
如果把未来技术方向按使用云和不使用云进行区分,有以下几种做法:
  • 使用Amazon Web Services平台;
  • 使用OpenStack或者类似开放公有云网络;
  • 使用OpenStack或者类似开放体系搭建私有云;
  • 仅部分使用云或不使用云。
前两种可能短期内很难有获得广泛安全信任的厂商出现,而第三种私有云对于大部分组织来说发挥的价值有限。虽然所有开发厂商都希望生产效率能得到提高,以便适应业界的用户需求及行业态势的瞬息万变,在业务上赢得先机,但如何利用好云计算平台是摆在国内云服务厂商及应用开发商面前的一道难题。
大数据与离线计算市场
过去一年里,大数据在业界得到了飞速发展,行业也对大数据的方向有了更深刻的认识。在公有领域,大数据集中化的趋势比较明显,百度、腾讯、阿里巴巴、新浪、360等公司掌握了互联网领域最有价值的数据。在数据利用及挖掘方面,由于商业化的成熟,搜索引擎走得较早,类似用户的喜好、年龄、购买习惯、性格等都可以通过搜索的历史数据分析得出。但在更多其他领域中,数据的价值才刚刚体现。在2012年,我们看到了淘宝指数这样的数据产品上线,但相对整个电商或者行 业数据挖掘来说,目前展现及利用的只是冰山一角,更多有价值的信息需要进一步构建体系去挖掘与展现。在社交网络如微博中,由于内容完全由用户创造 (UGC),用户的交互及参与度更高,相关数据挖掘的空间及价值更大。在微博上,目前的数据价值主要服务于个人消息流阅读,而在未来,经济、金融、传播、 社会科学等多个方面的更多数据的潜力有待挖掘。
开放平台与应用市场
在通用应用领域,由于用户的使用时间集中停留在几个大的平台上,独立的应用脱离这些平台很难获得快速发展,因此未来的所有新兴应用,需要考虑好如何利用开放平台的基础来获得更快的发展。由于平台应用的托管需求,开放平台、云计算平台与应用产生了一个稳定的组合。开放平台提供API及服务体系来帮助应用访问数据及获取用户,云计算平台解决应用托管及扩展的问题,应用则可以低成本地转化创意及获得收益。目前开放平台厂商从提供IaaS到PaaS不同级别的服务,而应用开发商可利用PaaS平台来协助进行更多精细化的运营。
但开放平台目前还存在若干不足,从平台开放规则来看,大部分开放平台对于开放规则并没有明确的约定,因此,应用厂商可能担心开放平台的开放力度和政策的延续性。另外,从应用角度来看,目前大部分开放平台的应用还是以浅层次应用为主。浅层次的应用通常以获取平台的流量入口为主要目的,例如微博开放平台中,这类应用以内容推广或向好友发送邀请等方式获取流量。而在强调个性化及用户体验的时代,这种应用思 路通常效果不佳。从开发角度来看,大部分开放平台的文档、问答、社区、工具等配套设施存在良莠不齐的现象,大部分重量级的应用通常会通过内部的渠道获得技 术支持,但这对于小的开发商并不是一个不利因素。
在技术层面,开放平台一直面临开放与安全监管问题,未有效管理的开放会造成用户对开放平台 的不信任,进而也会影响整个生态圈。目前成熟的开放平台大多采用类似Facebook或微博这种基于OAuth Open API的方式,而OAuth协议本身也需要跟随业界的发展去改进。随着移动应用的飞速发展,未来移动方向的开放平台目前已经看到不少新的尝试,或许更多不 同的开放平台模式会在国内产生。
计算机语言
根据业内权威的Tiobe的计算机语言排名, 编程语言在过去一年并无大的变化。在服务端领域,依旧是以C/C++、Java、PHP开发语言为主。PHP解决了Web快速开发的需求,C/C++以高性能网络服务为主,Java则擅长处理规范化的业务逻辑并且也有不错的执行效率。对于行内的新人来说,选择任何一门老牌语言都是一个不错的选择。
从趋势来看,几年前受到小范围关注的函数式编程语言并没有得到业界的采用,选择并坚持使用Erlang、Scala等语言的公司并不多。而被Tiobe在 2009年视为黑马的年度语言Go,也未能得到足够的发展,目前的排名被挤出50名之外。计算机语言领域缺乏变化,一方面老牌语言形成的工具、框架、体 系、生态是影响计算机语言选择的主要原因;另一方面,由于云平台出现,在一定程度简化了应用开发的复杂度,因此这些语言的开发效率的瓶颈并不严重。
数据库
虽然身处大数据时代,但大部分业务在线实时处理的数据依然存在关系型数据库如Oracle或MySQL中。与之相关的是,技术人员需要思考未来数据是使用关 系数据库存储,还是要迁移到云存储的方案上。大部分云存储的缺点通常是IOPS(即每秒能处理的事务数)偏低。而使用传统的解决方案,存储的伸缩性、管理 成本又是一大问题。
在数据库领域,一直都是国外系统占据垄断地位,而我们也看到国内一些大型的厂商(诸如淘宝、腾讯等)在利用自身的技术力 量进行定制的数据库与存储方面的基础平台或组件的研发。虽然存在一些争议,但自定义的组件可以根据业务场景进行特殊的优化,一方面可以提高性能及单位资源利用率,另一方面在极端情况下可以有更稳定的表现。另外,这些组件由于对专业能力要求高,可以吸引更多高端的人才加入,而这些人才未来可以给组织带来更大的贡献。
作者杨卫华,新浪微博技术总监,负责设计新浪微博基础平台架构,解决新浪微博发展中遇到的各种技术瓶颈,并致力于打造业界一流的开放平台。

下一代个性化推荐系统


下一代个性化推荐系统

作者: baiyuzhong分类:云计算  阅读:6,187 次添加评论
文/王守崑
本文结合技术及社会需求发展的大背景,讲述了当前推荐系统的价值及所面临的挑战,并指出了下一代个性化推荐系统的设计思路及需要注意的问题。
作为个性化推荐系统核心的协同过滤(Collabora-tive Filtering)算法,是Goldberg等人在1992年的一篇学术论文中最早提出的。他们在这篇文章中提出一种方法,在一个新闻组中,根据 用户下载的新闻计算他们之间在口味上的相似程度,并利用这种相似程度为他们进一步推荐相关的新闻。这也是最早期的个性化推荐系统的雏形。
20世纪90年代中后期,随着电子商务的兴起,个性化推荐系统迎来了第一波高潮,几乎每个大型电子商务网站都把个性化推荐作为重要的营销手段之一。更有文献表 明早期Amazon的35%销售增量都来自它的推荐系统。Amazon的几位科学家和工程师在2000年发表的一篇关于“基于条目的协同过滤”的论文也成为了个性化推荐领域最基础的文献之一,是学术研究与工业实践相结合的典范。之后越来越多的研究者和企业界的工程师投入到了个性化推荐系统的实践中。
21世纪,互联网领域两个根本性的变化使得个性化推荐系统需要面临新的挑战。
第一个变化是随着Web 2.0的兴起,个人用户逐渐成为网站的中心。用户乐于在网络上建立和分享他们的社会关系和兴趣爱好,展示个性。网站的创立者也更重视对用户的基础数据的收 集和分析,从而全方位地满足用户的需求。与传统的以信息为中心的Web 1.0的组织方式相比,Web 2.0强调以用户为中心,对个性化推荐系统的发展起到了极大的促进作用。因此,几乎每个具有一定规模的Web 2.0网站都会建立用户模型,甚至还涌现出不少以个性化推荐为核心的服务。这使得个性化推荐系统的研究和实践获得了非常大的进展。
第二个变化是互联网越来越深入我们的真实生活。与早期的互联网用户不同,如今人们越来越习惯在网络上使用真实身份,维持真实的社会关系,分享真实的生活轨迹。互联网不再是虚拟世界的代表,而是真实世界的一部分。这使得网站的创立者能够更准确地掌握用户的各种信息。而用户对个人隐私的关注也使得工程师在使用这些信息时不得不更加慎重。
对个性化推荐系统来说,这些变化是一把双刃剑:人们提供更多的真实信息有利于提高推荐精度;而同时人们对隐私和信息流动 方向的关注为推荐系统如何使用这些信息设置了更高的门槛。个性化推荐系统不但要考虑推荐的精度,还要考虑在社会网络中信息的来源和用户对这些信息微妙的情 感因素,而这些因素在算法中往往是难以建模和衡量的。
对个性化推荐系统从业者来说,这既是巨大的市场机会,也是前所未有的挑战。如何抓住机会、应对挑战呢?本文试图从当前推荐系统存在的一些问题出发,逐步阐述对下一代个性化推荐系统的初步构想和建议,同时也提出一些值得关注的问题,供本领域的从业者考虑和探讨。
当前推荐系统面临的挑战
根据出发思想的不同,个性化推荐系统可大致分为基于协同过滤和基于内容两种。协同过滤的基本思想前面已有所探讨;基于内容的推荐系统的出发点则更直接,即通 过对被推荐条目的内容进行建模和分析,从而为相关用户推荐出适合的内容。事实上,早期互联网中的人工分类目录就可以看作基于内容进行推荐的雏形。从实际应 用的角度,可更进一步把这两种思想归纳为黑盒推荐和白盒推荐两种模式。
黑盒推荐不需要考虑推荐的具体内容,而是利用机器学习、数据挖掘等统计方式和人工智能的方法对数据进行分析,建立相关模型和优化目标,在一定约束条件下求得最优解或局部最优解作为向用户推荐的内容。
白盒推荐则是深入到被推荐的条目内容之中,依据对条目的先验知识和对用户的理解进行相关匹配的推荐,推荐的过程中也会用到机器学习和数据挖掘的算法,但先验知识的来源往往是专家领域的知识。
这两种模式各有优劣。在实践中,通常会融合两种模式的优势建立所谓混合模型以求得更好的推荐效果。从实际应用来看,考虑到可扩展性及系统建立的成本,大型商用的个性化推荐系统大多以黑盒推荐为基础,我们先来谈谈黑盒推荐的优劣。
黑盒推荐的核心是机器学习和数据挖掘算法,有着坚实的数学基础和明确的优化指标与方法,所以推荐质量有基本的保证。搭建系统既不需要领域内的知识,也不需要 过多的人工干预,同时模型的鲁棒性比较好,应对用户和条目的增长不需要付出更多额外的努力。这些优势使得黑盒推荐获得了非常广泛的应用。但随着前面提到的 互联网领域的两个根本性变化的影响,黑盒推荐的弊端也越来越多地显现出来(如图1所示)。
图1 黑盒推荐的弊端
对于以协同过滤为基础的推荐算法的弊端,文献中讨论比较多的是冷启动问题,即数据稀少的情况下难以获得高质量的推荐。这是黑盒推荐在系统启动时面临的最大挑 战。事实上,即便有了启动数据,在数据稀疏的情况下黑盒系统偶尔也会放大噪声,给出低质量的推荐。有人甚至专门为此造了一个单词,叫做 “freakommendation”⁽³⁾,用来指代那些稀奇古怪的推荐。
例如在某著名电子商务网站上,每年母亲节时都有鲜花促销,十几 岁的青少年在为母亲购买鲜花之余,顺便会为自己买上几部恐怖片。系统中的鲜花和恐怖片便建立了相似关联,在有人购买鲜花时系统便会推荐恐怖片,反之亦然。 这种推荐自然会引起很多用户的不适,虽然从统计意义的优化指标(如RMSE或者MAE)来看系统达到了最优,但对于某些主观性的因素,比如用户对系统推荐 的信任和心理感受,却有着相当负面的影响。这些影响可能很难用具体的指标和数字来衡量,但它们对一个产品的成败来说,往往是长期的、根本性的,甚至是决定 性的。
与冷启动相反,在实践中,还可以看到另一种较少被文献所提及的现象,称为“宏观与微观的悖论”。当从宏观的系统角度转向微观的用户角 度时,我们会惊奇地发现,随着数据的增长,整个系统在各项量化的推荐指标上的表现会越来越好,而对那些贡献了更多数据和内容的重度用户,却越来越倾向于给 出平庸和保守的推荐。
这个悖论的尴尬之处在于,几乎每个个性化推荐系统都宣称用户所获得的推荐质量会随着数据的增加和用户的积累而显著提 高,但实际所看到的却是整体用户推荐质量的改善并不意味着每一个用户群体推荐质量的改善。黑盒推荐的基础是基于统计的机器学习算法,为了在欠拟合 (Under-fitting)和过拟合(Over-fitting)之间求平衡,总有将结果拉回平均的倾向。
这就意味着,随着用户贡献数据的增多,用户的多个兴趣维度往往会被当做白噪声过滤掉。这种效应对推荐系统的影响也是根本性的。对任何产品来说,留不住活跃的用户都是致命的缺陷。
图1描述了黑盒推荐模式的推荐质量和用户收藏之间的关系,可以比较清晰地划分为三个阶段。
  • 第一阶段,用户收藏较少,系统在宏观和微观层面都面临冷启动问题,此时的推荐质量低于用户的预期。这是用户在使用个性化推荐系统时的第一个门槛,会把相当一部分用户阻挡在产品外。
  • 第二阶段,随着用户收藏的增长,系统对用户兴趣的建模更加准确,推荐质量也获得显著提升,这是推荐系统和用户之间的蜜月期,此时的推荐往往会给用户带来惊喜,能够有效地帮助用户发掘他们未知但感兴趣的领域。
  • 第三阶段,也就是前面提到的宏观和微观的悖论所产生的阶段。此时,虽然从各项指标来看推荐质量还在继续改善,但用户所切身感受到的却是推荐系统能给他们提供的帮助越来越少,推荐内容趋于平庸,缺乏眼前一亮的惊喜。
针对黑盒推荐的弊端,业内的研究者和工程师提出了很多补救的方案。例如结合基于内容的白盒推荐方法来解决冷启动问题从而提高推荐的惊喜度、通过 Transfer Learning的方法利用其他领域的结果和训练的模型获得启动数据,以及利用矩阵分解(Matrix Factorization)的方法改善数据稀疏性的问题。这些方法都收到了不错的效果,值得实践领域的从业者重视。
在前面分析的基础之上,我们尝试提出一种框架性的改进,在解决黑盒推荐弊端的同时探索下一代个性化推荐系统的雏形。
下一代个性化推荐系统
目前,黑盒推荐之所以会面临种种挑战,一个根本问题是推荐系统过分关注短期的优化目标或产品目标,忽视了产品的用户价值和增长的源动力。其表现就是没有把用 户在领域内的动态成长模型纳入到算法框架之中。好的个性化推荐算法,应该是始于用户、终于用户的,并且是一个健康的、动态的、具有自我生长和自我调节能力 的系统。用户是系统的一部分,与系统共同促进和成长。
依据这样的思想,可以把推荐系统分成三个层次(如图2所示)。

图2 下一代个性化推荐系统的三个层次
第一层是猜(Prediction),就是提供一个静态的数据集,拿掉其中的一部分,想办法利用剩下的数据把拿掉的部分恢复起来,使得恢复误差做到最小。这部分工 作可以认为是个数学问题,能够形式化并给出严格的定义,这也是目前在学术界和工业界研究得最透彻、解决得最好的一部分。在前几年的Netflix竞赛中, 层出不穷的新算法和持续的推荐精度的改进也让我们看到了这里面隐藏的巨大潜力。这部分工作也是建立个性化推荐系统的第一步,其意义是从数据形成信息。
第二层是预测(Forecasting),把给定的数据集看成一个自洽的系统,预测这个系统下一步的变化。用上一个层次的方法也可以解决这一层次的问题,但 其中有一个重要的区别,即在时间维度上预测要解决的问题在系统之外,而猜要解决的在系统之内。这使得预测比猜在优化指标的设置上要复杂一些。
同时,因为时间方向的不同,所以在系统中要考虑人的心理和社会环境因素起到的作用。这两个因素的作用使预测的系统比上一个层次的复杂度高了很多,原来的方法 可行,但未必有效。解决预测的问题,仅从给定的数据出发是不够的,需要整合其他来源的数据,可能需要先验知识,甚至需要一点用户的认知和心理模型。目前, 商用的个性化推荐系统都在或多或少地解决这个问题。这部分工作是建立一个真正有用的个性化推荐系统,其意义是从信息形成知识。
第三层是推荐(Recommendation),这才是真正意义的个性化推荐。这个系统应该具备所推荐领域的知识,同时还要认识它的每一个用户。这个系统能够自我启 动,同时能够生长和进化;这个系统是有记忆的,同时还能够学习。这个系统没有严格的定义,同时它的基本技术架构可能也不会仅局限于目前流行的个性化推荐系 统的各种框架、技术和算法之中。随着计算能力的飞速发展和数据的极大丰富,当前我们有理由向着那些更高的目标迈进。这部分工作会给用户带来全新的、突破性的体验,成为用户的良师益友,其意义是从知识形成系统。
几个值得关注的问题
要想完全描绘出下一代个性化推荐系统的蓝图还有很长的路要走。下面是几个值得关注的问题。
  • 不同的数据集如何影响推荐算法的表现。用户对于不同的条目有不同的行为,以图书、电影、音乐、新闻、图片、视频、服装等为中心的数据集在稀疏性、时效性、关联程度、反馈快慢等各方面有着不同的特性,如何根据这些特性挑选合适的算法对实践会有很强的指导意义。
  • 对不同的领域,用户期待的推荐形式和对推荐质量的预期各不同。如何把这些相关知识融入到算法之中,再反映到优化指标上,使推荐系统能跟用户一起成长?
  • 推荐系统的优化指标,如何与产品的关键指标相结合,使算法的优化和系统调整更加有的放矢,成为产品的一部分?
  • 对大规模实时的个性化推荐系统而言,如何有效地分配离线与在线计算任务,以及寻找可接受的近似算法,从而求得消耗计算资源和优化在线响应速度之间的平衡?
  • 针对相似性指标的研究。在推荐系统中,如何依据不同的数据集特性和用户特征选择合适的相似性指标?
  • 个性化推荐系统对用户行为的影响。用户的行为是个性化推荐系统的基础,反过来,个性化推荐系统推荐的内容也会对用户的行为产生影响。如何评估这些因素对系统和产品的进一步影响,也是个有意思的话题。
从技术角度来看,以上所提到的这些问题基本都有解决方案。但从其他角度来看,则未必如此。一个关键的角度是:个性化推荐到底是一项技术,一个功能,还是一个产品?这决定了个性化推荐系统未来的发展方向和影响力。
未来的互联网(包括移动互联网),不是平台就是平台的一部分。Amazon是电子商务及其相关基础设施的平台,Google是自由开放的信息平 台,Apple是相对封闭的平台,Facebook是社会关系和私有信息的平台。个性化推荐系统未必会成为平台,但在未来的互联网时代,它会是各个平台核心竞争力的一部分。
作者王守崑,豆瓣网首席科学家兼副总裁,负责算法部门和音乐产品线。目前专注于互联网信息架构与算法、Web2.0网络模式创新、数字音乐、推荐系统与在线收听等应用。