数据挖掘与机器学习(part 10)推荐算法Recommendation Algorithm & 隐语义模型(LFM)& 协同过滤算法 & SVD

什么是大数据时代的个性化推荐?

应用场景变化:线下---->线上

数据量变化:少量的客户信息->完备的客户画像

实现方式变化:客户经理的个人判断->数据驱动的智能算法

为什么需要个性化推荐?

长尾分布Long Tail Distribution

传统市场的 80/20原则:

80%的销售额来自于20%的热门商品

互联网市场下的变化:

  1. Amazon:在2015年,Amazon的销售额达到了1070亿美元,其中35%,即374.5亿美元,是通过个性化推荐系统产生的。

  2. Netflix:同年,Netflix的销售额为67.8亿美元,个性化推荐对其销售额的贡献高达60%,即40.68亿美元。

好的推荐系统

推荐系统的种类

  1. 社会化推荐(Social Recommendation)

    • 这种类型的推荐系统利用社交网络信息来提供推荐。它们可能考虑用户的社交关系、朋友或社交圈的喜好和行为。
  2. 基于内容的推荐(Content-Based Filtering)

    • 在这种推荐系统中,推荐是基于用户过去喜欢的内容的特征。系统分析用户过去的行为和偏好,然后推荐具有相似特征的新内容。
  3. 基于协同过滤的推荐(Collaborative Filtering)

    • 协同过滤推荐系统通过分析大量用户的行为数据来工作。它们可以是用户基础的(考虑相似用户的喜好)或项目基础的(推荐与用户过去喜欢的物品相似的物品)。

推荐系统的实验方法

  1. 离线实验(Offline Experiment)

    • 这种方法涉及使用历史数据来测试和评估推荐系统。通常,数据被分割为训练集和测试集,系统在训练集上进行训练,并在测试集上进行评估。
  2. 用户调查(User Study)

    • 用户调查是一种通过直接收集用户反馈来评估推荐系统的方法。这可以包括调查问卷、访谈或观察用户与推荐系统的交互。
  3. 在线实验(Online Experiment)A / B test

    • 在线实验,也称为A/B测试,是在实际的生产环境中进行的。它们允许比较推荐系统的不同版本或参数设置对用户行为的影响。在线实验可以提供关于推荐系统在真实世界中表现的直接证据。

常用算法简介

基于内容的推荐

假设:用户兴趣的连贯性(用户未来喜欢的东西,与过去喜欢的东西是相似的

优点:直观,可解释;缺点:覆盖率、多样性、新颖度、惊喜度均不高

相似性计算:

协同过滤算法

基于用户行为分析的推荐算法是个性化推荐系统的重要算法,一般将这种类型的算法称为协同过滤算法

基于邻域的方法(neighborhood-based)

1.基于用户的协同过滤算法(UserCF)
1.1基础算法:(1)找到和目标用户兴趣相似的用户集合,找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户

对应(1)计算用户u,v兴趣相似度

对应(2)计算用户u对物品i的感兴趣程度

1.2 用户相似度算法的改进

两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度

惩罚了用户u和用户v共同兴趣列表中热门物品对他们相似度的影响

基于近邻的方法

2.基于物品的协同过滤算法(ItemCF)
2.1 基础算法:(1)计算物品之间的相似度

(2)根据物品的相似度和用户的历史行为给用户生成推荐列表对应(1)计算物品i与j的相似度

这个公式存在一个问题:如果物品j很热门,很多人都喜欢,相似度就会很大,接近1,

因此,该公式会造成任何物品都会和热门的物品有很大的相似度对应(2)计算用户u对物品j的感兴趣程度

2.2 用户活跃度对物品相似度的影响

John S. Breese在论文中提出了一个称为IUF(Inverse UserFrequence),即用户活跃度对数的

倒数的参数,他也认为活跃用户对物品相似度的贡献应该小于不活跃的用户,他提出应该增加IUF

参数来修正物品相似度的计算公式:

2.3 物品相似度的归一化:

增加推荐的准确度,提高推荐的覆盖率和多样性

UserCF和ItemCF对比

协同过滤推荐总结

协同过滤推荐(Collaborative Filtering)优点:简单,预测准确度高;缺点:对数据稀疏性非常敏感

对策:矩阵分解技术(降维)

基于邻域的社会化推荐算法

最简单算法是给用户推荐好友喜欢的物品集合,但在社会化在推荐算法中考虑好友和用户的熟悉程度以及兴趣相似度

这里,由两部分相似度构成,一部分是用户u和用户v熟悉程度,另一部分是用户u和用户v的兴趣相似度:

基于图的社会化推荐算法

社交网络图和用户物品二分图的结合

基于图的随机游走算法(random walk on graph)

假设要给用户u进行个性化推荐,可以从用户u对应的节点Vu开始在用户物品二分图上进行随机游走。游走到任何一个节点时,首先按照概率α决定是继续游走,还是停止这次游走并从Vu节点开始重新游走。如果决定继续游走,那么就从当前节点指向的节点中按照均匀分布随机选择一个节点作为游走下次经过的节点。这样,经过很多次随机游走后,每个物品节点被访问到的概率会收敛到一个数。最终的推荐列表中物品的权重就是物品节点的访问概率。

隐语义模型(Latent Factor Model,简称LFM)

隐含特征(Latent Factor):LFM通过隐含特征来联系用户的兴趣和物品。这些隐含特征是用户和物品之间的共同点,它们不是直接可观察的,但是可以用来预测用户对物品的兴趣。

兴趣分类:LFM对物品的兴趣进行分类。对于每个用户,模型首先确定其兴趣分类,然后从这些分类中挑选出用户可能喜欢的物品。

用户对物品兴趣的计算公式

参数计算:为了计算 Pu,k和 Qi,k 这两个参数,需要一个训练集。训练集中包含了每个用户 uu 喜欢和不感兴趣的物品。通过分析这些数据,模型可以学习到用户和物品之间的隐含特征。

LFM是一种协同过滤算法,它通过挖掘用户和物品之间的潜在关系来提高推荐系统的准确性和多样性。这种方法特别适用于处理大规模数据集,因为它可以减少模型的复杂度,同时捕捉到用户和物品之间的复杂关系。

LFM(Latent Factor Model,隐语义模型)通常与矩阵因式分解(Matrix Factorization)紧密相关,尤其是在推荐系统领域。

矩阵因式分解是一种数学方法,用于将一个矩阵分解为两个或多个矩阵的乘积,这些矩阵的维度较小,且包含了原始矩阵的大部分信息。在推荐系统中,这种方法可以用于预测用户对物品的偏好。

LFM:带正则化的矩阵因式分解

随机梯度下降(通常推荐)

替代最小二乘法

带正则化的矩阵因式分解(Regularized Matrix Factorization)是LFM(Latent Factor Model)中常用的一种技术,用于提高模型的泛化能力,防止过拟合。正则化通过在损失函数中添加一个额外的项来实现,这个项惩罚模型的复杂度,通常是模型参数的L1或L2范数。

正则化的目的:
  1. 防止过拟合:在训练数据上表现得很好,但在新数据上表现不佳。
  2. 提高模型的泛化能力:使模型在未见过的数据上也能有良好的表现。

LFM和基于邻域的方法的比较

奇异值分解(Singular Value Decomposition,简称SVD)

奇异值分解(Singular Value Decomposition,简称SVD)是一种矩阵分解方法,它在数据科学、信号处理、统计学和许多其他领域都有广泛的应用。

SVD的应用:

  1. 数据降维:通过保留最大的几个奇异值和对应的奇异向量,可以对数据进行降维,同时尽可能保留原始数据的变异性。

  2. 数据压缩:SVD可以用于数据压缩,通过舍弃较小的奇异值,可以减少数据存储空间,同时保持数据的主要特征。

  3. 推荐系统:在推荐系统中,SVD可以用于发现用户和物品之间的潜在关系,从而提高推荐的准确性。

  4. 图像处理:在图像处理领域,SVD可以用于图像压缩、去噪和特征提取。

  5. 信号处理:在信号处理中,SVD可以用于信号的分解和重建,以及噪声的去除。

  6. 在统计学中,SVD可以用于主成分分析(PCA),这是一种常用的数据降维技术。

SVD的计算 :

处理稀疏数据

在推荐系统中,处理稀疏数据是一个重要的问题。例如电影评分案例,通常,用户只对一小部分电影进行了评分,这导致用户-电影评分矩阵非常稀疏。如果简单地将未评分的电影用0来表示,这可能会误导推荐系统,因为它会错误地认为用户对这些电影没有兴趣。

相反,将这些未评分的电影视为缺失数据,可以采用更复杂的算法来预测用户可能的兴趣。这些算法可能会考虑用户的历史行为、电影的属性、用户和电影的隐含特征等多种因素。通过这种方式,推荐系统可以更准确地预测用户可能想要观看的电影,从而提高推荐的质量和用户满意度。

迭代SVD(Iterative SVD)

一旦我们按照描述填充了所有缺失值,我们就可以进行SVD,以获得用户和电影的M维表示。

M小于矩阵的完整大小。

使用这些M维表示,我们可以(希望如此)为原始缺失值提供更好的猜测。

请记住,使用SVD,每个评分都是通过用户向量和电影向量之间的加权点积计算得出的。

因此,使用这些点积,我们更新对缺失值的估计。然后,我们可以再次进行SVD,以获得更好的估计。

推荐系统的评价指标

评分预测的准确度:RMSE、MAE

TopN推荐的预测准确率:precision(准确率)/recall(召回率)

R(u)R(u) 是推荐列表,T(u)T(u) 是用户在测试集上的行为列表,∣R(u)∩T(u)∣∣R(u)∩T(u)∣ 是推荐列表和测试行为列表的交集的大小,∣R(u)∣∣R(u)∣ 是推荐列表的大小。

覆盖率(Coverage)

覆盖率是衡量推荐系统能够发掘并推荐给用户的物品范围的广度,特别是在长尾部分。

长尾效应指的是在许多情况下,大部分的关注度集中在少数热门物品上,而大量的冷门物品虽然单个关注度不高,但累积起来却占据了相当大的比例。覆盖率高的推荐系统能够更好地利用这些冷门物品,提供更多样化的推荐。

信息论中的信息熵(Entropy)

信息熵是衡量物品流行度分布均匀性的指标。信息熵越高,表示流行度分布越均匀,推荐系统越能覆盖到更多的物品。

经济学中的基尼系数(Gini Index)

基尼系数是衡量物品流行度分布不平等程度的指标。基尼系数越低,表示流行度分布越均匀,推荐系统越能覆盖到更多的物品。

多样性

推荐列表R(u)的多样性,S(i,j)定义物品i 与物品j之间的相似性

推荐系统整体的多样性:

其他指标

新颖性:用户以前没见过的

惊喜度:让用户满意,但是与用户的购买历史相似性低

信任度:主要通过增加推荐系统的透明度来提高信任度

实时性:及时的推荐

健壮性:有噪声数据下推荐系统的稳定程度

商业目标:企业的战略,营销计划的目标

推荐系统冷启动问题:

在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统

冷启动问题(cold start)主要分3类:

(1)用户冷启动:用户冷启动主要解决如何给新用户做个性化推荐的问题

(2)物品冷启动:物品冷启动主要解决如何将新的物品推荐给可能对它感兴趣的用户这一问题

(3)系统冷启动:系统冷启动主要解决如何在一个新开发的网站上设计个性化推荐系统,从而在网站刚发布时就让用户体验到个性化推荐服务这一问题

解决方案

提供非个性化的推荐:给用户推荐热门排行榜,然后等到用户数据收集到一定的时候,再切换为个性化推荐

利用用户的社交网络(需要授权),导入用户好友信息,然后给用户推荐其好友喜欢的物品

要求用户在登录时对一些物品进行反馈,收集用户对这些物品的兴趣信息,推荐相似物品

利用用户注册信息

利用物品内容信息

在系统冷启动时,可以引入专家的知识,通过一定的高效方式迅速建立起物品相关度表

推荐系统的数据要求:利用物品数据,用户标签,上下文信息

负样本采样

用户行为分为显性反馈和隐形反馈,推荐算法在显性反馈(即评分数据)表现很好

针对隐形反馈数据,关键问题之一:给每个用户生成负样本

1.对每个用户,要保证正负样本的平衡(数量相似)

2.对每个用户采样负样本时,要选取那些很热门、而用户没有行为的物品

相关推荐
凡人的AI工具箱12 分钟前
每天40分玩转Django:实操 Todo List应用
数据库·后端·python·算法·django
小鹿( ﹡ˆoˆ﹡ )14 分钟前
K-Means 聚类:数据挖掘的瑞士军刀
python·数据挖掘·kmeans·聚类
MYT_flyflyfly26 分钟前
LRM-典型 Transformer 在视觉领域的应用,单个图像生成3D图像
人工智能·深度学习·transformer
明月醉窗台36 分钟前
深度学习(15)从头搭建模型到训练、预测示例总结
人工智能·python·深度学习·目标检测·计算机视觉
三天不学习1 小时前
Visual Studio 玩转 IntelliCode AI辅助开发
ide·人工智能·ai编程·visual studio·intellicode
忘梓.1 小时前
解锁动态规划的奥秘:从零到精通的创新思维解析(1)
算法·动态规划
martian6651 小时前
深入详解线性代数基础知识:理解矩阵与向量运算、特征值与特征向量,以及矩阵分解方法(如奇异值分解SVD和主成分分析PCA)在人工智能中的应用
人工智能·线性代数·矩阵·特征向量
chairon1 小时前
【机器学习】——无监督学习:KMeans
学习·机器学习·kmeans
过9531 小时前
2024年全球安全光幕装置行业总体规模、主要企业国内外市场占有率及排名
人工智能·安全·百度
东方佑1 小时前
类A* llm解码 幻觉更低更稳定
人工智能·深度学习·机器学习