经典机器学习系列(十一)【个性化推荐之协同过滤】

简介: 经典机器学习系列(十一)【个性化推荐之协同过滤】

  对推荐系统还没有直观理解的同学可以参考之前所写的文章: 推荐系统与人工智能概述

  协同过滤(Collaborative Filtering)是当前推荐系统最为流行的一种方法,就是说我们不只是基于内容进行推荐,我们还基于一些用户之间的协同行为去给用户做推荐,或者称之为个性化推荐。

  推荐系统本身和信息检索( information retrieval)具有很强的相关性,甚至被认为是一种能力更强的信息检索,与信息检索不同的地方在于它没有信息检索里面所需要的关键词,更多的是使用用户之前的使用信息等等,所以你需要去猜用户到底喜欢什么东西。本质可以理解为信息检索问题,但是没有关键词。

  在实际生活中也有很多例子,比如淘宝的推荐系统下面经常会有购买这些东西的人也购买了某某商品,还有头条推荐系统给你推送文章,这两者其实是有差异的。淘宝的客户端用户具有搜索功能,一旦搜索了说明是用户肯定感兴趣的东西;而头条就不太一定,头条只是接收用户一个单纯的反馈(点击或者不点击),但是这种反馈可能不是很精准,比如你可能不是被文章所写的内容感兴趣,而是对图片、标题、作者等等这些信息感兴趣。

Personalized Recommendation

  还有一个叫个性化推荐(Personalized Recommendation),这个行业的标杆:人物美国工程院院士、前雅虎副总裁Andrei Broder,同时首次提出了计算广告(Computational Advertising)的概念。我们做个性化推荐的时候往往会有两种方法(Methodologies):

  • Method 1:用户喜欢什么item(项目、物品,指所有可能被推荐到的资源,比如电影、书),我去给他推荐相似的这些item,比如喜欢漫威,我就给你推荐漫威的其他电影。
  • Method 2:推荐给你与你行为相似的用户喜欢的东西。这种方法所推荐的item更广泛。比如搜Andrei Broder这个关键词的用户喜欢吃什么菜,从而发现大部分人喜欢吃印度菜,而总结出印度人搜他的文章比较多,进而推断出印度做计算广告的人应该蛮多。

  第一种方法更简单一些,第二种方法对用户行为数据要求更多,但在工业级的应用场景里面更加work一些,我们接下来主要说第二种方法,也就是Collaborative filtering,第一种方法Content-based filtering就比较老,几十年的算法,网上资料也多。

Collaborative filtering

  举个例子,如下图所示:

  知道了部分user对于部分item的打分行为,如何来预测一个用户对于一个未知的item的打分行为呢?思考一下,如果是你对上述数据进行学习,你会对下图所示的这个问号框框预判几颗星呢?

  简单看一下是会是高分还是低分呢?从user来看的话,DaveGeorgeBoris很像,因此给的会是低分;从item来看的话,这步电影的评分就比较偏低,就会给低分。所以不管是根据item还是user来看都是低分。

K Nearest Neighbor Algorithm (KNN)

  KNN算法是一个non-parametric的方法,它没有参数需要学习,每一个数据点对于它来说就是一个参数,它有一个hyperparameterk

  对于每个输入的样本x xx,在训练样本集合N k ( x )中寻找k 特征空间最近的样本。预测的话就是拿k kk个样本标签的平均作为预测结果:

image.png

  如果是一个分类问题的话,那拿这个label做一个voting就可以了。

  更加generalize的版本的KNN,我们是可以用每个样本的预测做平均做投票,但是每个样本都有权重。比如说离你这个输入样本 x 越近,那权重就可能比较高一点,由此我们可以定义一个相似度函数(similarity function) s ( x , x i ) ,这个相似度函数一方面可以把这k 个样本选出来,另一方面基于相似度函数,可以做带有权重的label预测,如下公式所示:

image.png


 这里最大的问题就是如何来选择hyperparameterk kk,如果你只在training set上面去选择能使得sum-of-squared error最小的k kk话,泛化能力就会不够,因此经常需要依据validation set上面的效果去选择 k kk

基于User的KNN解决办法

  对于之前的那个问题,我们使用User-based kNN来尝试解决一下:

  首先是寻找相似的用户,发现与 Boris 相似的用户有DaveGeorge;之后我们做Rating Prediction,平均DaveGeorgeLove Actually电影的评分:1.5星。

  • Basic user-based kNN algorithm
  • For each target user for recommendation
  1. Find similar users
  2. Based on similar users, recommend new items
Similarity between Users

  我们可以把上述图表关系表达为下图所示曲线图:

  横轴表示items,纵轴表示rating,图中的曲线表示user。因此可以比较直观看出哪些用户之间比较像。从上图中选择三个user出来组成下图:

  可以看出这三个user比较像,但是黄色曲线的用户打分普遍偏低,紫色用户打分普遍偏高。对于这种问题我们普遍使用Pearson Correlation的方法来做把meanvariancenormalization

  那我们数学上怎么来做用户之间的Similarity呢?其实也就是度量数据之间的相关性了,我们之前也有说过类似的知识点,在这里主要是采用如下两种方式:

  • Cosine (angle)


image.png

  • Pearson Correlation


image.png

 在预测的时候我们通常采用如下形式:

基于Item的KNN解决办法

  user可以这么做,那么item当然也可以这么做。一般的做法是寻找到相似的item,然后基于这个相似的item来对item做预测:

  衡量item aitem b之间的相关性可采用以下三种方式:

  • Cosine (angle)


image.png

  • Adjusted Cosine


image.png



这里是减去用户对各个电影打分的平均值,而不是item的平均值。

  • Pearson Correlation


image.png


那能计算相关性了之后,我们需要做预测了。首先我们要做一个相关性的序列排序,选择排序分数最高的k个相似的item出来:


image.png

之后的话我们就可以去做预测了:


image.png

 这里的x t , b不需要去做平均,因为这就是用户的打分习惯(这是用户本身的打分行为,偏高偏低都在里面)。

kNN based Methods Summary

  knn的方法非常直接并且可解释,并且是一个无参数的学习算法只有一个超参数k kk。但是算法的效率会成为一个问题,因为useritem数量特别多。


Matrix Factorization Techniques


  既然useritem的关系构成了一个矩阵,因此我们可以通过矩阵分解的方式将这个矩阵分解为两个低秩但是稠密的矩阵。


20200220205828793.png


  • Koren, Yehuda, Robert Bell, and Chris Volinsky. "Matrix factorization techniques for recommender systems."Computer42.8 (2009).

  因此每个user对应一个低维空间的稠密向量,每个item也同样对应一个低维空间的稠密向量。每个user和对应的item的那个rating就是由对位的user向量点乘对位的item向量。于是这个时候就变成了一个学习的算法:

  useru uu在item i ii下的预测是一个user的向量p u p_{u}puitem的向量q i q_{i}qi相乘得到:

image.png

由此我们可以通过梯度下降的方式进行学习,学习p u q i 该如何更新,其损失函数(Loss function)可定义为:

image.png


训练过程的目标函数(Training objective)引入L2正则化可得到如下公式:


image.png



MF with Biases


  矩阵分解技术有一种变体,引入偏置项,useru uu在item i ii下的预测是一个user的向量p u p_{u}puitem的向量q i q_{i}qi相乘再加上一些偏置项得到 (这个为什么会有一些偏置在上文KNN算法有提及):


image.png


  从梯度更新公式可以看出,上述的模型p u 更新其实是拿q i 的方向去更新p u ,这个时候如果q i 学习地不好的话,p u 更新的方向也不对,q i 同理也是一样。导致它的更新会处在一个非常动荡的阶段,导致它很容易掉入到局部最优。


进一步的扩展


  根据时间的不同,比如晚上做rating效果好一点这样,还有比如一个电影越老的话,看他的人可能是在回忆经典,打分也会越来越高。

  • Koren, Yehuda. "Collaborative filtering with temporal dynamics.“ KDD 2009.

  如果引入用户之前的一些item打分行为的话,我们把这个叫做Neighborhood (Similarity)-based MF

  • Koren, Yehuda. "Factorization meets the neighborhood: a multifaceted collaborative filtering model."KDD, 2008.

  从机器学习这个角度来想,最需要记住的模型就是KNN模型,它是一个无参数模型,不需要去learn,另外一个就是基于Matrix Factorization这个一种linear的模型,由两个都是参数的向量相乘等于他的prediction,每个参数更新都依据于另外一半参数,这种方式很容易掉到局部最优点,现在这种方法通过SGD的方法可以达到非常好的效果。

  • 本文来自伯禹公开课的学习笔记。

我的微信公众号名称:深度学习先进智能决策

微信公众号ID:MultiAgent1024

公众号介绍:主要研究深度学习、强化学习、机器博弈等相关内容!期待您的关注,欢迎一起学习交流进步!

相关文章
|
6月前
|
机器学习/深度学习 搜索推荐 算法
基于机器学习的用户行为分析与个性化推荐系统
传统的用户行为分析和推荐系统常常受限于规则的刻板和模型的简单,无法准确捕捉用户的个性化需求。本文基于机器学习技术,探讨了一种更加灵活、精准的用户行为分析与个性化推荐系统设计方法,通过深度学习模型结合大数据分析,实现了对用户行为的更细致把握和更个性化的推荐服务。
|
机器学习/深度学习 算法 搜索推荐
14 机器学习 - CF协同过滤推荐算法原理
14 机器学习 - CF协同过滤推荐算法原理
202 0
|
6月前
|
机器学习/深度学习 自然语言处理 搜索推荐
探索机器学习在个性化推荐系统中的应用
【4月更文挑战第23天】 随着大数据和人工智能技术的迅猛发展,机器学习已成为推动个性化推荐系统革新的关键动力。本文将深入探讨如何通过机器学习算法提升推荐系统的精准度和用户体验。首先,概述了推荐系统的工作原理及其重要性;随后,详细分析了几种主流的机器学习技术以及它们在构建个性化推荐系统中的应用实例;最后,讨论了当前面临的挑战及未来的发展趋势。
|
6月前
|
机器学习/深度学习 数据采集 搜索推荐
探索机器学习在个性化推荐系统中的应用
【5月更文挑战第30天】 随着数字内容的激增,个性化推荐系统成为缓解信息过载的关键工具。本文将深入探讨机器学习技术在构建高效个性化推荐系统中的核心作用,涵盖算法选择、数据处理及系统优化等方面。通过对比不同机器学习模型,如协同过滤、内容推荐以及混合方法,本文旨在为读者提供一套明确的指导框架,以实现更加精准和用户友好的推荐服务。
169 2
|
5月前
|
机器学习/深度学习 搜索推荐 算法
运用机器学习提升返利App的个性化推荐系统
运用机器学习提升返利App的个性化推荐系统
|
6月前
|
机器学习/深度学习 分布式计算 搜索推荐
探索机器学习在个性化推荐系统中的应用
【5月更文挑战第21天】 随着大数据时代的到来,个性化推荐系统在商业和用户体验中扮演着日益重要的角色。机器学习作为实现智能化推荐的核心技术之一,其算法与模型的发展直接影响着推荐系统的效能。本文将深入剖析机器学习技术在构建个性化推荐系统中的关键作用,探讨不同算法的优势与局限性,并提出创新性的优化策略以增强推荐的准确性和用户满意度。通过实例分析,揭示机器学习如何助力推荐系统更好地理解用户需求,进而推动个性化服务的发展。
66 3
|
6月前
|
机器学习/深度学习 搜索推荐 算法
探索机器学习在个性化推荐系统中的应用
【5月更文挑战第29天】随着大数据时代的到来,个性化推荐系统已成为解决信息过载问题的关键工具。本文深入探讨了机器学习技术在构建个性化推荐系统中的应用与挑战,重点分析了协同过滤、内容推荐及混合推荐等主流算法的原理和实现。同时,针对当前算法面临的冷启动问题、可扩展性问题以及隐私保护问题提出了可能的解决策略。通过实验对比,验证了不同算法在处理特定类型数据集时的性能表现,并对未来推荐系统的发展趋势进行了展望。
|
6月前
|
机器学习/深度学习 自然语言处理 搜索推荐
探索机器学习在个性化推荐系统中的应用
【5月更文挑战第29天】 随着数字内容的爆炸性增长,个性化推荐系统成为缓解信息过载现象的关键技术之一。本文将深入探讨机器学习技术在构建高效个性化推荐系统中的核心作用。首先,概述推荐系统的基本原理及其对现代服务业的重要性。随后,详细剖析机器学习模型如何通过学习用户行为、物品特征和上下文信息来优化推荐结果。文中还将展示几种主流的机器学习算法在推荐系统中的应用案例,包括协同过滤、内容推荐以及混合方法,并对每种方法的优势与局限性进行评估。最后,讨论了当前技术面临的挑战及未来发展趋势,为该领域的研究者和实践者提供参考。
|
6月前
|
机器学习/深度学习 分布式计算 搜索推荐
【大数据技术】Spark MLlib机器学习协同过滤电影推荐实战(附源码和数据集)
【大数据技术】Spark MLlib机器学习协同过滤电影推荐实战(附源码和数据集)
215 0
|
机器学习/深度学习 搜索推荐 算法
15 机器学习 - CF协同过滤推荐(电影推荐案例)
15 机器学习 - CF协同过滤推荐(电影推荐案例)
80 1
下一篇
无影云桌面