个性化推荐系统可以理解成一个“为目标用户找到目标物品”的系统,整个过程大致可以分为几个步骤,确定目标用户-召回目标物品-为目标物品排序-按照合理的形式展示-收集目标用户反馈,进而优化召回、排序、展示方案。
其中每一个步骤都是算法与策略共同作用,在这个过程中存在主导辅助的差异。
本文所列举的“推荐方法”,包括很多书中提到的推荐方法,指的通常是根据对用户与场景的分析,“召回目标商品”的过程。
本文根据《推荐系统实战》《用户网络行为画像》整理,本人自评是一篇大而全但缺乏精细详解的文章,已经对推荐内容非常熟悉的朋友可以忽略,入门或者巩固的产品同学可以此作为一个学习了解(复习)的大纲,也可关注以下系列。
产品经理的个性化推荐总结(二)——详细理解协同过滤
产品经理的个性化推荐总结(三)——详细理解以用户画像为主导的基于内容推荐方法
正文:
常见的推荐算法根据使用数据的不同,可大致分为三类:协同过滤的推荐方法、基于内容的推荐方法和基于知识的推荐方法,然后是根据实际使用情况将三种不同程度融合。
第一部分:大纲
一. 协同过滤(CF)的推荐方法
1 基于记忆/临域的协同过滤
1.1 基于用户的方法,即大家熟悉的user-cf。
1.2 基于物品的方法,即同样大家熟悉的item-cf。
2 基于模型的协同过滤
2.1 基于矩阵分解的隐语义模型(LFM模型)
2.2 基于朴素贝叶斯分类的推荐算法
二. 基于内容(CB)的推荐方法
本质上是基于对物品和自身的特征或属性的直接分析域计算,利用用户画像(标签)、商品画像。
无论是CF还是CB都需要用到用户历史行为数据。
三.基于知识的推荐方法
知识可以是人工的业务规则,也可以是通过数据挖掘总结的规律。
第二部分:几种常用的推荐算法局限性
协同过滤方法存在的局限性:
用户和物品的冷启动问题:由于新用户没有朋友、操作过的物品等有用信息,新物品没有被用户操作过的信息,因此系统无法对新物品、新用户做出推荐。
因为不对物品的内容做分析,所以无法依据深层特征和属性来推荐比较复杂的物品,使得用户会对推荐结果的可信度产生质疑。
受到用户打分悉数性问题的约束。
随着用户和物品数量的增大,系统计算量增大,受到算法可扩展性问题的约束。
基于内容的推荐算法存在的局限性:
容易受到信息获取技术的约束,难以提取物品的内容特征,而使用标签对视频进行标注的方法工作量巨大而效用低。
需要足够的数据来构建决策分类器,用户画像的建立需要大量的用户浏览记录。
难以为用户发现新的兴趣信息,只能推荐与用户已有兴趣相似的视频。
基于知识的推荐算法存在的局限性:
知识的获取比较困难。
用户必须说明他的需求,系统才能做出推荐,在这个过程中若找不到合适的推荐物品,用户需要修改其需求。
第三部分:推荐算法概述
基于邻域的算法
基于邻域的算法是推荐系统中最基本的算法
第一种: user-cf
1.计算原理
以用户为研究对象,通过分析用户所喜好的物品来计算用户之间的相似度,找到相似度最大的其他相似用户,然后根据其他相似用户的喜好为目标用户推荐他可能感兴趣的物品,更注重社会化。
1.1找到和目标用户相似的用户集合。
1.2找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
2.算法流程
算法输入:用户行为日志,基于协同的用户相似矩阵。
算法输出:初始推荐结果。
3.适用场景
user-cf实现简单,但随着用户数量增多,算法复杂度随之增高,新用户的冷启动问题,以及数据稀疏性问题导致效率和伸缩性上的不足;另一方面这样的推荐很难给出推荐理由,因此,user-cf适用于用户交互性强或者用户量相较物品数量变化稳定的网站。
第二种:item-cf
1.计算原理
通过计算物品的相似度代替用户的相似度进行推荐,但是并不以物品的内容属性计算物品之间的相似度,而是主要通过分析用户的行为记录计算物品之间的相似度。一般而言,物品a和物品b具有很大相似度是因为喜欢物品a的用户大都喜欢b。
1.1 计算物品之间的相似度——对于目标用户及其待评分的物品,根据(全量)用户对物品的历史偏好数据,计算物品于其他已经评分的物品之间的相似度,找到与该物品相似度高的物品集合。
1.2 根据物品的相似度和用户的历史行为给用户生成推荐列表。
2.算法流程
算法输入:用户行为日志,基于协同的物品相似矩阵
算法输出:初始推荐结果。
3.适用场景
item-cf适用于物品数量变化明显小于用户数量变化的场合,究其原因,在一个非社交网络的网站中,给一个用户推荐一个物品,若给出的解释是与该用户浏览习惯相似的用户页看了这个物品,很难让用户信服,因为用户可能根本不认识那个人,相比之下,推荐原因是所推荐的物品与用户看过的物品相似更加令人信服。
第三种:LFM
1.计算原理
矩阵分解:基于用户浏览或者评分等历史行为数据,从中挖掘出用户隐含的兴趣,即隐语义,然后将用户或者物品用隐语义进行分类,最后通过这些隐语义进行推荐。
1.1 获取用户的兴趣向量以及物品的类别向量,计算用户对物品的喜好度。
1.2 根据用户喜好度排序,输出top结果。
2.算法流程
算法输入:用户行为日志,用户兴趣向量,物品类别向量。
算法输出:初始推荐结果。
3.适用场景
这是一种基于机器学习的方法,具有比较好的理论基础,适用于缺少用户兴趣信息和物品类别信息,但是具有大量的用户行为的系统,一般适用于离线推荐,不适用于实时推荐。
第四种:基于朴素贝叶斯分类的推荐方法
1.计算原理
推荐问题可以被看成分类问题,因此可以使用一些机器学习领域中的分类算法对推荐问题加以解决。朴素贝叶斯的基本思想显而易见:对于给出的带分类物品和既定的类别,计算该物品在各个类别中出现的概率,哪个类别出现的概率最大就将待分类的物品分到哪个类别。
2.算法流程
算法输入:已知目标用户对物品ix之外的物品的评分情况,以及其他用户对各物品的评分情况。
算法输出:确定目标用户对i新的评分。
3.适用场景
朴素贝叶斯分类实现起来比较简单,准确率比较高,但是分类的时候需要学习全部样本的信息,因此,更适用于数据量不大,类别较少的分类问题。
基于内容的推荐方法
名词解释:
用户画像与物品画像——将用户行为与物品内容数据根据业务需求结构化的表达形式,不展开赘述。
特征向量:用于表示对象特征的一组属性和属性值,其中每个属性都是这个属性合集的一个向量分量。
第一种:基础CB推荐方法
1.算法原理
该方法不考虑非结构化特征,不考虑反馈,单纯基于物品内容固有属性和用户偏好内容进行相似度计算来实现推荐,通过分析用户已经浏览过的内容,生成用户的偏好内容,然后推荐与用户感兴趣的物品内容相似度高的其他物品。
2.算法流程
算法输入:物品信息,用户行为日志。
算法输出:初始推荐结果。
3.适用场景
适用于基础CB架构的搭建,尤其是对新上线物品会马上被推荐非常有效,被推荐的机会与老的物品是相同的。
第二种:其他CB推荐方法
基础CB推荐方法重点针对结构化特征处理推荐,对于非结构化的特征,则需要其他推荐方法进行补充。前者是CB推荐中的基础,后者则是在基础CB方法上的深入或者拓展。
以下对几种推荐方法做简单介绍。
2.1基于TF-IDF的CB推荐算法
推荐经常用到物品非结构话数据,例如评论、详情等信息,需要从冗长的文字中提取关键词,TF-IDF技术被引入。
TF-IDF是自然语言处理领域中计算文档中词或短语的权值的方法,是词频和逆文本频率的乘积,TF指的是某一个给定的词语在该文件中出现的次数,IDF指的是一个词语普遍重要性的度量,某一个特定词语的IDF,可以由总文件数目除以包含改词语之文件的数目,再将得到的商取对数得到。
2.2基于KNN的CB推荐算法
该方法其实是一种接近无反馈的方法。
KNN算法基于这样的假设:如果在特征空间中,一个样本的k个最邻近样本中的大多数样本属于某一个类别,则该样本也属于这个类别。KNN算法通过计算样本个体检的距离或相似度来确定最近邻,算法的时间复杂度跟样本的个数直接相关。
在推荐系统中,KNN算法能够与目标物品的内容的k个最相似物品推荐给用户,由于内容固有属性一旦确立就不会频繁变更,所以基于内容固有属性的KNN算法最近邻计算不需要频繁的重复刷新。
KNN算法在CB推荐算法中的应用与在CF推荐算法中的应用极为相似,他们都是首先要找到跟目标物品相似的且已经被用户评价过的k个物品,然后根据用户对着k个物品的评价来预测其对目标物品的评价。他们的差别在于,CF推荐算法中的KNN是根据用户对物品的评价预测其目标物品的评分来计算物品间相似度的,而CB推荐算法中的KNN算法是根据物品画像来计算物品间相似度的。
2.3基于决策树的CB推荐算法
不同于其他算法,该算法会在训练阶段生成一个显式的决策模型,可以通过训练数据集构建病有效判断一个新的物品是否可能受到用户喜欢。当物品的特征属性较少时采用决策树算法能够取得不错的效果。
决策树的内部节点通常表示物品的特征属性,这些节点用语区分物品合集。
2.4基于线性分类的CB推荐算法
将基于内容的物品推荐问题视为分类问题时,多种机器学习的方法都可以被采用。
将物品数据用n维特征向量进行表示,那么物品可用点在n维空间中表示,线性分类起试图在给定的视频特征数据空间中找出一个能够将视频正确分类的平面,一类点尽可能在平面的某一遍,另一类则在平面的另一边,在物品推荐中,就是将物品分为用户喜欢和不喜欢两种。
2.5基于朴素贝叶斯的CB推荐算法
贝叶斯定理描述在一个随机事件发生下另一个随机事件发生的条件概率的定理。
基于朴素贝叶斯的推荐系统判断用户是否对某个物品有兴趣的方法是将这个问题转化为分类问题,例如将其分为两类,一类为“喜欢”,另一类为“不喜欢”。朴素贝叶斯算法假设用户和物品的特征向量中的各个分量相互之间条件独立,计算分类概率。
基于知识的推荐方法
从概念上来讲,知识表示是一组为现实知识形式化描述而做的约定,是把知识客体中的知识因子与知识关联起来,便于人们的识别和对知识的理解,他是知识组织的前提和基础,任何知识组织方法都是建立在知识表示的基础上。
这里讲解两种常见的基于知识推荐方法:
一种是约束知识,主要面向人工知识库,构建if-then推荐规则;
另外一种是关联知识,利用数据挖掘理论构建基于数据规律的自动学习的推荐规则。
第一种:约束推荐算法
1.举例:“买过大型家电,例如电视机的用户在一段时间内都不会再购买同类型物品”
2.算法原理
人们发现可以利用物品的参数特征等属性形成约束知识,再将用户对物品的特定需求刻画为约束条件,然后经过对物品集合的约束满足问题的求解,就可以得到用户所期望的物品了。
其中推荐任务以元祖(R,I)的形式表示,集合R表示目标用户对物品的特定需求,即对物品的约束条件,用集合I表示一个物品结合。推荐任务的完成目标是从结合I中确定出能够满足集合R要求的物品。
第二种:关联推荐算法
1.举例:“尿布与啤酒问题”
2.算法原理
随着研究者对大型数据库所蕴含的物品间关联性的分析,关联规则的概念被提出来,人们借助它符号化和形式化的语言来对物品间关联性进行刻画和描述,旨在从大量杂乱无章的数据中分析出少量易于理解的静态数据。
3.算法流程
3.1 从系统中的n个用户画像中挖掘出所有的强关联规则,建立集合以表示目标用户尚未查看但极有可能感兴趣的物品。
3.2 再次使用置信度对集合中的物品进行高低排序。
3.3 取出排序列表中的前n个物品构成top-n推荐列表。
由于对系统中全体用户的画像进行关联规则挖掘意义不明显且计算量大,所以基于关联规则的推荐算法常与CF推荐算法混合使用。在这类混合方法中,使用了CF推荐算法中的最近邻算法将用户画像数目n限定在目标用户的最近邻范围内,使得关联规则挖掘算法所处理的数据规模被针对性地限制在一定范围内。
第四部分:推荐算法实际使用过程中多为混合推荐推荐算法
以上三种主流的推荐方法,实际上是分别利用四种信息源来完成的,包括用户画像、物品画像、群体数据、知识模型。
其中CF推荐方法利用了群体数据信息源;CB推荐方法利用了用户画像和物品画像这种类信息源;KB推荐方法利用了用户画像、物品画像和知识模型三类信息源。
由此可见,没有一类推荐方法可以同时利用四种信息源。同时三类推荐方法也各有优缺点,可以说没有任何单独的一类方法可以解决所有局限性问题,因此,将多种推荐方法混合起来使用、各取其长的算法设计思路开始变得重要起来。
混合推荐方法只介绍算法设计层面的混合方法,可分为三大类,七小类。
1.并形式混合
1.1 加权式
推荐系统对多种推荐算法的计算结果进行加权平均处理,产生出单一的推荐结果
1.2切换式
推荐系统在不同的推荐算法中进行切换以适应当前的推荐情境。
1.3混杂式
推荐系统同时呈现出其上多种推荐算法的推荐结果。
2.整体式混合
2.1 特征组合
推荐系统从多种推荐数据源中获取特征,将这些特征组合起来放入单一的推荐算法中
2.2特征补充
推荐系统将一种推荐算法输出的特征信息作为另一种推荐算法的输入特征信息。
3.流水线式混合
3.1层叠式
推荐系统中一种推荐算法对另一种推荐算法的推荐结果进行提炼。
3.2级联式
推荐系统将一种推荐算法学习到的模型作为另一种推荐算法的输入。
萧饭饭,搜索推荐产品经理,WX:xiao-xiao1991,欢迎大家一同探讨,共同进步~