当前位置:天才代写 > 金融经济统计代写 > 统计作业 > Statistics统计学 迭代SVD算法代写

Statistics统计学 迭代SVD算法代写

2021-10-16 15:10 星期六 所属: 统计作业 浏览:40

Statistics统计学

期末课题推荐选题C

2020年春《统计计算》

面向电影推荐算法的矩阵填充问题研究

Statistics统计学 本选题要求你使用MovieLens数据集与矩阵填充(Matrix completion)技术[1] 构建电影推荐系统. MovieLens数据集是一组由MovieLens 用户提供的电影评分数据.数据包括电影评分、电影元数据(风格类型和年代)

问题  Statistics统计学

本选题要求你使用MovieLens数据集与矩阵填充(Matrix completion)技术[1] 构建电影推荐系统. MovieLens数据集是一组由MovieLens 用户提供的电影评分数据. 数据包括电影评分、电影元数据(风格类型和年代)以及关于用户的人口统计学数据(年龄、邮编、性别和职业等)。原始数据可从grouplens.org/datasets/movielens下载, 根据包含的数据量与评分年份的不同, 提供了不同的版本.

其中,MovieLens lastest small是最小的一组数据, 数据集包括600余名用户对9000余部电影的 1,000,000余个评分(1~5). 你可以安装R附加包dslabs在R中直接读取已清洗的该数据.

# install.packages('dslabs') # 首次运行需安装
library(dslabs)
data('movielens')
head(movielens, 3)

##   movieId           title year                           genres userId
## 1      31 Dangerous Minds 1995                            Drama      1
## 2    1029           Dumbo 1941 Animation|Children|Drama|Musical      1
## 3    1061        Sleepers 1996                         Thriller      1
##   rating  timestamp
## 1    2.5 1260759144
## 2    3.0 1260759179
## 3    3.0 1260759182

简要分析上述数据, 3~4分的评分约占总数的60%以上. Statistics统计学

round(table(movielens$rating)/length(movielens$rating),3)

##
##   0.5     1   1.5     2   2.5     3   3.5     4   4.5     5
## 0.011 0.033 0.017 0.073 0.044 0.201 0.105 0.287 0.077 0.151

可使用R附加包reshape的cast()函数将上述数据表转换为评分矩阵, 该矩阵的第行第列表示用户对电影的评分.  

# install.packages('reshape') # 首次运行需安装
library(reshape)
Z <- cast(movielens, userId~movieId, value="rating")
dim(Z)

## [1]  671 9067

该评分矩阵一般是具有强“稀疏性”(sparsity)的大矩阵. 下图空白位置对应矩阵的数据缺失.

Z <- as.matrix(Z)
image(Z, col=grey.colors(10))

协同过滤(collaborative filtering) 对推荐系统非常有用, 它可以视为经典的低秩矩阵填充问题. 我们的目标是找到评分填充值的合理计算方法, 并将每行最高评分所对应的电影推荐给用户.

Statistics统计学
Statistics统计学

迭代SVD  Statistics统计学

具体来说, 对于, 令表示中观测到的元素的索引的集合, 给定这些观测值, 一个自然的思路是可对应寻找的最低秩矩阵, 即

但含缺失数据的最低秩问题计算非常困难, 一般无法求解.

因此, 更常见的求解方法是允许所得到

的矩阵与观测值之间有一定误差, 即

"Statistics统计学/

该问题是非凸优化, 通常得不到最优解, 但可以采用迭代算法来得到局部最优解[2]. 例如

  1. 通过对进行随机填充, 初始化;
  2. 通过计算的r秩SVD求解:

3.基于对的缺失部分进行填充:

4.重复第2-3步, 直至算法收敛.

思考建议

  1. 将MovieLens lastest small数据集抽取75%左右的评分为训练集, 25%为测试集 (可按时间顺序; 或随机抽取).
  2. 利用上述迭代SVD算法, 在MovieLens lastest small数据集上实现评分填充, 分别报告该评分填充在训练集与测试集上的RMSE.
  3. 讨论选取不同的秩, RMSE的变化情况.
  4. 讨论对用于训练的数据矩阵的行和列都进行中心化或正则化, 是否会改进预测效果.
  5. 考虑其他的矩阵填充方法? 如, R包softImpute[3].
  6. 在其他MovieLens数据集上, 算法表现是否一致?

参考文献 Statistics统计学

[1] Laurent, M. (2001), Matrix completion problems, in The Encyclopedia of Optimization, Kluwer Academic, pp. 221–229.

[2] Mazumder, R., Hastie, T. and Tibshirani, R. (2010), Spectral regularization algorithms for learning large incomplete matrices, Journal of Machine Learning Research 11, 2287–2322.  

[3] Hastie, T., Mazumder, R.. softImpute: matrix completion via iterative soft-thresholded svd, 2013. URL http://CRAN.R-project.org/ package=softImpute. R package version 1.0.

——— The End ———

Ask me if anything is unclear!

Good luck! Chengcheng

"<yoastmark

更多代写:haskhell代写 Calculus代考 dissertation学术论文代写 Essay Proofreading代写机构 Finance金融论文代写 环境学论文代写

合作平台:essay代写 论文代写 写手招聘 英国留学生代写

 

天才代写-代写联系方式