公众号:尤而小屋
作者:Peter
编辑:Peter

吴恩达机器学习-11-推荐系统Recommender Systems

本周中主要讲解了推荐系统的相关知识。推荐系统应该是目前机器学习领域或者说人工智能领域最热门的方向之一,还有NLP、CV等,主要内容包含:

  • 推荐系统简介
  • 基于内容的推荐系统
  • 协同过滤

推荐系统

推荐系统概述

常见的推荐系统有三种主要的应用常景:

  • 个性化推荐:常以“推荐”、“猜你喜欢”、“发现”等形式出现,一般放在首页位置
  • 相关推荐:常以“相关推荐”、“看了还看”等形式出现,一般放在内容详情页
  • 热门推荐:基于各种数据进行计算,得到的排行榜,支持全局排行以及分类排行等,位置不限

推荐系统对用户的核心价值,主要表现在:

  1. 帮助用户便捷、快速地筛选出感兴趣的内容
  2. 在用户陌生的领域里面提供参考意见
  3. 满足用户的好奇心

推荐系统的主要工作是:

  • 首先它基于用户的兴趣,根据用户的历史行为做兴趣的挖掘,把物品和用户的个性化偏好进行匹配。
  • 然后通过推荐算法或者技术把信息进行过滤,解决用户的过载问题
  • 当用户有新的行为发生时,比如点击或者搜索之后,能及时进一步捕捉用户的兴趣
  • 选择合适的场景,个性化或者相关的、热门的,来给用户进行推荐。

个性化推荐系统解决的是用户很内容的关联关系,它是二者之间的桥梁。基于用户的兴趣偏好,把用户感兴趣的物品或者视频、资讯等推荐给用户,给用户带来沉浸式的体验。


问题形式化

推荐系统应用的十分广泛:如果你考虑网站像亚马逊,或网飞公司或易趣,或iTunes Genius,有很多的网站或系统试图推荐新产品给用户。如,亚马逊推荐新书给你,网飞公司试图推荐新电影给你,等等。

这些推荐系统,根据浏览你过去买过什么书,或过去评价过什么电影来判断。这些系统会带来很大一部分收入,比如为亚马逊和像网飞这样的公司。

因此对推荐系统性能的改善,将对这些企业的有实质性和直接的影响。

通过一个栗子来了解推荐系统

假使我们是一个电影供应商,我们有 5 部电影和 4 个用户,我们要求用户为电影打分

前三部是爱情片,后面两部是动作片。Alice和Bob更倾向于爱情片,Carol和Dave更倾向于动作片。一些标记

  • nun_unu​用户的数量
  • nmn_mnm​电影的数量
  • r(i,j)r(i,j)r(i,j)如果用户j给电影i评过份则r(i,j)=1r(i,j)=1r(i,j)=1
  • y(i,j)y^{(i,j)}y(i,j)代表的是用户j给电影i的评分
  • mjm_jmj​表示的是用户j评过分的电影总数

基于内容的推荐系统Content Based Recommendations

在一个基于内容的推荐系统算法中,我们假设对于我们希望推荐的东西有一些数据,这些数据是有关这些东西的特征。现在假设电影有两个特征:

  • x1x_1x1​浪漫程度
  • x2x_2x2​动作程度

那么每部电影都有一个特征向量,如第一部电影的是[0,9 0]

针对特征来构建一个推荐系统算法。假设使用的是线性回归模型,针对每个用户使用该模型,θ(1)\theta^{(1)}θ(1)表示的是第一个用户的模型的参数。定义如下:

  • θ(j)\theta^{(j)}θ(j)第jjj个用户的参数向量
  • x(i)x^{(i)}x(i)电影iii的特征向量

针对电影iii和用户 jjj,该线性回归模型的代价为预测误差的平方和,加上正则化项:

min⁡θ(j)12∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2(θk(j))2\min_{\theta (j)}\frac{1}{2}\sum_{i:r(i,j)=1}\left((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\right)^2+\frac{\lambda}{2}\left(\theta_{k}^{(j)}\right)^2 θ(j)min​21​i:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​(θk(j)​)2

其中 i:r(i,j)i:r(i,j)i:r(i,j)表示我们只计算那些用户 jjj 评过分的电影。在一般的线性回归模型中,误差项和正则项应该都是乘以1/2m1/2m1/2m,在这里我们将mmm去掉。并且我们不对方差项θ0\theta_0θ0​进行正则化处理。

针对所有用户的代价函数求和:

min⁡θ(1),...,θ(nu)12∑j=1nu∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1n(θk(j))2\min_{\theta^{(1)},...,\theta^{(n_u)}} \frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}\left((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\right)^2+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(\theta_k^{(j)})^2 θ(1),...,θ(nu​)min​21​j=1∑nu​​i:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

如果我们要用梯度下降法来求解最优解,我们计算代价函数的偏导数后得到梯度下降的更新公式为:

θk(j):=θk(j)−α∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))xk(i)(for,k=0)\theta_k^{(j)}:=\theta_k^{(j)}-\alpha\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_{k}^{(i)} \quad (\text{for} , k = 0) θk(j)​:=θk(j)​−αi:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))xk(i)​(for,k=0)

θk(j):=θk(j)−α(∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j))(for,k≠0)\theta_k^{(j)}:=\theta_k^{(j)}-\alpha\left(\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_{k}^{(i)}+\lambda\theta_k^{(j)}\right) \quad (\text{for} , k\neq 0) θk(j)​:=θk(j)​−α⎝⎛​i:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))xk(i)​+λθk(j)​⎠⎞​(for,k​=0)

协同过滤Collaborative Filtering

上面基于内容的过滤算法是通过电影的特征,使用特征来训练出每个用户的参数。相反,如果使用用户的参数,也可以学习得出电影的特征:

minx(1),...,x(nm)12∑i=1nm∑jr(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑i=1nm∑k=1n(xk(i))2\mathop{min}\limits_{x^{(1)},...,x^{(n_m)}}\frac{1}{2}\sum_{i=1}^{n_m}\sum_{j{r(i,j)=1}}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x_k^{(i)})^2 x(1),...,x(nm​)min​21​i=1∑nm​​jr(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​i=1∑nm​​k=1∑n​(xk(i)​)2

如果没有用户的参数和电影的特征,协同过滤算法便可以同时学习这两者

min⁡θ(1),...,θ(nu)12∑j=1nu∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1n(θk(j))2\min_{\theta^{(1)},...,\theta^{(n_u)}} \frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}\left((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\right)^2+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(\theta_k^{(j)})^2 θ(1),...,θ(nu​)min​21​j=1∑nu​​i:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

对代价函数求出偏导数的结果是:

θk(j):=θk(j)−α∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))xk(i)(for,k=0)\theta_k^{(j)}:=\theta_k^{(j)}-\alpha\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_{k}^{(i)} \quad (\text{for} , k = 0) θk(j)​:=θk(j)​−αi:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))xk(i)​(for,k=0)

θk(j):=θk(j)−α(∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))xk(i)+λθk(j))(for,k≠0)\theta_k^{(j)}:=\theta_k^{(j)}-\alpha\left(\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x_{k}^{(i)}+\lambda\theta_k^{(j)}\right) \quad (\text{for} , k\neq 0) θk(j)​:=θk(j)​−α⎝⎛​i:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))xk(i)​+λθk(j)​⎠⎞​(for,k​=0)

协同过滤算法的过程:

  1. 初始化x,θx,\thetax,θ为很小的值
  2. 使用梯度下降算法最小化代价函数min⁡J(x,θ)\min J(x,\theta)minJ(x,θ)
  3. 训练完算法后,预测用户j给电影i的评分

协同过滤算法

协同过滤的优化目标:

给定x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm​),估计θ(1),...,θ(nu)\theta^{(1)},...,\theta^{(n_u)}θ(1),...,θ(nu​):

min⁡θ(1),...,θ(nu)12∑j=1nu∑i:r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑j=1nu∑k=1n(θk(j))2\min_{\theta^{(1)},...,\theta^{(n_u)}}\frac{1}{2}\sum_{j=1}^{n_u}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(\theta_k^{(j)})^2 θ(1),...,θ(nu​)min​21​j=1∑nu​​i:r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

给定θ(1),...,θ(nu)\theta^{(1)},...,\theta^{(n_u)}θ(1),...,θ(nu​),估计x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm​):

同时最小化x(1),...,x(nm)x^{(1)},...,x^{(n_m)}x(1),...,x(nm​)和θ(1),...,θ(nu)\theta^{(1)},...,\theta^{(n_u)}θ(1),...,θ(nu​):

J(x(1),...,x(nm),θ(1),...,θ(nu))=12∑(i,j):r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑i=1nm∑k=1n(xk(i))2+λ2∑j=1nu∑k=1n(θk(j))2J(x^{(1)},...,x^{(n_m)},\theta^{(1)},...,\theta^{(n_u)})=\frac{1}{2}\sum_{(i,j):r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{i=1}^{n_m}\sum_{k=1}^{n}(x_k^{(i)})^2+\frac{\lambda}{2}\sum_{j=1}^{n_u}\sum_{k=1}^{n}(\theta_k^{(j)})^2 J(x(1),...,x(nm​),θ(1),...,θ(nu​))=21​(i,j):r(i,j)=1∑​((θ(j))Tx(i)−y(i,j))2+2λ​i=1∑nm​​k=1∑n​(xk(i)​)2+2λ​j=1∑nu​​k=1∑n​(θk(j)​)2

min⁡x(1),...,x(nm)θ(1),...,θ(nu)J(x(1),...,x(nm),θ(1),...,θ(nu))\min_{x^{(1)},...,x^{(n_m)} \\ \theta^{(1)},...,\theta^{(n_u)}}J(x^{(1)},...,x^{(n_m)},\theta^{(1)},...,\theta^{(n_u)}) x(1),...,x(nm​)θ(1),...,θ(nu​)min​J(x(1),...,x(nm​),θ(1),...,θ(nu​))

向量化:低秩矩阵分解Vectorization_ Low Rank Matrix Factorization

协同过滤算法可以做的事情:

  1. 给出一件商品,找到与之类似的商品
  2. 当一个用户浏览了一件产品,找出类似的商品推荐给他

假设5部电影,4位用户,存放在矩阵中:

Movie Alice (1) Bob (2) Carol (3) Dave (4)
Love at last 5 5 0 0
Romance forever 5 ? ? 0
Cute puppies of love ? 4 0 ?
Nonstop car chases 0 0 5 4
Swords vs. karate 0 0 5 ?

推出相应的评分

找出类似的影片

均值归一化Mean Normalization

上图中,假设新来个用户Eva,他没有对任何的电影进行评分,那我们以什么依据来给他推荐电影呢?

  • 对上面的Y矩阵进行均值归一化,将每个用户对某一部电影的评分减去所有用户对该电影评分的平均值,得到如下的矩阵:

  • 利用新的矩阵Y来训练算法。如果我们要用新训练出的算法来预测评分,则需要将平均值重新加回去,预测:(θ(j))Tx(i)+μi(\theta^{(j)})^T x^{(i)}+\mu_i(θ(j))Tx(i)+μi​,模型会人为其给每部电影的评分都是该电影的平均分。

吴恩达机器学习-11-推荐系统相关推荐

  1. 吴恩达机器学习13.推荐系统

    推荐系统 1.问题形式化 从一个例子开始定义推荐系统的问题. 假使我们是一个电影供应商,我们有 5 部电影和 4 个用户,我们要求用户为电影打分. 前三部电影是爱情片,后两部则是动作片,我们可以看出A ...

  2. 吴恩达机器学习 11.聚类

    一.聚类(Clustering) 1.无监督学习 非监督学习算法.即要让计算机学习无标签数据,而不是此前的标签数据. 在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中,然后我们告诉这 ...

  3. 8. 吴恩达机器学习课程-作业8-异常检测和推荐系统

    fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 8. ...

  4. 【CV】吴恩达机器学习课程笔记第11章

    本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 11 机器学习系统设计 11-1 确定执行的优先级:以垃圾 ...

  5. 吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)

    目录 0. 前言 1. 基于内容的推荐算法(Content-based recommendations) 2. 计算电影特征 3. 基于梯度下降的协同过滤算法(Collaborative filter ...

  6. 吴恩达机器学习作业Python实现(八):异常检测和推荐系统

    吴恩达机器学习系列作业目录 1 Anomaly detection 这部分,您将实现一个异常检测算法来检测服务器计算机中的异常行为.他的特征是测量每个服务器的响应速度(mb/s)和延迟(ms).当你的 ...

  7. 带你少走弯路:五篇文章学完吴恩达机器学习

    本文是吴恩达老师的机器学习课程[1]的笔记和代码复现部分,这门课是经典,没有之一.但是有个问题,就是内容较多,有些内容确实有点过时. 如何在最短时间学完这门课程?作为课程的主要翻译者和笔记作者,我推荐 ...

  8. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

  9. 吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)

    目录 1-1机器学习的相关名词 1-2 什么是机器学习? 1.definition 定义 2.主要的机器学习算法的分类 1-3有监督学习及常用算法 1.定义 2.两种数据类型补充:categorica ...

  10. 吴恩达机器学习视频学习笔记

    吴恩达机器学习视频笔记 介绍 Introduction 线性回归 Linear Regression 单变量 One Variable 多变量 Multiple Variables 多项式回归 Pol ...

最新文章

  1. Android开发中应避免的重大错误
  2. #pragma multi_compile_fwdbase会增加很多个shader variants
  3. Linux 下的 AddressSanitizer
  4. 腾讯云搭svn服务器,腾讯云使用笔记二: 安装svn服务器及web同步
  5. Python | threading01 - 创建两个同时运行的子线程
  6. 以太网实习_从最初有从事IT的想法,到现在实习两个月的感受
  7. zookeeper的安装与配置(单机和集群)
  8. 太晚了!iPhone屏下指纹或要等到2021年才安排
  9. 表视图(UITableView)与表视图控制器(UITableViewController)
  10. CRUD生成器DBuilder设计与实现
  11. 计算机电路计算公式,电路中相关计算公式.doc
  12. Maya火球特效制作
  13. python局域网文件互传
  14. 怎么吸引百度蜘蛛抓取自己的网页
  15. SpringBoot整合Drools
  16. 用Linux系统电脑越狱ipad3,图吧小白教程 篇一:电脑远程控制IPHONE(越狱)
  17. 全国计算机等级考试三级网络技术选择题考点
  18. 安装向日葵后亮度无法调节
  19. 全球及中国视频会议摄像机行业市场运营模式与投资战略规划研究报告2022-2028年
  20. 【设计模式】Java设计模式 - 享元模式

热门文章

  1. 计算机软件企业会计核算,顺景软件|ERP系统为企业会计核算提供支持
  2. 【计算机毕业设计】基于微信小程序的驾校管理系统
  3. 地推活动策划有几种?
  4. 杰里之音质调试】【篇】
  5. 用 Python 读取巴菲特最近的持仓数据
  6. 公司电脑怎么监控?合法吗?
  7. ollydbg v1.09d 中文版使用说明.
  8. 基于低能耗自适应聚类层次结构(LEACH)(Matlab代码实现)
  9. 电脑故障维修大全 [2]
  10. Idea配置类和方法的注释, for循环快捷键