14-Recommender Systems

来源:互联网 发布:远程连接linux常用工具 编辑:程序博客网 时间:2024/06/06 07:10

1 - Problem Formulation 推荐系统

电影推荐:

  • nu= 用户数量
  • nm= 电影数量
  • r(i,j)=1 用户 j 对电影 i 进行了评价
  • y(i,j)= 用户 j 对电影 i 的评分(仅当r(i,j)=1时才存在)

2 - Content Based Recommendations 基于内容推荐

content based recommendation

2.1 Problem formulation:

  • r(i,j) 用户 j 对电影 i 进行了评价
  • y(i,j) 用户 j 对电影 i 的评分(仅当r(i,j)=1时才存在)
  • θ(j) 用户 j 的参数向量
  • x(i) 电影 i 的特征向量
  • m(j) 用户 j 评了分的电影数量

已知电影特征 x(i) ,现在需要学习出每个用户的喜好特征 θ(j),用于估计用户对没看过电影的评分y(i,j)=(θ(j))T(x(i))

2.2 优化目标

optimization

2.3 优化算法

optimization algorithm

2.4 算法总结

  • 已知条件:
    • 每个电影的属性参数 X ,其中 X(i,:) 表示第 i 个电影的属性,此时假设共有 100 个不同的属性特征,即 X(i,:) 为长度100的向量。
    • 用户 j 的评分数据 Y(:,j)(只含评了分的电影,未评分的排除在外)
  • 求解目标:根据用户 j 对部分电影的评分,结合这些电影的属性特征X,推断出用户 j 对各类型电影的喜爱程度(即得出参数 Theta(j,:)),进而估计用户对未观看电影的喜爱程度(即通过 y=XTheta 估计评分)。

  • 算法总结:

    • 本质上是 linear regression已知所有电影的各种属性特征,通过用户的现有评分数据推断用户对新电影的评分。
    • 各个用户之间互相独立:估算用户对电影的评分只使用了当前用户的数据,并没有结合其他用户的评分数据。
  • 实现代码: (注意循环嵌套顺序 jkm

第 j 个用户对第 k 种类型的电影的喜爱程度(对所有电影进行遍历):

Theta_grad(j,k) = (X* Theta(j,:)' - Y(:,j))' * X(:,k)

第 j 个用户对各类电影的喜爱程度(对电影所有特性进行遍历):

Theta_grad(j,:) = (X* Theta(j,:)' - Y(:,j))' * X(:,:)

所有用户的偏好参数(对所有用户进行遍历):

Theta_grad = (X * Theta' - Y)' * X

最后考虑到有些电影没有评分:

Theta_grad = ((X * Theta' - Y).*R)' * X

3 - Collaborative Filtering 协同过滤

3.1 算法思想

与基于内容推荐不同,我们可能实现不知道电影的特征,而只知道用户的个人喜好特征,那么:
collaborative filtering

3.2 算法实现

与基于内容推荐类似,下面分析算法的理解思路。

  • 已知条件:

    • 用户 j 对各种类型电影的喜爱程度,其中 Theta(j,:) 表示用户 j 对各种类型的电影的喜爱程度
    • 电影 i 的评分数据 Y(i,:)(只含评了分的用户的数据,未评分的排除在外)
  • 算法目标: 根据 电影 i 的现有评分数据 , 结合所有用户对各类型电影的喜爱程度 Theta,估计电影 i 的属性特征(即得出参数 X(i.:)

  • 算法总结:

    • 本质上是 linear regression,已知所有用户对各类型电影的喜爱程度,通过电影的现有评分数据得出电影的属性参数。
    • 各个电影之间相互独立,在计算电影的属性参数时并没有考虑其他电影的分类信息
  • 实现代码:

第 i 个电影属于第 k 种类型的程度:(对所有用户进行遍历)

X_grad(i,k) = (X(i,:)*Theta' - Y(i,:)) * Theta(:,k)

第 i 个电影在各类型属性的参数特征:*(对所有电影分类进行遍历)

X_grad(i,:) = (X(i,:)*Theta' - Y(i,:)) * Theta

所有电影的属性特征:(对所有电影进行遍历)

X_grad = (X*Theta' - Y) * Theta

考虑有的用户对某些电影没有评分:

X_grad = R.*(X*Theta' - Y) * Theta

4 - Collaborative Filtering Algorithm 协同过滤算法

优化目标:
optimization objective

算法步骤:
algorithm steps

5 - Vectorization Low Rank Matrix Factorization 矩阵低秩分解的向量化实现

vectorization
寻找最相似的电影: smallx(i)x(j) i 与 j 最相似

6 - Implementational Detail Mean Normalization

如何处理那些没有对任何电影进行评分的用户:

  • 如果用之前的方法计算,会得出 θ=0,进而估计出来的评分都为0
    mean normalization

  • Mean Normalzization:
    mean normalizaion

0 0
原创粉丝点击