我是靠谱客的博主 喜悦大神,最近开发中收集的这篇文章主要介绍吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)0. 前言1. 基于内容的推荐算法(Content-based recommendations)2. 计算电影特征3. 基于梯度下降的协同过滤算法(Collaborative filtering)4. 低秩矩阵分解(Low rank matrix factorization)5. 应用到推荐,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

0. 前言

1. 基于内容的推荐算法(Content-based recommendations)

2. 计算电影特征

3. 基于梯度下降的协同过滤算法(Collaborative filtering)

4. 低秩矩阵分解(Low rank matrix factorization)

5. 应用到推荐


学习完吴恩达老师机器学习课程的推荐系统,简单的做个笔记。文中部分描述属于个人消化后的理解,仅供参考。

如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

0. 前言

在推荐系统中,主要有两种方法,基于内容的推荐算法协同过滤算法,此文章采用电影推荐作为例子,初始作如下定义:

  • n_{u} --- 用户数量
  • n_{m} --- 电影数量
  • r(i,j)=1 --- 用户 j 对电影 i 进行了评价
  • y(i,j) --- 用户 j 对电影 i 的评分
  • m^{(j)} --- 用户 j 评价了的电影数量
  • theta^{(j)} --- 拟合用户 j 评价电影的曲线参数
  • n --- 电影的特征数量

推荐系统的目标,就是通过用户已经评价的电影和电影的特征,预测用户未评价的电影的评分,由此进行推荐。

1. 基于内容的推荐算法(Content-based recommendations)

给出如下例子(图源:吴恩达机器学习),基于内容的推荐算法已知每部电影的特征值

对于用户 j ,每一部的电影的特征为 x ,用户的评分为 y ,用数据集 {x^{(1)},y^{(1)}},...,{x^{(n_{m})},y^{(n_{m})}} ,进行拟合,得到参数 theta^{(j)} ,对于需要预测的电影 x_{pred} ,由 theta^{t}x_{pred} 得到评分,可根据预测的评分进行推荐。

单个用户的代价函数为:

large j(theta^{(j)})=frac{1}{2m^{(j)}}sum_{i:r(i,j)=1}((theta^{(j)})^{t}x^{(i)}-y^{(i,j)})^2+frac{lambda}{2m^{(j)}}sum_{k=1}^{n}(theta_{k}^{(j)})^2

消去 m^{(j)} 后,多个用户的代价函数为:

large j(theta^{(1)},...,theta^{(n_u)})=frac{1}{2}sum_{j=1}^{n_u}sum_{i:r(i,j)=1}((theta^{(j)})^{t}x^{(i)}-y^{(i,j)})^2+frac{lambda}{2}sum_{j=1}^{n_u}sum_{k=1}^{n}(theta_{k}^{(j)})^2

梯度下降为:

large begin{align*} theta_{k}^{(j)} &:= theta_{k}^{(j)}-alphasum_{i:r(i,j)=1}((theta^{(j)})^{t}x^{(i)}-y^{(i,j)})x_{k}^{(i)} (if k=0) \ theta_{k}^{(j)} &:= theta_{k}^{(j)}-alpha(sum_{i:r(i,j)=1}((theta^{(j)})^{t}x^{(i)}-y^{(i,j)})x_{k}^{(i)}+lambdatheta_{k}^{(j)}) (if kneq 0) end{align*}

注:此时的 theta 和 x 都增加了偏置 theta_{0} 和 x_{0} 。

2. 计算电影特征

要求已知用户的参数 theta^{(j)} ,根据每个用户对电影的评价 (theta^{(j)})^{t}x ,拟合出电影 x 的特征值。

单部电影的代价函数表示为:

large j(x^{(i)})=frac{1}{2}sum_{j:r(i,j)=1}((theta^{(j)})^{t}x^{(i)}-y^{(i,j)})^2+frac{lambda}{2}sum_{k=1}^{n}(x_{k}^{(i)})^2

多部电影的代价函数表示为:

large j(x^{(1)},...,x^{(n_m)})=frac{1}{2}sum_{i=1}^{n_m}sum_{j:r(i,j)=1}((theta^{(j)})^{t}x^{(i)}-y^{(i,j)})^2+frac{lambda}{2}sum_{i=1}^{n_m}sum_{k=1}^{n}(x_{k}^{(i)})^2

所以,结合基于内容的推荐算法,我们可首先假设 theta ,然后拟合 x ,再优化 thetarightarrow xrightarrow thetarightarrow ...

3. 基于梯度下降的协同过滤算法(Collaborative filtering)

基于内容的推荐算法通过 x 求解 theta ,计算电影特征通过 theta 求解 x ,如此往复计算复杂度大,可将两个代价函数合并:

large begin{align*} j(x^{(1)},...,x^{(n_m)},theta^{(1)},...,theta^{(n_u)})&=frac{1}{2}sum_{(i,j):r(i,j)=1}((theta^{(j)})^{t}x^{(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 end{align*}

通过初始化 x 和 theta 为较小的值,通过梯度下降降低代价函数:

large begin{align*} theta_{k}^{(j)} &:= theta_{k}^{(j)}-alpha(sum_{i:r(i,j)=1}((theta^{(j)})^{t}x^{(i)}-y^{(i,j)})x_{k}^{(i)}+lambdatheta_{k}^{(j)}) \ x_{k}^{(i)} &:= x_{k}^{(i)}-alpha(sum_{j:r(i,j)=1}((theta^{(j)})^{t}x^{(i)}-y^{(i,j)})theta_{k}^{(j)}+lambda x_{k}^{(i)}) end{align*}

注:此时的 theta 和 x 都不需要偏置 theta_{0} 和 x_{0} 。

4. 低秩矩阵分解(Low rank matrix factorization)

如果对预测评分过程向量化,将评分表示为矩阵 y ,每一行为电影,每一列为用户,则 y=begin{bmatrix} theta^{(1)}x^{(1)} &... &theta^{(n_u)}x^{(1)} \ ... & &... \ theta^{(1)}x^{(n_m)} & ... & theta^{(n_u)}x^{(n_m)} end{bmatrix} ,x=begin{bmatrix} (x^{(1)})^t\ ...\ (x^{(n_m)})^t end{bmatrix} , theta =begin{bmatrix} (theta^{(1)})^t\ ...\ (theta^{(n_u)})^t end{bmatrix}, 则有 x cdot theta^t=y

5. 应用到推荐

根据电影 i 推荐相似的电影 j 给用户,可取使得 left|x^{(i)}-x^{(j)}right|^{2} 距离最小的 j

若一个用户对任何一部电影都未评分,则根据各个电影均值,进行推荐。


如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

 

 

 

最后

以上就是喜悦大神为你收集整理的吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)0. 前言1. 基于内容的推荐算法(Content-based recommendations)2. 计算电影特征3. 基于梯度下降的协同过滤算法(Collaborative filtering)4. 低秩矩阵分解(Low rank matrix factorization)5. 应用到推荐的全部内容,希望文章能够帮你解决吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)0. 前言1. 基于内容的推荐算法(Content-based recommendations)2. 计算电影特征3. 基于梯度下降的协同过滤算法(Collaborative filtering)4. 低秩矩阵分解(Low rank matrix factorization)5. 应用到推荐所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部