奇异值分解的B站视频:
https://www.bilibili.com/video/BV1mx411E74T?p=4&spm_id_from=pageDriver
SVD分解就是:
- 先对要分解的矩阵进行: 转置相乘, 另一个方向转置相乘 (因为两种形式得到的对角化矩阵都会用得到UV)
- 然后: 对角化, 将对角矩阵拆开, 中间乘以另一个方向的用以对角化的矩阵
- 最后: 取一半得到SVD分解
SVD做推荐系统:
(SVD做推荐系统真的只看这个就足够了----B站优质视频: https://www.bilibili.com/video/BV1Zz4y197qJ?from=search&seid=17040727517204755290)
一个用户(列)和电影(行)的矩阵:
奇异值分解的公式与原理:
- 将原来的矩阵分解为: 左奇异矩阵, 奇异值矩阵, 右奇异矩阵
奇异值分解得到具体的奇异值(最大的两个)以及左奇异矩阵对应的列, 右奇异矩阵对应的行:
- 即, 分别获得电影和用户 两维的特征空间
- 即, 可以分别计算用户之间 和 电影之间 的相似度
获得"电影之间的相似度矩阵", 结合"用户电影评分矩阵", 预测用户给某个电影的打分:
- 计算分子: 要计算电影的相似度行*用户的一列
- 计算分母: 要预测电影的一行的相似度相加
显式反馈评价指标??:
- MAE: 误差之和除以个数
- RMAE: MAE开方
(某个实现)
电影推荐(推荐相似度高的):
- 可以看到先推荐0.99, 然后0.98