【机器学习】课程笔记15_推荐系统(Recommender Systems)

推荐系统

  • 问题规划(Problem Formulation)
  • 基于内容的推荐算法(Content-Based Recommendations)
  • 协同过滤(Collaborative Filtering)
  • 协同过滤算法(Collaborative Filtering Algorithm)
  • 矢量化:低秩矩阵分解(Vectorization: Low Rank Matrix Factorization)
  • 实施细节:均值规范化(Implementational Detail: Mean Normalization)

问题规划(Problem Formulation)

  • 例子: 我们是一个电影供应商,有5部电影和4个用户,要求用户为电影打分,推荐系统做的给用户推荐新电影,预测用户对新电影的评分。

    【机器学习】课程笔记15_推荐系统(Recommender Systems)_第1张图片

    • n u n_u nu代表用户的数量
    • n m n_m nm代表电影的数量
    • r ( i , j ) r(i,j) r(i,j)如果用户j给电影 i i i评过分则 r ( i , j ) = 1 r(i,j)=1 r(i,j)=1
    • y ( i , j ) y^{(i,j)} y(i,j)代表用户 j j j给电影 i i i的评分
    • m j m_j mj代表用户 j j j评过分的电影的总数

基于内容的推荐算法(Content-Based Recommendations)

  • 可以用线性回归的方法进行训练:

    • 为每部电影赋一个特征向量,例如用 x 1 x_1 x1表示电影的浪漫程度、用 x 2 x_2 x2表示电影的动作程度。则第一部电影的特征向量为 x ( 1 ) = [ 0.9   0 ] x^{(1)}=[0.9 \ 0] x(1)=[0.9 0].

      【机器学习】课程笔记15_推荐系统(Recommender Systems)_第2张图片

    • 针对每一个用户训练一个线性回归模型:

      • θ ( j ) \theta^{(j)} θ(j)是用户 j j j的参数向量

      • x ( j ) x^{(j)} x(j)是电影 i i i的特征向量

      • 对于用户 j j j和电影 i i i预测评分为: ( θ ( j ) ) T x ( i ) (\theta^{(j)})^Tx^{(i)} (θ(j))Tx(i)

      • 代价函数: min ⁡ θ ( j ) 1 2 ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ k = 1 n ( θ k ( j ) ) 2 \min_{\theta (j)}\cfrac{1}{2}\displaystyle\sum_{i:r(i,j)=1}\bigg((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\bigg)^2+\cfrac{\lambda}{2}\displaystyle\sum^n_{k=1}(\theta_{k}^{(j)})^2 minθ(j)21i:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λk=1n(θk(j))2.

        预测误差的平方和加上正则化项, i : r ( i , j ) i:r(i,j) i:r(i,j)表示只计算用户 j j j评分过的电影,在一般的线性回归模型中,误差项和正则项应该都乘以 1 2 m \cfrac{1}{2m} 2m1,这里将 m m m去掉,且不对方差项 θ 0 \theta_0 θ0进行正则化处理。

      • 为了学习所有用户,将所有代价函数求和 m i n θ ( 1 ) , . . . , θ ( n u ) 1 2 ∑ j = 1 n u ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 min_{\theta^{(1)},...,\theta^{(n_u)}}\cfrac{1}{2}\displaystyle\sum^{n_u}_{j=1}\displaystyle\sum_{i:r(i,j)=1}\bigg((\theta^{(j)})^Tx^{(i)}-y^{(i,j)}\bigg)^2+\cfrac{\lambda}{2}\displaystyle\sum^{n_u}_{j=1}\displaystyle\sum^n_{k=1}(\theta^{(j)}_k)^2 minθ(1),...,θ(nu)21j=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nuk=1n(θk(j))2.

    • 梯度下降法求最优解:

      • θ k ( j ) : = θ k ( j ) − α ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) x k ( i ) ( f o r   k = 0 ) \theta^{(j)}_k:=\theta^{(j)}_k-\alpha\displaystyle\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x^{(i)}_k \quad (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 ) ) T x ( i ) − y ( i , j ) ) x k ( i ) + λ θ k ( j ) ) ( f o r   k ≠ 0 ) \theta^{(j)}_k:=\theta^{(j)}_k-\alpha\bigg(\displaystyle\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})x^{(i)}_k + \lambda\theta^{(j)}_k \bigg) \quad (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)

  • 协同过滤: 同时学习用户参数和电影特征。

  • 思路: 首先用户根据自己的喜好对特征打分,通过计算可以大致确定已经打过分的电影它的特征值;根据已经确定的特征值,又可以计算出每个用户对这部电影的评分。根据特征向量 X X X可以通过线性回归得到用户的 θ \theta θ向量,通过用户提供的 θ \theta θ向量可以估计每部电影的特征数值。

协同过滤算法(Collaborative Filtering Algorithm)

【机器学习】课程笔记15_推荐系统(Recommender Systems)_第3张图片

  • 步骤:

    • 初始 x ( 1 ) , x ( 2 ) , . . . , x ( n m ) , θ ( 1 ) , θ ( 2 ) , . . . , θ ( n u ) x^{(1)},x^{(2)},...,x^{(n_m)},\theta^{(1)},\theta^{(2)},...,\theta^{(n_u)} x(1),x(2),...,x(nm),θ(1),θ(2),...,θ(nu)为一些随机小值;

    • 使用梯度下降算法最小化代价函数( j = 1 , . . . , n u ,   i = 1 , . . . , n m j=1,...,n_u,\ i=1,...,n_m j=1,...,nu, i=1,...,nm);
      J ( x ( 1 ) , . . . x ( n m ) , θ ( 1 ) , . . . , θ ( n u ) ) = 1 2 ∑ ( i : j ) : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ i = 1 n m ∑ k = 1 n ( x k ( j ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 J(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^{(j)})^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=1nmk=1n(xk(j))2+2λj=1nuk=1n(θk(j))2
      【机器学习】课程笔记15_推荐系统(Recommender Systems)_第4张图片

    • 训练完算法后,预测 ( θ ( j ) ) T x ( i ) (\theta^{(j)})^Tx^{(i)} (θ(j))Tx(i)为用户 j j j给电影 i i i的评分。

矢量化:低秩矩阵分解(Vectorization: Low Rank Matrix Factorization)

  • 低秩矩阵分解: 协同过滤算法的向量化实现。

  • 目的: 实现一种选择的方法,写出协同过滤算法的预测情况。例:当给出一件产品时,你能否找到与之相关的其它产品。

  • n n n个用户对 m m m部电影的评分结果表示为 m × n m \times n m×n的矩阵:

    【机器学习】课程笔记15_推荐系统(Recommender Systems)_第5张图片

    这个矩阵可以表示为 X θ T X\theta^T XθT

    【机器学习】课程笔记15_推荐系统(Recommender Systems)_第6张图片

  • 通过特征值之间的偏差,找到类型相近的产品:

    • 对每一个产品 i i i,我们学习得到它的特征向量 x ( i ) ∈ R x^{(i)}\in \mathbb R x(i)R.
    • 找到产品 j j j与产品 i i i相似: s m a l l ∥ x ( i ) − x ( j ) ∥ small\lVert x^{(i)}-x^{(j)} \rVert smallx(i)x(j).

    例:找到与产品 i i i最相似的5个产品:找到5个拥有最小的 ∥ x ( i ) − x ( j ) ∥ \lVert x^{(i)}-x^{(j)} \rVert x(i)x(j)的产品 j j j

实施细节:均值规范化(Implementational Detail: Mean Normalization)

  • 问题: 如果我们新增一个用户,并且该用户没有为任何电影评分,那么该以什么为依据为该用户推荐电影呢?

  • 均值规范化:

    • 首先对结果 Y Y Y矩阵进行均值规范化处理:将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值
    • 利用这个新的 Y Y Y矩阵来训练算法;
    • 预测评分时需要将平均值重新加回去: ( θ ( j ) ) T x ( i ) + μ i (\theta^{(j)})^T x^{(i)}+\mu_i (θ(j))Tx(i)+μi,则对于该用户,新模型会认为他给每部电影的评分都是该电影的平均分

【机器学习】课程笔记15_推荐系统(Recommender Systems)_第7张图片

你可能感兴趣的:(机器学习,人工智能,算法)