LSI/SVD

Application of Dimensionality Reduction in Recommender System -- A Case Study

这篇 paper 说明了 CF 的存在的稀疏性问题、可扩展问题、同义性问题。而 KDD 领域中,有很多关于稀疏数据中学习的研究。作者在回顾几种 KDD 技术后,决定将使用 SVD 进行矩阵分解的 潜在语义索引(LSI)模型引入推荐系统,已解决 CF 推荐中存在的问题。

(看这篇 paper 之前,先看 协同过滤推荐 的 paper 会对理解这篇 paper 有很大帮助)
(我主要写了此方法的实验细节,来帮助我实现此篇论文,因此没有对此方法细节展开介绍。)

3.1 SVD

主要用 SVD 来做两个事情。(两个事情是分开来做的,不要混淆)

  1. 获取 user、product 之间的隐含关系,来预测评分
  2. 生成低维的 user-product 空间,并用此计算邻居集,生成 Top-N 推荐

3.1.1 评分预测

原始评分矩阵为 R。

  1. 通过填充评分矩阵,消除数据稀疏性
    1. 使用用户平局分填充
    2. 使用产品平均分填充(实验证明产品得到的结果更好)
  2. 进行数据标准化
    1. z-scores(z-score,也叫标准分数。是一个数与平均数的差再除以标准差得到的。说明了一个给定分数距离平均数多少个标准差)
    2. 原始评分的基础上减去用户平均分(实验证明此方法结果更好)

这两步进行完后,就得到了一个填满的数据标准化的评分矩阵 Rnorm
Rnorm= R + NPR
其中 NPR 是填满的评分矩阵, 提供最原始的非个性化推荐。
我们对 Rnorm进行因式分解, 并应用以下步骤得到低秩的近似矩阵:

  • 对 Rnorm 进行SVD分解,得到 U、S、V。
  • 将 S 矩阵维度降至 k
  • 计算 S1/2
  • 计算两个结构矩阵:UkSK1/2 和 SK1/2Vk

3.1.2 Top-N 推荐

将客户-产品偏好视为二元数据,方法是将客户 - 产品矩阵中被评价过的条目视为 1,其余为 0。

使用低维空间构建邻居
  • 将构建后的矩阵进行 SVD 分解,得到 U、S、V。
  • 保留 S 矩阵 k 个特征值,得到 Sk
  • 根据 UkSK1/2 计算用户之间相似度。
生成 Top-N 推荐

统计用户的邻居相关产品的出现频次,根据频次由高到低排序,产生推荐列表。

4.1 实验设置

4.1.1 设置数据集

  1. train-set 70%, test-set 30%
  2. movielens 评分预测、Top-N预测
  3. 电商购买数据 Top-N预测

4.1.2 推荐系统基准

  1. 评分预测:Pearson based CF 与 SVD-based 进行比较
  2. Top-N: 分别在原始矩阵,与 SVD 降维后的 UkSK1/2 矩阵,计算 cosine 用户相似度。

4.2 评价指标

4.2.1 预测评分评价指标
  • MAE、RMSE (此实验使用 MAE)
  • Decision support accuracymetrics :最常用的决策支持准确度指标是反转率,加权误差和 ROC 灵敏度。
4.2.2 Top-N 评价指标

使用 信息检索(IR) 中的 recall、precision ,但需稍作改变。


  • F1 (此实验使用 F1)


4.3 实验步骤

4.3.1 评分预测实验

数据矩阵 R 中的每个条目评分为 1-5 分,若用户 i 对电影 j 无评分,rij 为空。

  1. 计算每一项目的平均分,填充到 R 中
  2. 标准化 R,将 rij 减去 用户 i 评分的平均分
  3. 进行 SVD 分解,得到 U、S、V。S 是奇异值矩阵,是对角矩阵,值为降序排列。Sk仅保留最大的 K 个奇异值,其余为 0 。UkSK1/2 和 SK1/2Vk 相乘,得到 943 * 1682 的评分预测矩阵 P。
  4. 消除标准化,将矩阵 R 加上用户 i 评分的平均分。通过 Pearson based CF 进行评分预测。
  5. k 值设置为 2,5 - 21,25,50,100,k=14 时表现最好。固定 k 为14,改变 训练集/测试集 比率由 0.2 到 0.95,每次增加 0.05。计算 10 次,每次重新划分训练集、测试集。
4.3.2 Top-N 实验

将之前实验的原始矩阵 R 中的非零评分,转换为 1 ,其它为 0。使用下面两种方法,进行 Top-10 推荐:

  • High dimensional neighborhood:
    对原始评分矩阵,使用 cosine 计算最近邻。根据最近邻,统计项目出现频次,按出现频次由高到低推荐前 N 项。
  • Low dimensional neighborhood:
    使用 SVD 分解矩阵,得到 UkSK1/2 。对 UkSK1/2 使用 cosine 计算最近邻,统计项目出现频次,按出现频次由高到低推荐前 N 项。

结果分析、讨论、总结请阅读原论文:
Application of Dimensionality Reduction in Recommender System -- A Case Study

你可能感兴趣的:(LSI/SVD)