智能推荐系统并不神秘,我们网上购物,经常出现“为你推荐,或是相关联组合搭配”的商品,可以说智能推荐就在我们周边,它的出现也更好地实现个性化服务。亚马逊的CEOJeffBezos曾经说过,他的梦想是“如果我有100万个用户,我就要为他们做100万个亚马逊网站”。可见智能推荐系统的重要性,它通过机器学习、数据挖掘、搜索引擎等技术,开发良好的推荐系统,但如何做好这些达到更优的效果呢?我们大圣众包(www.dashengzb.cn)小编为大家整理来自于盛大智能推荐团队负责人陈运文的一些经验总结!
1、充分运用显式隐式反馈数据
数据是一切推荐系统的基础。良好的推荐效果一定是来自于丰富而准确的数据。这些数据既包括了用户(user)和待推荐物品(item)相关的基础信息(注:item和具体的推荐场景相关,可以是商品、影片、音乐、新闻等,如果是进行好友推荐,那么item也可以是user本身),另一方面,user和item之间在网站或应用中发生的用户行为和关系数据也非常重要。因为这些用户行为和关系数据能真实的反映每个用户的偏好和习惯。采集这些基础数据,并做好清洗和预处理,是整个推荐系统的基石。
用户行为数据,又可细分为两部分:显式反馈数据(explicitfeedbacks)和隐式反馈(implicitfeedbacks)数据。显式反馈是指能明确表达用户好恶的行为数据,例如用户对某商品的购买、收-藏、评分等数据。与之相反,隐式反馈数据是指无法直接体现用户偏好的行为,例如用户在网站中的点击、浏览、停留、跳转、关闭等行为。通过挖掘显式反馈数据能明确把握用户的偏好,但在很多应用中,显式反馈数据通常很稀疏,导致对用户偏好的挖掘无法深入。这个问题在一些刚上线的应用、或者偏冷门的物品或用户身上反映尤其明显。在这种情况下,用户的隐式反馈数据就显得尤为重要。因为虽然用户在网站中的点击等行为很庞杂,但其中蕴藏了大量信息。在2006-2008年间进行的国际著名推荐竞赛NetflixPrize中,冠军队成员YehudaKoren发现将用户租用影片的记录,转换为特征向量注入奇异值分解算法(SVD)用于影响用户兴趣向量,能够很好的提高推荐准确率。
基础数据的预处理对推荐效果的提升也非常有帮助。以2012年的ACMKDD-Cup(国际数据挖掘竞赛)为例,训练样本中,负样本的数量居然达到了总样本数量的92.82%,但是通过仔细分析这些负样本,发现其中有大量样本存在噪音,通过一系列的Session分析和筛选方法,从中保留了11.2%的样本进行后续推荐挖掘,不仅成功提高了推荐精度,而且大大减少了运算量。所以充分利用各类显式和隐式数据,并做好数据的预处理,保证输入数据的质量,是第一个关键点。
2、重视时间因素
用户的行为是存在很强的时间规律的。例如通常人们中午会吃饭、周末会休假、过年会回家团圆等等。用户在各个应用中的行为也同样有规律可以挖掘,用好时间这个特征,在很多推荐场景下,会对推荐效果的提升有很大的帮助。
用户行为日志中,行为发生的时间戳(timestamp)通常都会被记录。这个时间戳能从user和item两方面来进行分析。从user的角度来看:user的兴趣往往会随着时间不断变化,几年前的兴趣和当前的兴趣可能是不同的;另一方面,user的行为也存在一定的规律,例如工作日的行为是类似的,而在周末里user的行为也会变化,甚至在同一天中,上午和晚上的user行为和偏好也会有各种不同的规律。
从item的角度来看,流行度随着时间会有规律性的波动,通过持续挖掘user与item之间的行为在一段时间内的记录,往往能够发掘出这种规律,并进而用于指导我们预测user在后续某个时刻的行为,提高推荐的准确率。
时间因素的一些常见处理方案包括:1)在协同过滤计算user或者item相似度的公式中,增加时间因子,发挥相近时间的作用;2)将时间离散映射到自然月、周、日、小时等时间片中,并分别进行统计计算,并进而将累积的数据用于特定的回归模型(Regressionmodels)中,指导结果预测;3)将时间作为线性连续变量,用于训练模型参数等。
3、特定推荐场景需要使用地域特征
有一些推荐场景是和用户所处地域密切相关的,尤其对一些LBS、O2O的应用来说,一旦离开地域这个特征,那么智能推荐的效果根本就无从谈起。例如当需要推荐一个餐馆时,如果不考虑用户当前所在的位置,那么即使某餐馆和当前用户的口味匹配度非常高,但远在天边,这个推荐也是毫无价值的。
目前推荐系统在地域特征的使用还停留在较为原始的状态,通常需要让用户手工筛选推荐结果所在的区域(如省、市、区、县等),或者指定若干半径范围内的结果。这种方式不仅操作繁琐,而且缺乏对地域信息的细致分析。例如地点A和B的地图直线距离虽然较远,但两点间有地铁直接往返,而另一地点C虽然地图直线距离A很近,但两点间需要绕行交通不便。另外从用户角度来说,每天活动的地域总是存在规律的,例如工作日白天,往往活动区域在工作地点附近,夜晚的时间会在家附近等。
在基于地理位置信息的应用中,需要更聪明的挖掘用户对地域的偏好(而且这种偏好往往和时间紧密联系),例如在基于用户的协同过滤中,将类似地域用户活跃用户的行为,作为推荐的依据,即认为活动地域相似的用户,可能存在一定相同的偏好。或者使用基于物品的协同过滤思想,在计算item之间相似度时引入地域特征。在LatentFactorModel中,将用户的活动地域作为隐式反馈来作用于用户特征向量等,都是可行的方案。
手机是进行基于地域信息推荐的最好载体,随着移动互联网应用越来越普及,期待未来有更多基于地域信息的推荐产品的问世。
4、SNS关系的使用
社交网络近年来得到了突飞猛进的发展,用户不再是单纯的内容接收者,而是能够主动的建立用户之间的关系。这些关系,可以划分为显式关系(explicitrelations)和隐式关系(implicitrelations)。显式关系指的是用户已明确建立的相关关系,例如在微博中关注/被关注某人等,或者在社区中加为好友等。而隐式关系指用户之间存在一些互动行为,但这些行为不能明确指示用户间的关系。例如用户在微博中点击、评论、转发另一个用户的帖子,如果在网络游戏世界中另一个玩家交谈,或者PK等。隐式关系虽然并不如显式关系那样明确,但比显式关系要丰富的多。所以在一些对推荐精度要求很高的应用场景下,显式关系需要发挥主要作用;而对一些需要提高推荐召回率和推荐结果多样性的场景下,尤其是当显式关系面临数据稀疏性的问题时(注:这个问题在推荐应用中普遍存在),充分利用隐式关系能起到非常好的效果。以今年的KDD-Cup竞赛为例,在腾讯微博的好友推荐系统上,我们通过在SVD++模型中增加隐式关系,处理数据稀疏性的问题,能够将推荐准确率提升5.5%
此外,移动互联网的普及,让SNS关系使用起来更加便捷,而且加上地域信息,产生了像微信这样新颖的移动应用,而SNS关系和地域特征的结合使用,一定会让推荐系统也产生出更受欢迎的结果。
5、大数据挖掘和性能优化
大数据挖掘是近年来的研究热点,得益于分布式计算技术的广泛使用,系统吞吐的数据规模越来越大,离线数据挖掘的能力也越来越强,处理大量用户行为数据变得越来越便捷。但在推荐挖掘中,系统能够提供的运算能力和实际的运算需求之间,始终存在矛盾,所以如果有效合理的分配运算资源十分重要。这里需要在挖掘深度上进行合理的分配。对重点的用户或者item,可以分配更多的资源,进行更深入的挖掘。对基础数据也是如此,高质量的数据可以用于更详细的分析,而低价值的数据可能只需要简化处理流程。
后端的离线系统往往还需要定期更新模型,这里模型的全量或增量更新方式也是一个值得关注的点。以用户模型为例,并非所有用户的个性化模型都需要频繁更新,活跃的、高贡献值的用户,应该需要更频繁的予以更新。对item也类似,热门item和冷门item更新技术的周期可以不同。
在大数据推荐系统的性能优化方面,还有一些常用的技巧,例如倒排索引的使用,cache机制的充分运用等。
6、明确优化目标和评估手段
开发一个初步可用的推荐系统并不难,难的是如何在原有推荐效果的基础上精益求精,更进一步。优化目标和评估手段的确定是解决这个问题的关键所在。首先需要确定系统的优化目标。例如有些推荐系统追求推荐结果的点击率;有些则还考虑点击后的实际转化或成交效果;有些推荐场景更关注推荐结果的新颖性,即希望更多的将本站新收录的物品展现给用户;另一些则更重视结果的多样性。
在推荐系统的目标明确后,随之而来的问题是,如何量化的评价这些推荐目标?传统的评分预测问题通常使用均方根误差(RMSE)或者平均绝对误差(MAE)等计算方法。但在实际应用中Top-N推荐更为常见,这种场景下NDCG(NormalizedDiscountedCumulativeGain)或MAP(MeanAveragePrecision)是普遍使用的衡量方法。
由于推荐系统经常借鉴相关领域的一些技术,如广告学或搜索系统,因此计算广告学中的pCTR或者搜索系统的Precision-Recall曲线等也经常用于评估推荐效果的优劣。有些系统甚至直接将推荐系统转化为一个机器学习问题,评估手段也随之转化为对应问题的方法。
实际系统中,往往是多个指标(点击率、准确率、覆盖率、多样性、新颖性等)共同作用,并且按照产品的实际需求,加权折衷后进行结果评测。测试方法也有线上A/BTesting以及人工评测等。无论采用何种方法,一个成熟的推荐系统一定要建立在明确的优化目标和评测系统之上,它们像一把尺子,丈量着推荐系统每次前进的脚步。
以前我们习惯了千人一面,如今我们喜欢千人千面,智能系统的出现正是基于“千人千面”的环境下,通过数据、算法、架构等等技术手段,把用户的行为特点与自身的推荐产品结合,更智能、更人性、更实用服务于我们用户!
(更多大数据与商业智能领域干货、或电子书,可添加大圣花花个人微信号(dashenghuaer))