深度学习-推荐系统-CV-NLP人工智能/模式识别/机器学习精华专题玩转大数据

机器学习-吴恩达9(2)-推荐系统

2019-12-08  本文已影响0人  皮皮大

推荐系统 Recommender Systems

推荐系统概述

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


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

  1. 帮助用户便捷、快速地筛选出感兴趣的内容

  2. 在用户陌生的领域里面提供参考意见

  3. 满足用户的好奇心


推荐系统的主要工作是:

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


问题形式化

推荐系统应用的十分广泛:如果你考虑网站像亚马逊,或网飞公司或易趣,或iTunes Genius,有很多的网站或系统试图推荐新产品给用户。如,亚马逊推荐新书给你,网飞公司试图推荐新电影给你,等等。这些推荐系统,根据浏览你过去买过什么书,或过去评价过什么电影来判断。这些系统会带来很大一部分收入,比如为亚马逊和像网飞这样的公司。因此,对推荐系统性能的改善,将对这些企业的有实质性和直接的影响。

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

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

QaTZY4.png

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

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

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

Qa7nUS.png

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

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

针对电影i和用户j,预测评分标准
(\theta^{(j)})^Tx^{(i)}
代价函数可以表示为(针对用户j):误差平方和+正则化项
\min_{\theta(j)}\frac{1}{2}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}) + \frac {\lambda}{2}(\theta^{(j)}_k)^2
其中i:r(i,j)表示只计算用户j评过分的电影。针对所有用户的代价函数求和:
\min_{\theta(1),...,\theta^{(n_u)}}\frac{1}{2}\sum^{n_u}_{j=1}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}) ^2+ \frac {\lambda}{2}\sum^{n_u}_{j=1}\sum^n_{k=1}(\theta^{(j)}_k)^2
使用梯度下降法求出最优解,更新参数\theta^{(j)}_{(k)}
\theta^{(j)}_{(k)} := \theta^{(j)}_{(k)} - \alpha\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x^{(i)}_k ; k=0

\theta^{(j)}_{(k)} := \theta^{(j)}_{(k)} - \alpha(\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x^{(i)}_k+\lambda\theta^{(j)}_k) ; k\neq0

协同过滤Collaborative Filtering

上面基于内容的过滤算法是通过电影的特征,使用特征来训练出每个用户的参数。相反,如果使用用户的参数,也可以学习得出电影的特征:
\min_{x(1),...,x^{(n_m)}}\frac{1}{2}\sum^{n_m}_{i=1}\sum_{j:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}) ^2+ \frac {\lambda}{2}\sum^{n_m}_{i=1}\sum^n_{k=1}(x^{(j)}_k)^2
如果没有用户的参数和电影的特征,协同过滤算法便可以同时学习这两者。
J(x^{(1)},...x^{(n)},\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^{n_m}_{i=1}\sum^n_{k=1}(x^{(j)}_k)^2+\frac {\lambda}{2}\sum^{n_u}_{j=1}\sum^n_{k=1}(\theta^{(j)}_k)^2

对代价函数求出偏导数的结果是:
x^{(j)}_{(k)} := x^{(j)}_{(k)} - \alpha(\sum_{j:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})\theta^{(i)}_k+\lambda x^{(j)}_k)

\theta^{(j)}_{(k)} := \theta^{(j)}_{(k)} - \alpha(\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x^{(i)}_k+\lambda\theta^{(j)}_k)

协同过滤算法的过程:

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

向量化:低秩矩阵分解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 ?

推出相应的评分

image image

找出类似的影片

image

均值归一化Mean Normalization

image

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

image
上一篇 下一篇

猜你喜欢

热点阅读