写点什么

达观数据个性化推荐系统实践

2016 年 3 月 28 日

在 DT(data technology) 时代,人们的日常生活已经和各种各样的数据密不可分,例如在网络购物、在线视频、在线音乐、新闻门户等都在产生海量的数据。海量的数据产生也带来了信息过载和选择障碍的困扰,每个用户的时间和精力是有限的,怎样帮助用户进行信息的过滤和选择,在 DT 时代是非常有价值的。

面对“信息过载”,个性化推荐根据用户的历史行为数据进行深层兴趣点挖掘,将用户最感兴趣的物品推荐给用户,从而做到千人千面,不仅满足了用户本质的信息诉求,也最大化了企业的自身利益,所以个性化推荐蕴含着无限商机。

美国著名视频网站 Netflix 曾举办过全球的推荐系统比赛,悬赏 100 万美元,希望参赛选手能将其推荐算法的预测准确度提升至少 10%。美国最大的视频网站 YouTube 曾做过实验比较个性化推荐和热门视频的点击率,结果显示个性化推荐的点击率是后者的两倍。号称“推荐系统之王”的电子商务网站亚马逊曾宣称,亚马逊有 20%~30% 的销售来自于推荐系统。其最大优势就在于个性化推荐系统,该系统让每个用户都能有一个属于自己的在线商店,并且在商店中能招到自己最感兴趣的商品。

达观数据是专注于企业大数据应用服务的高科技创业公司,致力于为新媒体、电商、视频、金融、企业等提供高质量的大数据挖掘技术服务,通过推荐系统等数据技术服务快速提升企业的经营业绩。本文从数据处理、用户行为建模到个性化推荐,分享达观数据在个性化推荐系统方面积累的一些经验。

1. 数据收集及预处理

推荐系统的本质其实就是通过一定的方式将用户和喜欢的物品联系起来。物品和用户自身拥有众多属性信息进行标识。

物品表示推荐系统的客体,在不同的应用场景下,物品指代不同的待推荐事物。比如,在书籍推荐中,物品表示书籍;在电商推荐中,物品表示商品;在电影推荐中,物品表示电影;在社交网络推荐中,物品表示人。商品的多种属性标识不仅标识自己是什么,也反应了和其它商品的关系,同时也为量化用户需求的兴趣点提供了依据。用户表示推荐系统的主体,自身属性包括人口统计学信息以及从用户行为数据中挖掘分析得到的偏好等。

用户的每一次的行为操作无不反应用户内心的本质需求,包括页面浏览、点击、收藏、购物、搜索、打分、评论等,这些数据是个性化推荐系统的最重要的数据。根据用户自身独有的行为数据,可以为每一个用户生成特有的画像。

数据的可靠性很大程度上决定了推荐系统的准确性。原始的数据源中会混杂各种各样的脏数据,一方面是在数据采集和上报的过程中,出现一些异常数据,另一方面也包括系统上线运行时所产生的作弊数据。

数据挖掘的首要步骤就是对原始数据的深度清洗。良好的数据预处理可以对个性化推荐的效果起到事半功倍的效果。数据采集和上报的异常数据,需要结合数据库表结构和实际场景做过滤,如空值检查、数值异常、类型异常、出现“\r”和“\n”导致的字符串换行、数据去重。另外,对于 “人为”的脏数据,如刷点击、刷榜单等行为,这些关键数据会严重影响后续算法的效果,需要有一些反作弊策略进行清除或者降权,如进行 session 分析,结合 cookie、ip、行为发生的时间和次数等一些规则进行过滤。达观数据在反作弊方面也做了很多工作,包括基于机器学习的方法和一些强规则,可有效筛选各种行为上的作弊情况。

2. 用户行为建模

基于用户历史行为的进行挖掘分析,得到刻画用户本质需求的一组属性集合,即得到用户模型,个性化推荐的准确性很大程度上依赖于对用户属性刻画的准确性。达观数据采用了多种方式进行量化,主要包括用户偏好分析和深层用户兴趣点挖掘。

1) 用户偏好分析

结合用户历史行为和物品信息,可以得到每种行为下的用户偏好数据,包括偏好的维度及偏好程度,如偏好的物品、品牌、类别、标签等。

再将各种行为的偏好数据合并,最终得到用户在物品、品牌、类别、标签等各个维度上的偏好程度。合并不同维度的数据时,需要考虑到不同的行为类型反应用户偏好程度是不同的。比如购买行为比点击行为更能反映用户的偏好,则由购买行为计算得到的偏好数据在合并时赋予的权重要高一些。

要保证各种行为的各个维度的数据具有可比性,需要进行归一化,而且同纬度的要采用相同的归一化方法。比如常见的 min-max、log 函数转换、z-score

处理均值问题时,会碰到一个置信度相关度问题。如 10 张投票中有 1 张赞成票和 100 张投票中有 10 张赞成票,虽然均值的角度来说都是 0.1,但是后者的可信度更高。

对于样本较多的情况(np > 5 且 n(1-p) > 5),可以使用“正态区间”,样本少的话准确性就很差。解决小样本的均值问题,可以基于“威尔逊区间”,使用它的下限值可有效降低“赞成票比例”的作用。

2) 深层用户兴趣点挖掘

除了结合物品信息进行分析计算得到的偏好信息外,还有一部分深层兴趣点需要挖掘,这部分主要用于对细分的用户群体进行更有针对性、更有效的推荐。划分群体的准则要根据具体的业务需求而定,比如是否是高价值用户、是否价格敏感、是否对大牌情有独钟、大神用户和小白用户的区分、喜欢热门流行还是偏小众的等等。

借助机器学习中的分类(如神经网络、Random Forest、SVM)和聚类(如 FCM、k-means)算法可有效解决用户群体的划分问题。使用到的训练和测试数据需要先根据一些规则粗略得到候选集,在结合人工标记的进行筛选。同时从物品和用户的属性数据中也能抽取大量关键特征。经过模型的训练、测试和后处理,从而将用户划分到不同的群体。

3) 计算相似用户

在个性化推荐中,应用很广泛的是基于用户的协同过滤算法。具体又分为 item-based 协同过滤和 user-based 协同过滤,其中 user-based 协同过滤算法核心思路是相似用户的计算。相似度的距离计算公式包含多种方法,如余弦相似度、皮尔逊相关度等。不同的相似度计算方法有各自的优缺点,适用不同的应用场景,可以通过对比测试进行选取。达观数据的实践经验里,一般来说,在基于用户的推荐系统中,皮尔逊相关系数效果要好一些。基于物品的推荐中,余弦相似度方法比皮尔逊的表现更好。

在实际业务中,相似度的计算方法都有很多变种,过于冷门和过于热门的物品对衡量用户间的相似度时区分度不好,这时就需要进行归一。下面的相似度计算方法将降低热门物品对用户相似度的影响。

这种基于 K 近邻的选取相似用户的方法,相似度的阈值设置对结果影响很大,太大的话召回物品过多,准确度会有下降。

4) 时间维度上的考量

在处理各个维度的偏好数据时,需要考虑用户行为的有价值程度是随时间衰减的,即行为发生时间距当前的时间越近,得到的数据越能表征用户将来的行为。毕竟用户的口味随着时间的推移是会变化的,所以时间越近权重越高。衰减函数可以选择离散型或者连续性的。

另外,还需要考虑偏好和兴趣点数据的在时间上的持续和变化过程,即需要刻画用户的口味呈现的时间规律。为了解决这个问题,可以根据不同的时间间隔来界定,分长期、短期、近期和实时四个时间维度。长期的覆盖了用户几乎一直不变的兴趣,短期的覆盖了用户变化中的兴趣,而近期则反映了用户的“尝鲜”的特点。这三种兴趣是离线计算的,此外还要考虑用户的实时兴趣,实践中可以通过很短的时间间隔进行近线挖掘分析,从而快速适应用户当前的信息需求。比如选取最近 1 个月、最近 1 周和最近 2 天来界定长期、短期和近期。

3. 个性化推荐的实践经验

基于准确的用户模型和原始物品属性数据,使用多种推荐算法和效果优化策略,个性化推荐系统将用户最感兴趣的物品列表精准推荐给当前用户。由于不同算法有自己的应用场景,需要根据业务需要、数据的丰富程度、效果衡量指标等选择合适的推荐算法,然后根据推荐结果进行不断迭代,最终完成符合预期效果的个性化推荐系统。

1) 基于内容的推荐

主要过程是将用户的信息特征和物品对象的特征相匹配的过程,从而得到待推荐的物品集合。通过用户模型中的类别、标签、品牌等各维度的偏好数据,在全量物品列表中寻找与之匹配的用户感兴趣的物品列表,并给出用户感兴趣的程度。根据挖掘的兴趣点,对部分用户进行有针对性的推荐,为其“量身定制”推荐结果,满足其特有的需求。

基于内容的推荐方法,优点是能保证推荐内容的相关性,并且根据内容特征可以解释推荐结果,而且对新物品的推荐是也能有很好的考量。缺点是由于内容高度匹配,导致推荐结果的惊喜度较差,而且对新用户不能提供可靠的推荐结果。

另一个重要的优势,是基于内容的推荐能很好的解决推荐系统的“冷启动”问题,因为这类推荐算法不需要依赖用户行为的积累,当待推荐的物品是新出现时,基于内容的推荐算法往往是最有效的方法。

2) 协同过滤

协同过滤方法主要基于群体智慧,认为相似的用户对新物品的喜好也是相似的,相似的物品对于同一用户来说,喜好程度也是相似的。这种方法克服了基于内容方法的一些弊端,最重要的是可以推荐一些内容上差异较大但是又是用户感兴趣的物品。大致分为两类:基于近邻的方法(Neighbour-based)和基于模型的方法(Model-based)。

基于近邻的方法,在数据预测中直接使用已有数据进行预测,将用户的所有数据加载到内存中进行运算。基于用户的协同过滤是,获取和当前用户相似的用户列表,将这些用户喜欢的物品推荐给当前用户。基于物品的协同过滤,获取当前用户偏好的物品列表,将和这些物品相似的物品加入到推荐的候选集当中。

基于模型的方法则是通过数据进行模型训练,然后为用户预测新的物品,主要包括:pLSA(Probabilistic Latent Semantic Analysis)、LDA(Latent Dirichlet Allocation)、SVM(Support Vector Machines)、SVD(Singular Value Decomposition) 等。

推荐系统效果提升的一个有效方式是用户反馈数据的使用,包括显示反馈和隐式反馈。SVD++ 在 SVD 的基础上引入隐式反馈,将用户的点击反馈数据等作为新的参数加入到模型中。

具体实现可以参考 SVDFeature、LibFM、GraphLab。

在达观数据的实践中,在有充分用户行为数据的条件下进行实验对比,发现基于协同过滤的推荐算法,效果要大大优于基于内容的推荐算法,但是这也依赖于对用户行为数据的积累和充分清洗。

3) 基于知识的推荐

当用户的行为数据较少同时又有明确的需求时,协同过滤和基于内容的推荐效果不尽人意,但是基于知识的推荐(Knowledge-based Recommendation)可以帮助我们解决这类问题。这种方法不需要用户行为数据就能推荐,依赖人工的先验经验,所以也能较好的处理冷启动问题。

基于知识的推荐其基础是知识库,或称为 Ontology。与其相关联的技术包括自然语言处理、语义分析等。例如“手机”和“手机壳”,“笔记本电脑”和“macbook”,在知识库概念里存在“本体”、“实例”、“关系类型”等抽象概念,利用知识库的延伸或拓展可以形成若干规则、或相互关系,并进而形成推荐体系。推荐结果主要依赖两种形式,一是用户需求跟物品之间相似度,一种是明确的推荐规则。实际应用主要是以强规则为主。在达观科技的实践中,常用于少量特殊场景下的推荐修正。

4) 推荐补足策略

当用户历史数据比较局限或者在冷启动的时候,导致待推荐物品的数量不足没有达到预定要求时,根据用户模型的数据,结合挖掘的各种榜单进行补足,如全局热门、分类热门、潜力物品、潮流物品等。

推荐补足的出发点有很多,第一是确保推荐结果的多样性,因为用户的偏好往往是多样的,因此需要多样的结果来分别满足。单一的推荐算法往往推出的结果较为单调,而通过特定的补足策略可以照顾到多样性的需求。第二是解决推荐的新颖性问题。通常较为小众的物品往往难以得到有效的曝光,或者新出现的内容由于积累的用户行为数据少,往往被压制,适当的进行这类结果的补足可以较好的提高推荐结果的新颖性。

5) 多算法融合

前文提到单一算法有各自的优缺点,并不能满足实际的线上需求。所以为了提供最优质的个性化推荐服务,保证推荐结果的多样性、新颖性和惊喜度,需要融合多个推荐算法,进行混合推荐。常见的混合方法有以下几种:

a) 加权式混合

主要是对每个算法赋予不同的权重,通过将多个推荐算法的结果进行加权组合在一起,最后排序得到推荐结果。

不同推荐算法的结果需要归一化在相同的范围内,并且各个算法的权重之和为 1。

b) 交叉式混合

主要是直接将不同的推荐算法的结果组合在一起推荐给用户,从而每个推荐算法的优质结果都会被展示给用户。

c) 切换式混合

主要是根据不同应用场景决定使用哪一种推荐算法,应用场景改变的话则切换推荐算法。例如在新闻推荐时,首先使用基于内容的推荐,当找不到合适的内容时,接着使用协同过滤算法进行跨内容的推荐,最后使用朴素贝叶斯分类器找到与用户长期兴趣匹配的结果。

d) 串联混合

主要是将不同的推荐算法进行排序,后面的推荐算法对前面的不断优化,最终得到一个多级优化下的推荐结果。

e) 分级混合

主要是先界定不同的算法的好坏,优先使用好算法的推荐结果,得不到结果时再使用次好的,依次类推。

达观数据在实践中充分利用了各种混合方法来提高推荐效果,并取得了优异的成效。例如基于加权式和分级混合的流程是,首先通过权重的大小来衡量每种推荐算法结果的好坏,产生待推荐的物品集合,在合并的时候,将优先使用好的推荐算法的结果。关于算法权重的设置,基于用户反馈数据,简单的方法可以使用 LR(Logistic Regression)。实践中则是各种指标综合权衡,整个过程也要复杂很多。

6) 重排序

排序学习 (Learning To Rank, LTR) 一直是机器学习中的热门研究领域。由于排序过程牵涉到各种维度的参数数据,导致调参费时费力,而且很可能会出现过拟合现象。而机器学习方法不仅有成熟的理论基础,而且很容易融合多种特征,通过不断的迭代来进行参数优化,可有效解决数据稀疏、过拟合等问题。著名的 Netflix 公司就在他们的推荐系统中全面应用了 LTR 技术。

对于已标注的训练集,首先选定 LTR 方法,确定损失函数,以最小化损失函数为目标进行优化即可得到排序模型的相关参数,这就是学习过程。预测过程将待预测结果输入学习得到的排序模型中,即可得到结果的相关得分,利用该得分进行排序即可得到待预测结果的最终顺序。LTR 分按点 (pointwise)、按对 (pairwise) 和按表 (listwise) 三种方法,涉及到的常见模型有 LR(Logistic Regression)、SVM、DT(Decision Tree)。

关于排序模型的选择,LR 算法主要适用于特征数很多、样本量很大的情况。如果是样本量很大,但是特征比较少的情况时,建议使用 DT 的算法。主要是因为在特征数较少时,对应的问题往往是非线性的,此 DT 算法可以发挥自身的优势。另外,SVM 在解决非线性分类问题是效果也非常好。相对于另外两种方法,按表的方法往往更加直接,它专注于自己的目标和任务,直接优化排序结果,因此往往效果也是最好的。

经过多个推荐算法的处理,最终得到待推荐物品的结合,使用少量维度的特征进行排序过于简单,效果也大打折扣。基于推荐算法得到的相关特征,结合物品和用户的特征进行组合,可以得到各种特征,并且有些特征是正相关有些是负相关,需要不断优化。借助机器学习方法得到了最终的物品排序,呈现给用户。

4. 结束语

本文从基本的数据处理、构建用户模型到个性化推荐,介绍了达观数据的一些实践个性化推荐方面的经验。个性化推荐系统可以有效解决信息过载和长尾物品两个方面的问题,不仅提供了极佳的用户体检,满足了用户的信息需求,也帮助了企业充分利用其中蕴含的商机,提升经营业绩。

作者简介

于敬,同济大学计算机应用技术专业硕士,现任达观数据联合创始人,曾在盛大创新院智能推荐组负责大数据分布式处理、数据挖掘和分析、智能推荐,在盛大文学数据中心负责用户行为建模、个性化推荐、大数据处理、数据挖掘和分析、文本智能审核、反作弊和广告投放引擎。对智能推荐、数据挖掘、大数据技术和广告引擎有较深入的理解和实践经验。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 3 月 28 日 17:425675

评论

发布
暂无评论
  • 大数据杂谈微课堂 | 数据挖掘技术和房地产的有效结合

    数据挖掘依托房地产行业累积的海量数据,从中挖掘出最有价值的数据, 从而改善行业体验,推动行业进步。 本文内容主要包括如下两个部分: 1)数据挖掘在房产领域的可行性和必要性 2)数据挖掘在链家网的实践详情

  • 基于深度学习的推荐模型之一:受限波兹曼机

    这周,我们来讨论如何利用深度学习来提升推荐系统的精度。

    2018 年 4 月 9 日

  • 标签个性化数据在推荐排序中的应用

    本文share的这个项目,是我们在个性化推荐上的一个小小的尝试。通过捕捉用户实时的标签快速捕捉用户兴趣变化,用机器学习算法挖掘用户兴趣与实际消费行为的联系,及时调整推荐排序,提高推荐效果。

  • 协同过滤中的相似度计算方法有哪些

    推荐系统中,推荐算法分为两个门派,一个是机器学习派,另一个就是相似度门派。

    2018 年 3 月 23 日

  • 百度技术沙龙第 31 期回顾:推荐引擎算法与技术(含资料下载)

    在10月20日由@百度主办、@InfoQ负责策划组织和实施的第31期百度技术沙龙活动上,来自百度推荐与个性化部研发工程师赵岷、百分点COO兼技术副总裁张韶峰分别分享了各自在前端开发中的经验与实践,话题涉及“推荐引擎实践--策略篇”,以及“百分点推荐引擎实践”等。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。

  • 特征工程:推荐系统有哪些可供利用的特征?

    从这节课开始,我们来讲特征工程,说说到底什么是特征工程,构建特征工程的基本原则是什么,以及推荐系统中常用的特征有哪些。

    2020 年 10 月 9 日

  • 熵、信息增益和卡方:如何寻找关键特征?

    无论是使用何种统计度量,我们都可以计算相应的数值、排序、并得到排名靠前的若干特征。

    2019 年 2 月 18 日

  • 搜索引擎:输入搜索词以后,搜索引擎是怎么工作的?

    今天,我和你分享搜索引擎的工作流程和核心检索架构,并且重点讨论搜索引擎对搜索词的特殊处理技术。

    2020 年 5 月 11 日

  • 打造工业级推荐系统(二):无处不在的推荐系统

    导读:个性化推荐系统,简单来说就是根据每个人的偏好推荐他喜欢的物品。互联网发展到现在,推荐系统已经无处不在,在各行各业都得到普遍都应用。

  • 推荐算法综述(二)

    推荐系统在各种系统中广泛使用,推荐算法则是其中最核心的技术点,InfoQ接下来将会策划系列文章来为读者深入介绍。推荐算法综述分文五个部分,本文我们将会详细介绍这些算法的区别,让你能够深入理解他们的工作原理。

  • 深度广度模型在用户购房意愿量化的应用

    本文主要介绍了深度广度模型在用户价值量化上的应用,包括wide&deep的应用与迭代,端到端与预训练的讨论以及时序模型与深度广度模型的结合,在预测结果上也取得了较为明显的正向收益,提高了头部准确率。

  • 31|模型迭代:阿里巴巴是如何迭代更新推荐模型的?

    你觉得在推荐系统领域工作,最大的挑战是什么?是模型调参,是工程落地,还是找到下一步改进的思路?

    2020 年 12 月 25 日

  • 多维度分析:推荐效果明显的产品属性

    本文总结了能主动迎合用户,快速抓住用户需求点的推荐效果明显的产品的属性。

  • “想你所想”之个性化推荐:实践与优化

    在当今 DT 时代,每天都在产生着海量的数据,移动互联网的兴起更是让我们体验到获取信息是如此的简单和方便。 同时,更多的选择也带来更多的困扰,面对层出不穷的信息和服务带来的困扰,使得个性推荐迅速崛起,并且大放异彩,在金融、电商、视频、资讯、直播、招聘、旅游等各个领域都能看到推荐系统的存在。

  • 从算法到案例:推荐系统必读的 10 篇精选技术文章

    推荐系统近几年来一直十分火热,目前几乎所有的电子商务系统、社交网络,广告推荐,搜索引擎等等,都不同程度的使用了各种形式的推荐系统。想知道电商如何向你发送广告的?想了解社交网络怎么推荐好友的?想自己搭建一个推荐系统?想了解一些算法或架构从而将自己的推荐系统做得更好?InfoQ为你整理了一系列的有关推荐系统的算法文章,以及主要从电商和社交网络方面选取了一些优秀的案例,来看看这些关于推荐系统的优秀文章吧。

  • 推荐算法综述(五)

    近年来社交媒体已经越来越流行,可以从中获得大量丰富多彩的信息的同时,也给我们带来了严重的“信息过载”问题。推荐系统作为缓解信息过载的最有效方法之一,在社交媒体中的作用日趋重要。区别于传统的推荐方法,社交媒体中包含大量的用户产生内容,因此在社交媒体中,通过结合传统的个性化的推荐方法,集成各类新的数据、元数据和清晰的用户关系,产生了各种新的推荐技术。本文总结了推荐系统中的几个关键研究领域,进行综述介绍。本文是推荐算法综述的最后一部分。第一部分主要介绍了推荐算法的主要类型。第二部分,主要涵盖了不同类型的协同过滤算法,突出他们之间的一些细微差别。第三部分详细介绍了基于内容的过滤算法。第四部分主要介绍了混合引荐技术和基于流行度的推荐方法。在这篇文章中,我们在回顾了所有基本的推荐算法之后,介绍了如何选择最合适的推荐算法。

  • 优酷视频基于用户兴趣个性化推荐的挑战和实践

    优酷每天为上亿用户推荐上亿的视频,机器学习模型如何更好的描述与捕捉用户的兴趣成为一大挑战。相比电商、新闻等领域用户对于视频内容的兴趣要更为复杂、感性、微妙、纬度多样,用户的兴趣也会逐渐演进、变化、细分,对于惊喜度(serendipity)与多样性(diversity)的要求也更高。用户的行为数据稀疏、分布偏差大、时域上分布规律也复杂多样。12月9日 ArchSummit北京架构师大会上,优酷数据智能部总监李玉博士,就优酷在《视频推荐中用户兴趣建模、识别的挑战和解法》进行演讲,跟大家分享优酷视频的个性化搜索推荐里跟用户兴趣相关一些问题和思考。

  • 如何评价推荐系统的结果质量?

    本文是对推荐系统评测标准制定经验总结。

  • 半监督学习技术应用于达观的文本过滤系统

    为了克服标注样本不足的难题,垃圾信息过滤可以引入半监督学习方法来增强信息处理的能力。半监督学习方法的优势是能够在只有少量标注数据的条件下,综合利用已标注数据和未标注数据的信息,达到较好的过滤效果。达观的文本挖掘系统在多个模块里面都使用到了半监督学习的方法,主要方式是通过外部知识来对训练样本进行语义扩展,然后结合数量较多的未标注样本选取预测置信度高的子集作为新样本加入训练集进行模型训练。

  • 阿里飞猪个性化推荐:召回篇

    本次分享将介绍在飞猪旅行场景下,是如何针对这些问题进行优化并提升效果的。主要内容包括:⻜猪旅行场景召回问题、冷启动用户的召回、行程的表达与召回、基于用户行为的召回、周期性复购的召回。

发现更多内容

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

达观数据个性化推荐系统实践-InfoQ