㈠ 07_推荐系统算法详解
基于人口统计学的推荐与用户画像、基于内容的推荐、基于协同过滤的推荐。
1、基于人口统计学的推荐机制( Demographic-based Recommendation)是一种最易于实现的推荐方法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。
2、对于没有明确含义的用户信息(比如登录时间、地域等上下文信息),可以通过聚类等手段,给用户打上分类标签。
3、对于特定标签的用户,又可以根据预设的规则(知识)或者模型,推荐出对应的物品。
4、用户信息标签化的过程一般又称为 用户画像 ( User Profiling)。
(1)用户画像( User Profile)就是企业通过收集与分析消费者社会属性、生活习惯、消费行为等主要信息的数据之后,完美地抽象出一个用户的商业全貌作是企业应用大数据技术的基本方式。
(2)用户画像为企业提供了足够的信息基础,能够帮助企业快速找到精准用户群体以及用户需求等更为广泛的反馈信息。
(3)作为大数据的根基,它完美地抽象出一个用户的信息全貌,为进一步精准、快速地分析用户行为习惯、消费习惯等重要信息,提供了足够的数据基础。
1、 Content- based Recommendations(CB)根据推荐物品或内容的元数据,发现物品的相关性,再基于用户过去的喜好记录,为用户推荐相似的物品。
2、通过抽取物品内在或者外在的特征值,实现相似度计算。比如一个电影,有导演、演员、用户标签UGC、用户评论、时长、风格等等,都可以算是特征。
3、将用户(user)个人信息的特征(基于喜好记录或是预设兴趣标签),和物品(item)的特征相匹配,就能得到用户对物品感兴趣的程度。在一些电影、音乐、图书的社交网站有很成功的应用,有些网站还请专业的人员对物品进行基因编码/打标签(PGC)。
4、 相似度计算:
5、对于物品的特征提取——打标签(tag)
- 专家标签(PGC)
- 用户自定义标签(UGC)
- 降维分析数据,提取隐语义标签(LFM)
对于文本信息的特征提取——关键词
- 分词、语义处理和情感分析(NLP)
- 潜在语义分析(LSA)
6、 基于内容推荐系统的高层次结构
7、 特征工程
(1)特征( feature):数据中抽取出来的对结果预测有用的信息。
特征的个数就是数据的观测维度。
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
特征工程一般包括特征清洗(采样、清洗异常样本),特征处理和特征选择。
特征按照不同的数据类型分类,有不同的特征处理方法:数值型、类别型、时间型、统计型。
(2)数值型特征处理
用连续数值表示当前维度特征,通常会对数值型特征进行数学上的处理,主要的做法是归一化和离散化。
* 幅度调整归一化:
特征与特征之间应该是平等的,区别应该体现在 特征内部 。
例如房屋价格和住房面积的幅度是不同的,房屋价格可能在3000000~15000000(万)之间,而住房面积在40-300(平方米)之间,那么明明是平等的两个特征,输入到相同的模型中后由于本身的幅值不同导致产生的效果不同,这是不合理的
* 数值型特征处理——离散化
离散化的两种方式:等步长——简单但不一定有效;等频——min -> 25% -> 75% -> max
两种方法对比:
等频的离散化方法很精准,但需要每次都对数据分布进行一遍从新计算,因为昨天用户在淘宝上买东西的价格分布和今天不一定相同,因此昨天做等频的切分点可能并不适用,而线上最需要避免的就是不固定,需要现场计算,所以昨天训练出的模型今天不一定能使用。
等频不固定,但很精准,等步长是固定的,非常简单,因此两者在工业上都有应用。
(3) 类别型特征处理
类别型数据本身没有大小关系,需要将它们编码为数字,但它们之间不能有预先设定的大小关系,因此既要做到公平,又要区分开它们,那么直接开辟多个空间。
One-Hot编码/哑变量:One-Hot编码/哑变量所做的就是将类别型数据平行地展开,也就是说,经过One-Hot编码哑变量后,这个特征的空间会膨胀。
(4) 时间型特征处理
时间型特征既可以做连续值,又可以看做离散值。
连续值:持续时间(网页浏览时长);间隔时间(上一次购买/点击离现在的时间间隔)。
离散值:一天中哪个时间段;一周中的星期几;一年中哪个月/星期;工作日/周末。
(5) 统计型特征处理
加减平均:商品价格高于平均价格多少,用户在某个品类下消费超过多少。
分位线:商品属于售出商品价格的分位线处。
次序性:商品处于热门商品第几位。
比例类:电商中商品的好/中/差评比例。
8、 推荐系统常见反馈数据 :
9、 基于UGC的推荐
用户用标签来描述对物品的看法,所以用户生成标签(UGC)是联系用户和物品的纽带,也是反应用户兴趣的重要数据源。
一个用户标签行为的数据集一般由一个三元组(用户,物品,标签)的集合表示,其中一条记录(u,i,b)表示用户u给物品打上了标签b。
一个最简单的算法:
- 统计每个用户最常用的标签
- 对于每个标签,统计被打过这个标签次数最多的物品
- 对于一个用户,首先找到他常用的标签,然后找到具有这些标签的最热门的物品,推荐给他
- 所以用户u对物品i的兴趣公式为 ,其中 使用户u打过标签b的次数, 是物品i被打过标签b的次数。
简单算法中直接将用户打出标签的次数和物品得到的标签次数相乘,可以简单地表现出用户对物品某个特征的兴趣。
这种方法倾向于给热门标签(谁都会给的标签,如“大片”、“搞笑”等)、热门物品(打标签人数最多)比较大的权重,如果一个热门物品同时对应着热门标签,那它就会“霸榜”,推荐的个性化、新颖度就会降低。
类似的问题,出现在新闻内容的关键字提取中。比如以下新闻中,哪个关键字应该获得更高的权重?
10、 TF-IDF:词频逆文档频率 ( Term Frequency- -Inverse Document Frequency,TF-DF)是一种用于资讯检索与文本挖掘的常用加权技术。
TFDF是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中的其中份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
TFIDF=TF IDF
TF-IDF的主要思想是 :如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
TF-DF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。
词频( Term Frequency,TF) :指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数的归一化,以防止偏向更长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否。) ,其中 表示词语 i 在文档 j 中出现的频率, 表示 i 在 j 中出现的次数, 表示文档 j 的总词数。
逆向文件频率( Inverse Document Frequency,IDF) :是一个词语普遍重要性的度量,某一特定词语的IDF,可以由总文档数目除以包含该词语之文档的数目,再将得到的商取对数得到 ,其中 表示词语 i 在文档集中的逆文档频率,N表示文档集中的文档总数, 表示文档集中包含了词语 i 的文档数。
(11) TF-IDF对基于UGC推荐的改进 : ,为了避免热门标签和热门物品获得更多的权重,我们需要对“热门进行惩罚。
借鉴TF-IDF的思想,以一个物品的所有标签作为“文档”,标签作为“词语”,从而计算标签的“词频”(在物品所有标签中的频率)和“逆文档频率”(在其它物品标签中普遍出现的频率)。
由于“物品i的所有标签” 应该对标签权重没有影响,而 “所有标签总数” N 对于所有标签是一定的,所以这两项可以略去。在简单算法的基础上,直接加入对热门标签和热门物品的惩罚项: ,其中, 记录了标签 b 被多少个不同的用户使用过, 记录了物品 i 被多少个不同的用户打过标签。
(一)协同过滤(Collaborative Filtering, CF)
1、基于协同过滤(CF)的推荐:基于内容( Content based,CB)主要利用的是用户评价过的物品的内容特征,而CF方法还可以利用其他用户评分过的物品内容。
CF可以解决CB的一些局限:
- 物品内容不完全或者难以获得时,依然可以通过其他用户的反馈给出推荐。
- CF基于用户之间对物品的评价质量,避免了CB仅依赖内容可能造成的对物品质量判断的干。
- CF推荐不受内容限制,只要其他类似用户给出了对不同物品的兴趣,CF就可以给用户推荐出内容差异很大的物品(但有某种内在联系)
分为两类:基于近邻和基于模型。
2、基于近邻的推荐系统:根据的是相同“口碑”准则。是否应该给Cary推荐《泰坦尼克号》?
(二)基于近邻的协同过滤
1、 基于用户(User-CF): 基于用户的协同过滤推荐的基本原理是,根据所有用户对物品的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,并推荐近邻所偏好的物品。
在一般的应用中是采用计算“K-近邻”的算法;基于这K个邻居的历史偏好信息,为当前用户进行推荐。
User-CF和基于人口统计学的推荐机制:
- 两者都是计算用户的相似度,并基于相似的“邻居”用户群计算推荐。
- 它们所不同的是如何计算用户的相似度:基于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户可能有相同或者相似的口味和偏好。
2、基于物品(Item-CF):基于项目的协同过滤推荐的基本原理与基于用户的类似,只是使用所有用户对物品的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。
Item-CF和基于内容(CB)的推荐
- 其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。
同样是协同过滤,在基于用户和基于项目两个策略中应该如何选择呢?
- 电商、电影、音乐网站,用户数量远大于物品数量。
- 新闻网站,物品(新闻文本)数量可能大于用户数量。
3、 User-CF和Item-CF的比较
同样是协同过滤,在User-CF和ltem-CF两个策略中应该如何选择呢?
Item-CF应用场景
- 基于物品的协同过滤( Item-CF ) 推荐机制是 Amazon在基于用户的机制上改良的一种策略因为在大部分的Web站点中,物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对比较稳定,同时基于物品的机制比基于用户的实时性更好一些,所以 Item-CF 成为了目前推荐策略的主流。
User-CF应用场景
- 设想一下在一些新闻推荐系统中,也许物品一一也就是新闻的个数可能大于用户的个数,而且新闻的更新程度也有很快,所以它的相似度依然不稳定,这时用 User-cf可能效果更好。
所以,推荐策略的选择其实和具体的应用场景有很大的关系。
4、 基于协同过滤的推荐优缺点
(1)基于协同过滤的推荐机制的优点:
它不需要对物品或者用户进行严格的建模,而且不要求对物品特征的描述是机器可理解的,所以这种方法也是领域无关的。
这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好。
(2)存在的问题
方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。
推荐的效果依赖于用户历史好数据的多少和准确性。
在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。
对于一些特殊品味的用户不能给予很好的推荐。
(三)基于模型的协同过滤
1、基本思想
(1)用户具有一定的特征,决定着他的偏好选择
(2)物品具有一定的特征,影响着用户需是否选择它。
(3)用户之所以选择某一个商品,是因为用户特征与物品特征相互匹配。
基于这种思想,模型的建立相当于从行为数据中提取特征,给用户和物品同时打上“标签”;这和基于人口统计学的用户标签、基于内容方法的物品标签本质是一样的,都是特征的提取和匹配。
有显性特征时(比如用户标签、物品分类标签)我们可以直接匹配做出推荐;没有时,可以根据已有的偏好数据,去发据出隐藏的特征,这需要用到隐语义模型(LFM)。
2、基于模型的协同过滤推荐,就是基于样本的用户偏好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测新物品的得分,计算推荐
基于近邻的推荐和基于模型的推荐
- 基于近邻的推荐是在预测时直接使用已有的用户偏好数据,通过近邻数据来预测对新物品的偏好(类似分类)
- 而基于模型的方法,是要使用这些偏好数据来训练模型,找到内在规律,再用模型来做预测(类似回归)
训练模型时,可以基于标签内容来提取物品特征,也可以让模型去发据物品的潜在特征;这样的模型被称为 隐语义模型 ( Latent Factor Model,LFM)。
(1)隐语义模型(LFM):用隐语义模型来进行协同过滤的目标:
- 揭示隐藏的特征,这些特征能够解释为什么给出对应的预测评分
- 这类特征可能是无法直接用语言解释描述的,事实上我们并不需要知道,类似“玄学”
通过矩阵分解进行降维分析
- 协同过滤算法非常依赖历史数据,而一般的推荐系统中,偏好数据又往往是稀疏的;这就需要对原始数据做降维处理。
- 分解之后的矩阵,就代表了用户和物品的隐藏特征
隐语义模型的实例:基于概率的隐语义分析(pLSA)、隐式迪利克雷分布模型(LDA)、矩阵因子分解模型(基于奇异值分解的模型,SVD)
(2)LFM降维方法——矩阵因子分解
(3)LFM的进一步理解
我们可以认为,用户之所以给电影打出这样的分数,是有内在原因的,我们可以挖掘出影响用户打分的隐藏因素,进而根据未评分电影与这些隐藏因素的关联度,决定此未评分电影的预测评分。
应该有一些隐藏的因素,影响用户的打分,比如电影:演员、题材、年代…甚至不定是人直接可以理解的隐藏因子。
找到隐藏因子,可以对user和Iiem进行关联(找到是由于什么使得user喜欢/不喜欢此Item,什么会决定user喜欢/不喜欢此item),就可以推测用户是否会喜欢某一部未看过的电影。
(4)矩阵因子分解
(5)模型的求解——损失函数
(6)模型的求解算法——ALS
现在,矩阵因子分解的问题已经转化成了一个标准的优化问题,需要求解P、Q,使目标损失函数取最小值。
最小化过程的求解,一般采用随机梯度下降算法或者交替最小二乘法来实现交替最小二乘法( Alternating Least Squares,ALS)
ALS的思想是,由于两个矩阵P和Q都未知,且通过矩阵乘法耦合在一起,为了使它们解耦,可以先固定Q,把P当作变量,通过损失函数最小化求出P,这就是一个经典的最小二乘问题;再反过来固定求得的P,把Q当作变量,求解出Q:如此交替执行,直到误差满足阅值条件,或者到达迭代上限。
(7)梯度下降算法
㈡ 推荐系统产品和算法概述丨产品杂谈系列
本文主要是对最近所学的推荐系统的总结,将会简单概述非个性化范式、群组个性化范式、完全个性化范式、标的物关联标的物范式、笛卡尔积范式等5种常用的推荐范式的设计思路。
许多产品的推荐算法都依赖于三类数据:标的物相关的描述信息(如推荐鞋子,则包括鞋子的版型、适用对象、材质等信息、用户画像数据(指的是用户相关数据,如性别、年龄、收入等)、用户行为数据(例如用户在淘宝上的浏览、收藏、购买等)。这三类数据是推荐模型的主要组成部分,除此之外一些人工标注的数据(例如为商品人工打上标签)、第三方数据也能够用于补充上述的三类数据。
服务端在有以上数据的基础上,就可以从三个维度进行推荐:
根据个性化推荐的颗粒度,我们可以将基于用户维度的推荐分为非个性化推荐、群组个性化推荐及完全个性化推荐三种类型。
非个性化推荐指的是每个用户看到的推荐内容都是一样的 在互联网产品中,我们最常见的非个性化推荐的例子是各种排行榜,如下图是酷狗音乐的排行榜推荐,通过各个维度计算各类榜单,不管是谁看到这个榜单,上面的排序和内容都是一致的。
群组个性化推荐指的是将具有相同特征的用户聚合成一组,同一组用户在某些方面具备相似性,系统将为这一组用户推荐一样的内容 。这种推荐方式是很多产品进行用户精细化运营时会采用的方式,通过用户画像系统圈定一批批用户,并对这批用户做统一的运营。例如音乐软件的推荐播放,若以摇滚乐为基准将一批用户聚合成组,则为这些用户提供的每日推荐歌单是相同的内容和顺序,但与另一组爱听民谣的用户相比,两组用户看到的每日推荐内容将是不同的。
完全个性化指的是为每个用户推荐的内容都不一样,是根据每一位用户的行为及兴趣来为用户做推荐,是当今互联网产品中最常用的一种推荐方式 。大多数情况下我们所说的推荐就是指这种形式的推荐,例如淘宝首页的“猜你喜欢”就是一个完全个性化的推荐,千人千面,每个人看到的推荐尚品都不一样。
完全个性化可以只基于用户行为进行推荐,在构建推荐算法时只考虑到用户个人的特征和行为 ,不需要考虑其他用户,这也是最常见的内容推荐方式。除此之外, 还可以基于群组行为进行完全个性化推荐,除了利用用户自身的行为外,还依赖于其他用户的行为构建推荐算法模型 。例如,用户属性和行为相似的一群用户,其中90%的用户买了A商品后也买了B商品,则当剩下的10%用户单独购买B商品时,我们可以为该用户推荐商品A。
基于群组行为进行的完全个性化推荐可以认为是全体用户的协同进化,常见的协同过滤、基于模型的推荐等都属于这类推荐形式。
基于标的物的推荐指的是用户在访问标的物详情页或者退出标的物详情页时,可以根据标的物的描述信息为用户推荐一批相似的或者相关的标的物,对应的是最开始提到的“标的物关联标的物范式” 。如下图酷狗的相似歌曲推荐,
除了音乐产品外,视频网站、电商、短视频等APP都大量使用基于标的物维度的推荐。如下图便是YouTube基于标的物关联标的物的推荐。在YouTube上我观看一个周杰伦的音乐视频时,YouTube在该页面下方为我推荐更多与周杰伦有关的视频。
基于用户和标的物交叉维度的推荐指的是将用户维度和标的物维度结合起来,不同用户访问同一标的物的详情页时看到的推荐内容也不一样,对应的是开头提到的笛卡尔积推荐范式。 拿酷狗音乐对相似歌曲的推荐来举例,如果该推荐采用的是用户和标的物交叉维度的推荐的话,不同用户看到的“没有理想的人不伤心”这首歌曲,下面的相似歌曲是不一样的。拿淘宝举例的话,一样是搜索“裤子”这一关键词,不同的人搜索得到的搜索结果和排序是不同的,可能用户A搜索出来优先展示的是牛仔裤,而用户B优先展示的是休闲裤,淘宝将结合搜索关键词与用户个人的历史行为特征展示对应的搜索结果和排序。
对于基于笛卡尔积推荐范式设计的推荐系统来说,由于每个用户在每个标的物上的推荐列表都不一样,我们是没办法是先将所有组合计算出来并储存(组合过多,数量是非常巨大的),因此对于系统来说,能否在用户请求的过程中快速地为用户计算个性化推荐的标的物列表将会是一个比较大的挑战,对于整个推荐系统的架构也有更高的要求,因此在实际应用中,该种推荐方式用的比较少。
非个性化范式指的是为所有用户推荐一样的标的物列表,常见的各种榜单就是基于此类推荐规则,如电商APP中的新品榜、畅销榜等。排行榜就是基于某个规则来对标的物进行排序,将排序后的部分标的物推荐给用户。例如新品榜是按照商品上架的时间顺序来倒序排列,并将排序在前列的产品推荐给用户。而畅销榜则是按照商品销量顺序降序排列,为用户推荐销量靠前的商品。
根据具体的产品和业务场景,即使同样是非个性化范式推荐,在具体实施时也可能会比较复杂。例如在电商APP中畅销榜的推荐可能还会将地域、时间、价格等多个维度纳入考虑范围内,基于每个维度及其权重进行最终的排序推荐。
大部分情况下,非个性化范式推荐可以基于简单的计数统计来生成推荐,不会用到比较复杂的机器学习算法,是一种实施门槛较低的推荐方式。基于此,非个性化范式推荐算法可以作为产品冷启动或者默认的推荐算法。
完全个性化范式是目前的互联网产品中最常用的推荐模式,可用的推荐方法非常多。下面对常用的算法进行简单梳理。
该推荐算法只需要考虑到用户自己的历史行为而不需要考虑其他用户的行为,其核心思想是:标的物是有描述属性的,用户对标的物的操作行为为用户打上了相关属性的烙印,这些属性就是用户的兴趣标签,那么我们就可以基于用户的兴趣来为用户生成推荐列表。还是拿音乐推荐来举例子,如果用户过去听了摇滚和民谣两种类型的音乐,那么摇滚和民谣就是这个用户听歌时的偏好标签,此时我们就可以为该用户推荐更多的摇滚类、民谣类歌曲。
基于内容的个性化推荐在实操中有以下两类方式。
第一种是基于用户特征标识的推荐。
标的物是有很多文本特征的,例如标签、描述信息等,我们可以将这些文本信息基于某种算法转化为特征向量。有了标的物的特征向量后,我们可以将用户所有操作过的标的物的特征向量基于时间加权平均作为用户的特征向量,并根据用户特征向量与标的物特征向量的乘积来计算用户与标的物的相似度,从而计算出该用户的标的物推荐列表。
第二种是基于倒排索引查询的推荐。
如果我们基于标的物的文本特征(如标签)来表示标的物属性,那么基于用户对该标的物的历史行为,我们可以构建用户画像,该画像即是用户对于各个标签的偏好,并且对各个标签都有相应的偏好权重。
在构建完用户画像后,我们可以基于标签与标的物的倒排索引查询表,以标签为关键词,为用户进行个性化推荐。
举个粗暴的例子,有歌曲A、B、C分别对应摇滚、民谣、古风三个音乐标签,我听了歌曲A、B,则在我身上打了摇滚和民谣的标签,又基于我听这两个歌曲的频率,计算了我对“摇滚”和“民谣”的偏好权重。
在倒排索引查询表中,摇滚和民谣又会分别对应一部分歌曲,所以,可以根据我对摇滚和民谣的偏好权重从查询表中筛选一部分歌曲并推荐给我。
基于倒排索引查询的推荐方式是非常自然直观的,只要用户有一次行为,我们就可以据此为用户进行推荐。但反过来,基于用户兴趣给用户推荐内容,容易局限推荐范围,难以为用户推荐新颖的内容。
基于协同过滤的推荐算法,核心思想是很朴素的”物以类聚、人以群分“的思想。所谓物以类聚,就是计算出每个标的物最相似的标的物列表,我们就可以为用户推荐用户喜欢的标的物相似的标的物,这就是基于物品的协同过滤。所谓人以群分,就是我们可以将与该用户相似的用户喜欢过的标的物(而该用户未曾操作过)的标的物推荐给该用户,这就是基于用户的协同过滤。
常见的互联网产品中,很多会采用基于标的物的协同过滤,因为相比之下用户的变动概率更大,增长速度可能较快,这种情况下,基于标的物的协同过滤算法将会更加的稳定。
协同过滤算法思路非常简单直观,也易于实现,在当今的互联网产品中应用广泛。但协同过滤算法也有一些难以避免的问题,例如产品的冷启动阶段,在没有用户数据的情况下,没办法很好的利用协同过滤为用户推荐内容。例如新商品上架时也会遇到类似的问题,没有收集到任何一个用户对其的浏览、点击或者购买行为,也就无从基于人以群分的概念进行商品推荐。
基于模型的推荐算法种类非常多,我了解到的比较常见的有迁移学习算法、强化学习算法、矩阵分解算法等,且随着近几年深度学习在图像识别、语音识别等领域的进展,很多研究者和实践者也将其融入到推荐模型的设计当中,取得了非常好的效果。例如阿里、京东等电商平台,都是其中的佼佼者。
由于该算法涉及到比较多的技术知识,在下也处于初步学习阶段,就不班门弄斧做过多介绍了,有兴趣的朋友可以自行进行学习。
群组个性化推荐的第一步是将用户分组,因此,采用什么样的分组原则就显得尤为重要。常见的分组方式有两种。
先基于用户的人口统计学数据(如年龄、性别等)或者用户行为数据(例如对各种不同类型音乐的播放频率)构建用户画像。用户画像一般用于做精准的运营,通过显示特征将一批人圈起来形成同一组,对这批人做针对性的运营。因为前头已经提到此算法,这里不再重复介绍。
聚类是非常直观的一种分组思路,将行为偏好相似的用户聚在一起成为一个组,他们有相似的兴趣。常用的聚类策略有如下两类。
标的物关联标的物就是为每个标的物推荐一组标的物。该推荐算法的核心是怎么从一个标的物关联到其他的标的物。这种关联关系可以是相似的(例如嘉士伯啤酒和喜力啤酒),也可以是基于其他维度的关联(例如互补品,羽毛球拍和羽毛球)。常用的推荐策略是相似推荐。下面给出3种常用的生成关联推荐的策略。
这类推荐方式一般是利用已知的数据和标的物信息来描述一个标的物,通过算法的方式将其向量化,从而根据不同标的物向量之间的相似度来急速标的物之间的相似度,从而实现相识标的物的推荐。
在一个成熟的产品中,我们可以采集到的非常多的用户行为,例如在电商平台中,我们可以手机用户搜索、浏览、收藏、点赞等行为,这些行为就代表了用户对某个标的物的某种偏好,因此,我们可以根据用户的这些行为来进行关联推荐。
例如,可以将用户的行为矩阵分解为用户特征矩阵和物品特征矩阵,物品特征矩阵可以看成是衡量物品的一个向量,利用该向量我们就可以计算两个标的物之间的相似度了,从而为该用户推荐相似度高的其他产品。
再例如, 采用购物篮的思路做推荐,这种思路非常适合图书、电商等的推荐 。 以电商为例,我们可以把用户经常一起浏览(或者购买)的商品形成一个列表,将过去一段时间所有的列表收集起来。对于任何一个商品,我们都可以找到与它一起被浏览或者购买的其他商品及其次数,并根据次数来判断其关联性,从而进行关联推荐。
我们可以对用户进行分组,同样,我们也能够对标的物进行聚类分组。通过某位参考维度,我们将一些列具有相似性的标的物分成一组,当我们为用户进行推荐的时候,便可以将同一组内的其他标的物作为推荐对象,推荐给用户。
笛卡尔积范式的推荐算法一般是先采用标的物关联标的物范式计算出待推荐的标的物列表。再根据用户的兴趣来对该推荐列表做调整(例如根据不同兴趣的权重重新调整推荐列表的排序)、增加(例如基于个性化增加推荐对象)、删除(例如过滤掉已经看过的),由于其复杂程度较高在实际业务场景中应用较少,这边不再详细介绍。
好了,本次的介绍就到此为止了。本次主要是做了一个非常简单的推荐算法概述,在实际的业务场景中,还经常需要与产品形态或者更多的未读(如时间、地点等)相结合,是一个很有意思的领域,有兴趣的朋友可以进一步了解。
㈢ 个性化推荐算法
随着算法的普及,大量的产品有了个性化推荐的功能,这也成为内容类产品的标配。个性化定制化逐渐成为了互联网思维的新补充,被提升到了越来越重要的地位。算法推荐经过了很长一段时间的发展,才逐渐达到能给用户惊喜的阶段。比如在电商领域,推荐算法可以挖掘用户潜在购买需求,缩短用户选取商品的时间,提升用户的购物体验;在新闻或段视频领域,推荐算法可以推送用户喜欢的内容,提高用户的阅读效率,减少用户选择内容的时间,也增加了用户在产品上的停留时长。
算法应用阶段
内容类产品发展初期,推荐算法一般为“热度算法”,就是系统把热点内容优先推荐送给用户,完成热点内容的高阅读率。在积累了一定的用户数据后,会发现用户阅读内容过于集中于热点信息,长尾信息中的优质资源往往被忽略,造成资源浪费。“千人一面”的状况已不是一个优质的解决方案,所以算法逐渐演变为“个性化推荐”,也就是协同过滤的方法论支撑下的一种算法。协同过滤能很好的根据用户的喜好,推荐匹配的内容,减少资源浪费,增加用户使用的友好体验。真正做到“千人千面”。
推荐算法的信息来源
第三方数据
一个新系统在初期没有数据积累的情况下,可与第三方合作,互授部分信息共享。比如,很多系统支持微信登陆,这时候可以获取客户的微信信息,生活地点,部分生活习惯等。同时会获取用户的社交信息,共同好友越多表明圈子越相似,可以推荐更多相似的内容。
用户行为数据
记录用户在系统内的使用习惯,可以准确的描述单个用户的行为特征,爱好特征等有效的信息,系统根据提取出的分析结果,将内容与之匹配,完成更精准的推荐。如,某用户经常浏览体育信息,系统将对应推荐更多体育相关的咨询,省去用户搜索筛选的时间。
基于生活习惯
基于生活习惯,生活常识的推荐,往往也可以作为内置的一个信息来源途径。比如,外卖的app推荐用户的餐厅,一般默认是位置优先,就近推荐,如果是快中午的时间段使用,系统默认推荐午餐,其次是晚餐。靠生活常识作出的系统算法,可以更符合人类的习惯,给用户更好的体验。
热度算法
热度算法简单的说就是把最核心的内容优先推荐,用新闻举例,每一条新闻都具有实效性,随着时间的推移,该条新闻的关注度降低,关注点被新的热点新闻取代。量化以上的过程,把各个影响因素设定为变量,会得出以下的公式:
新闻热度=初始热度分+用户交互热度分-衰减热度分
初始热度分为新闻产生时,系统对新闻主体的预判热度值。预判的分值一般为以下两种模式,一种情况,按照新闻类别的不同,娱乐新闻大于财经新闻,大于国际新闻,大于文化新闻等等系统的预设,依次给出不同的初始热度分;另一种情况,系统预置热词词库,用新闻的关键词和词库的去匹配,匹配度高的,初始热度分高。
用户的交互热度分也是一个变量,先要明确用的哪些行为会影响新闻热度,然后对这些行为量化,加权或打分等方式。例如,网易云音乐,用户的听歌,重复循环,收藏,评论,分享等行为,系统为每一种行为打分,求和后得出用户交互的热度分:
用户交互热度分=听歌X10+循环X5+收藏X10+评论X5+分享X3
此公式还可以继续细化,每一种操作的分值也可以作为变量,在产品前期时,传播产品为主要任务,所以分享的加权要大一些,随着网易云的发展,社区的概念逐渐强化,评论区互动的加权会加大,所以评论的分值会增加,系统随时调整分数加权,得出更准确的用户交互的影响值。
衰减热度分是一个随时间变化而变化的数值,往往是一个函数的表达。用新闻举例,新闻的热度会随着时间的推移而衰减,并且趋势是越来越快,人们在接受新的热点后,迅速忘记“旧闻”,直至热度趋近于零。根据理论数据,构建函数,准确的表达衰减分值。
还有很多其他的影响因素,比如传播次数,传播层数,停留时长等等,都会影响热度值,要想更精准的表达,就需要把涉及到的因素都作为变量,不断完善算法,才能更精准的完成推荐。
个性化推荐算法
随着用户量的增加,产品日活的增加,用户也不能仅限于千人一面热点阅读的模式中,个性化推荐在此时显得尤为重要。个性化推荐有两种常见的解决方案,一种是基于内容的推荐算法,推荐内容往往是根据用户的使用习惯得来,较为精准;另一种是基于用户的协同推荐算法,系统会根据以往使用内容,为用户建模,然后根据群体中个体的使用习惯,推荐更多超预期的内容,达到预测推荐的效果。
基于内容的推荐算法-预期内
基于内容的推荐算法,靠收集用户的使用习惯,进而推荐相关的内容。系统使用分词库匹配、关键词匹配等等方式,达到内容的匹配,做到内容的精确划分。比如,用户浏览了某部科幻电影,系统就会按照该电影所对应的标签,如科幻,然后系统推荐相同标签的影片给用户。
这样的推荐方案,确定性强,推荐的内容都是根据用户的历史来确定,不能挖掘用户的潜在需求。
基于用户的协同推荐-超预期
做到精准推荐后,系统会继续挖掘更潜在的推荐需求,给用户超预期的推荐体验。这就到了基于用户协同推荐的阶段。简单的说,这种算法是增加了用户建模的环节,将同标签的用户群分,对比群体中单个个体的特征,默认这种特征为这类人的潜在特征,再将此特征内容推荐给同标签的用户,达到超预期的推荐效果。
比如,某用户购买了一个苹果手机,系统会将此用户归类为果粉,系统识别出很多果粉除了买苹果的商品,还会购买小米作为备用机,这个特征会被系统识别为潜在需求,推荐给果粉,减少果粉选择备用机的时间。
这样的推荐算法,不仅能完成精准的推荐,还能给用户小惊喜,让系统“有温度”。但是这样的推荐方式,往往需要积累了大量用户资料为基础,才可以精确的完成。