机器学习05-电子推荐系统

电子推荐系统

  • 推荐系统基础
  • 通用模型
    • 推荐系统结构
    • 基于人口统计学的推荐
    • 基于内容的推荐
    • 基于协同过滤的推荐算法
    • 基于隐语义模型算法
    • 基于图的模型
      • PageRank算法
    • 基于关联规则的推荐
    • Apriori
    • FP-Growth
    • 基于知识的推荐
    • 基于标签的推荐
  • 推荐系统评测
  • 推荐系统常见问题

MOOC大学课程 商务数据分析跟学笔记

推荐系统基础

推荐系统是一种帮助用户快速发现有用信息的工具,通过分析用户的历史行为,研究用户偏好,对用户的历史数据建模,从而主动给用户推荐能够满足他们感兴趣的信息。本质上,推荐系统是解决用户额外信息获取的问题,在海量冗余信息的情况下,推荐系统主动筛选信息,将基础数据与算法模型进行结合,帮助用户确定目标,最终达到智能化推荐。

推荐系统的优点有:

  • 提升用户体验
  • 提高产品销量
  • 是一种系统主动的行为,减少用户操作
  • 可以挑战传统的2/8原则

推荐系统中,涉及用户之间相似度、物品之间相似度、用户与物品之间相似度的计算

  • 皮尔逊相关系数[-1,1]
    s i m ( x , y ) = ∑ i = 1 n ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 n ( x i − x ‾ ) 2 ∑ i = 1 n ( y i − y ‾ ) 2 sim(x,y)=\frac{\sum_{i=1}^n(x_i-\overline x)(y_i-\overline y)}{\sqrt{\sum_{i=1}^n(x_i-\overline x)^2}\sqrt{\sum_{i=1}^n(y_i-\overline y)^2}} sim(x,y)=i=1n(xix)2 i=1n(yiy)2 i=1n(xix)(yiy)
    其中,n为两个用户x,y共同评价过的物品的总数, x i x_i xi为用户x对物品i的评分
  • 欧几里得相似度
    欧几里得空间中两点的距离: d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x,y)=\sqrt{\sum_{i=1}^n(x_i-y_i)^2} d(x,y)=i=1n(xiyi)2
    对应的相似度为: s i m ( x , y ) = 1 1 + d ( x , y ) sim(x,y)=\frac{1}{1+d(x,y)} sim(x,y)=1+d(x,y)1
    其中,x,y对应n维空间两个用户对物品的喜好值
  • 余弦向量相似度(只区分方向上的差异会带来误差,通常需要减去均值再计算相似度(调整后的余弦相似度))[-1,1]
    s i m ( A , B ) = ∑ i = 1 n A i X B i ∑ i = 1 n ( A i ) 2 ∑ i = 1 n ( B i ) 2 sim(A,B)=\frac{\sum_{i=1}^n A_iXB_i}{\sqrt{\sum_{i=1}^n(A_i)^2}\sqrt{\sum_{i=1}^n(B_i)^2}} sim(A,B)=i=1n(Ai)2 i=1n(Bi)2 i=1nAiXBi
  • 曼哈顿相似度(比较适合数据是0或1的情况)
    d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x,y)=\sum_{i=1}^n|x_i-y_i| d(x,y)=i=1nxiyi
  • 对数似然相似度(比较适合数据是0或1的情况)
    参考Mahout LogLikelihoodSimilarity类:
    s i m ( x , y ) = 2 ∗ ( m a t r i x E n t r o p y − r o w E n t r o p y − c o l u m n E n t r o p y ) sim(x,y)=2*(matrixEntropy-rowEntropy-columnEntropy) sim(x,y)=2(matrixEntropyrowEntropycolumnEntropy)
  • 斯皮尔曼相似度(排序后的Person相关系数,计算效率低)

通用模型

推荐系统结构

3个重要模块:输入模块、推荐算法模块、推荐输出模块
机器学习05-电子推荐系统_第1张图片

基于人口统计学的推荐

基于人口统计学的推荐机制根据用户的人口统计学信息发现用户间的相关程度向用户推荐与之相似的用户感兴趣的物品。基于人口统计学信息对用户画像,根据画像计算用户间相似度,形成用户群体,按照用户群的喜好推荐给当前用户一些物品。这种方法不依赖于物品本身的特征,不同的物品领域都可以使用,具有领域独立性,但人口统计学信息未必准确,所以计算结果的可信度较低

基于内容的推荐

基于内容推荐的原理是根据用户感兴趣的物品A,找到和A内容信息相近的物品B。提取用户偏好的物品特征是基于内容推荐算法的关键,物品的特征有属性、描述等,例如图书的特征是一些文本内容,特征提取涉及文本处理相关技术。基于内容推荐算法的优点是简单有效,推荐效果直观,容易理解,不需要领域知识

基于协同过滤的推荐算法

基于用户行为数据设计的推荐算法,称为协同过滤算法。此方法主要根据用户的历史行为,寻找用户或物品的临近集合,以此计算用户对物品的偏好,包括基于领域、图、关联规则、知识的推荐算法,其中,最广泛应用的是基于领域的方法,在实践中往往是上述几种方法的混合应用

基于用户的协同过滤算法

基于用户的协同过滤算法为用户推荐兴趣相似的其他用户喜欢的物品。算法的关键是计算两个用户的兴趣相似度(余弦相似性,皮尔逊相关系数和修正的余弦相似度)
步骤:
1.找到与目标用户兴趣相似的用户集合
2.找到这个集合中用户喜欢的,且目标用户没有用过的物品,推荐给目标用户
注意:计算用户相似度时,要避免热门物品自带马太效应的影响,即大部门用户可能都对热门的物品表现出喜欢的状况,但是这些用户之间并非一类

基于用户的协同过滤算法缺点是随着用户数目的增大,计算用户兴趣相似度越来越复杂,时间和空间复杂度与用户数接近平方关系,所以一般采用离线方式推荐,当用户产生新行为时,不会立即进行计算,推荐结果不会立即变化,此外,这一算法是基于隐式群体的兴趣进行推荐,可解释性不强,所以,比较适用于用户兴趣稳定且不明显的场景

基于物品的协同过滤算法

基于物品的协同过滤算法是给用户推荐跟他喜欢的物品相似的物品,是基础的推荐算法,该算法通过用户的行为计算物品之间的相似度,而基于内容的推荐算法计算的是物品内容特征的相似度

基于隐语义模型算法

隐语义模型最早出现在文本挖掘领域,用于找到文本的隐含语义,在推荐系统中应用的核心思想是通过隐含特征关联用户兴趣和物品,通过矩阵分解建立用户和隐类之间的关系、物品和隐类之间的关系,最终得到用户对物品的偏好关系,即对于某个用户,首先得到他的兴趣分类,然后从分类中挑选出他可能喜欢的物品。
隐语义模型使用算法自动得到物品和用户的分类权数,不仅准确度更高,可以得到可靠的权重,还减少了标记物品所需要的人力。算法首先通过隐语义分析给物品分类,并计算出物品属于每个类的权重,然后,确定用户对哪类物品感兴趣,以及感兴趣程度。对于一个给定的分类,选择那些属于这个类的物品推荐给用户,以及确定这些物品在一个类中的权重。

p r e f e r e n c e ( u , i ) = ∑ k = 1 n p u , k q i , k preference(u,i)=\sum_{k=1}^n p_{u,k}q_{i,k} preference(u,i)=k=1npu,kqi,k
其中k为隐类, p u , k p_{u,k} pu,k为用户u与隐类k之间的关系,q_{i,k}为物品i与隐类k之间的关系

基于图的模型

用户行为很容易用二分图表示,因此很多图的算法都可以用到推荐系统中,其中物品作为图中节点,节点之间连线是用户行为中共同购买或浏览,物品之间的相似性可以通过计算图中节点之间的强度来实现
机器学习05-电子推荐系统_第2张图片

PageRank算法

PageRank通过网页之间的链接关系计算网页权重,权重高的网页特点是:链接向它的网页数量多、链向它的网页权重也高

P R ( p a g e i ) = 1 − d N + d ∑ P R ( p a g e j ) L ( p a g e j ) PR(page_i)=\frac{1-d}{N}+d\sum\frac{PR(page_j)}{L(page_j)} PR(pagei)=N1d+dL(pagej)PR(pagej)

应用于推荐系统中用于用户与物品之间的相似度计算,对于推荐系统,需要计算的是物品节点相对于某一个用户节点u的相关性,pagerank算法能够为用户对所有物品进行排序,基于从不同点开始的概率不同,算法的执行过程如下:
1.假设要给用户u进行个性化推荐,从其对应的节点开始在用户物品二分图上进行随机游走
2.游走到任何一个节点时,计算节点的访问概率,由其决定是否游走

基于关联规则的推荐

关联规则是反映物品与其他物品之间的关联性,早期用于零售行业的购买行为分析,也称购物篮分析,后面也用于关联推荐(协同),关键概念包含支持度、置信度、提升度,常见的关联分析算法有Apriori和FP增长算法。
关联规则挖掘数据的两种表示方法:数据库中的矩阵表示或者项目的集合形式

  • 关联规则体
    body -> head[support,condidence]

  • 关联规则概念
    在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联结构

  • 关联规则挖掘过程:
    找出所有频繁项目集(满足最小支持度条件)
    根据频繁项目集到处所有强关联规则(将频繁项目集一拆为二,找出满足最小置信度要求的关联规则)

  • 布尔型和数值型关联规则:
    根据处理的项目类别,关联规则还可分为布尔型和数值型关联规则,布尔型关联规则处理的项目都是离散的,它显示了这些变量之间的关系,例如“性别=女”->“职业=秘书”;
    数值型关联规则可以和多维关联或多层关联结合起来,首先需要对数值型属性进行预处理,参考连续属性离散化方法或统计方法把其进行分割。数值型关联规则也可以包含分类变量,例如“性别=女”->“平均收入>2300”, 又如age(x,[30,39])^income(x,[42,48])->buys(x,“PC”)[1%,75%]

  • 挖掘多层的关联规则
    自上而下,深度优先的方法:
    先找高层的强规则 牛奶->面包
    再找底层的若规则 酸奶->黄面包
    或者用层次交叉的方法

  • 分离关联规则
    如顾客购买了A但不会购买B的规则,A->B

  • 应用场景
    购物篮分析、交叉销售、产品目录设计(页面、货架)、聚集、分类、文本分析、新闻热点关联分析、产品质量关联分析等

  • 关联规则评价指标
    支持度
    置信度
    提升度:判断规则是否有实际价值,>1有效
    KULC
    PR

Apriori

算法的基本思想是先找出所有的频繁项集,然后由频繁项集产生强关联规则,这些规则必须满足最小支持度和最小置信度。构造频繁项集时,算法要多次扫描样本集,由候选频繁项集生成频繁项集

  • 基本思想(启发式):频繁项集的子集也一定是频繁的
    步骤:先找出1频繁项集,再找2频繁项集,再找3频繁项集…
    n频繁项集组合规则:先将每个事物中的项目排序,然后先从n-1频繁项集中找到能相连的组合,在从中取出满足条件的频繁项集

  • python Apriori库

  • 分布式并行Apriori算法
    将大事务数据库D拆分成n个不相交的子集,每个子集用Apriori求局部频繁项集

FP-Growth

算法是基于FP树生成频繁项集的,算法只扫描两次数据集,且不使用候选项集,直接按照支持度构造出一个频繁模式树,用这棵树生成关联规则

  • FP树算法

基于知识的推荐

基于知识的推荐主要应用于知识型的产品中,在某种程度是一种推理技术,推荐系统根据用户目前所处的知识级别,同时根据所有的知识级别进行分析,为用户推荐合适进阶的信息,这种推荐系统不依赖于用户评分等关于用户偏好的历史数据,不存在冷启动方面的问题,可以响应用户的即时需求,当用户偏好发生变化时不需要任何训练

根据层次关系图的构建方法,基于知识的推荐可以划分为基于约束推荐和基于实例推荐。
早期的基于实例的推荐采用的是基于查询的方法,由用户指定需求,通过目录检索或搜索发现目标物品,用户对当前浏览的物品进行评价,然后基于其评价的结果进行导航,这是基于实例推荐系统的关键,评价的基本思想是用户以当前物品为满足的目标来指明他们的要求,推荐的过程就是商品筛选过滤的过程
基于约束的推荐系统强调推荐时的约束规则,基于约束的推荐系统是利用预先定义的推荐知识库显式的定义约束,把推荐任务看作是解决一个约束满足问题的过程,满足约束的候选项就推荐给用户。基于约束的推荐方法通常被用来为那些不经常被购买的产品领域构建推荐系统,而且产品非常复杂,很多顾客不能详细的了解其所有的技术特征,特别是在专业设备、金融服务或更复杂的产品等领域,基于约束的推荐系统一般会涉及用户属性、产品属性、过滤条件、物品约束条件、合取查询

基于标签的推荐

标签是一种可以用来描述信息的关键词,可以作为物品的元信息来描述物品的特征,也可以用于标识用户的喜好。基于标签的推荐算法是通过统计每个用户最常用的标签,统计时往往计算权重值对标签进行排序,可加入时间因子等。对于每个标签,统计打过这个标签次数最多的物品列表,这样对于一个用户,就可以依据其常用标签找到对应的热门物品推荐给他

标签生成优化
用户浏览热门标签对应的内容不能代表用户个性化的兴趣,需要应用标签权重来实现标签的排序和选择,对于时间久的标签需要降低权重,最新的标签更能说明用户兴趣所在。一般情况下可以结合标签出现次数和最后标记时间,假设标签出现的次数为n,上一次访问此标签的时间为s秒,可以通过公式 W = n / s W = n/s W=n/s来计算标签 i 对应的权重值。对于新用户、新物品,标签数量可能过少,需要对标签进行扩展,找到相似的标签,此外,还可以通过构建语料库对标签之间的共现次数进行统计,得到标签之间的概率相关性,构建标签相似性矩阵,或者通过第三方知识库构建向量空间模型,可快速对用户兴趣标签进行扩展

标签清理
普通用户所打的标签往往比较随意,标签质量不稳定,可以结合信息熵对用户生成的标签进行验证,判断用户生成标签的稳定程度,有针对性的过滤噪声标签;另外不用用户会生成多个具有同一意义的标签,需要进行标签相似度计算,清理掉同义词,在使用LDA等主题提取算法时,由于部分算法是依据词频等因素提取主题关键词,容易提取到一些无意义的词汇,需要将无义词通过停用词来进行删除,方便作出推荐解释,此外,在中文主题提取中涉及中文分词,分词模块质量会影响生成的标签质量4

推荐系统评测

评测的目的是确定算法在什么情况下性能最好,一般分为用户维度,物品维度,时间维度

评测方法通常分为离线实验,用户调查,在线实验(A/B测试)

评测指标:

  • 用户满意度
    用户点击率,停留时间,转化率等指标
  • 预测准确度
    预测评分准确度(MAE,RMSE)
    TopN推荐(precision,recall)
  • 覆盖率,描述一个推荐系统对物品长尾的发掘能力,覆盖率为100%的推荐系统可将每个物品都推荐给至少一个用户,防止只推荐热门商品
  • 多样性:满足用户兴趣多样性
  • 新颖性:向用户推荐非热门物品的能力
  • 惊喜度
  • 信任度
  • 实时性
  • 健壮性

推荐系统常见问题

因为用户数据少或用户行为少的冷启动问题

  • 利用上下文信息
  • 利用社交网络数据

你可能感兴趣的:(机器学习,推荐系统)