标签归档:推荐

recommenderlab 包实现电影评分预测

recommenderlab 是R语言非常强大的包,能帮助使用者针对评分数据或者0-1(不喜欢/喜欢)二分数据开发和测试推荐算法,本文就是利用该包对于 movielens 的电影评分数据进行预测和推荐,会对比基于用户的协同过滤和基于项的协同过滤在推荐效果上的差别。

1 获取电影数据

电影数据来源于http://grouplens.org/datasets/movielens/网站,本文分析的数据是MovieLens 100k,总共有100,000个评分,来自1000位用户对1700部电影的评价。

2 数据准备和清理

设置好工程路径后,可用读入数据,注意数据的格式,第一列是 user id,第二列是 item id,第三列是 rating,第四列是时间戳,时间戳这里用不到,可去掉。

> ml100k <- read.table("u.data", header = F, stringsAsFactors = T)

> head(ml100k)

   V1  V2 V3        V4

1 196 242  3 881250949

2 186 302  3 891717742

3  22 377  1 878887116

> ml100k <- ml100k[, -4]

可以简单看下 rating 的分布情况

> prop.table(table(ml100k[, 3]))

         1          2          3          4          5

0.06106870 0.12977099 0.41984733 0.32061069 0.06870229

> summary(ml100k[, 3])

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's

  1.000   3.000   3.000   3.206   4.000   5.000     812

可以看出,3 星和 4 星的数量最多,接近总数的75%,1 星和 5 星的数量最少,和预期的一致。数据格式和我们想要的行为用户,列为项目的 ratingMatrix 还有很大的差距,对此可以使用 reshape 包的 cast() 进行转换,注意转换后的缺失值默认为NA。

> library(reshape)

> ml100k <- cast(ml100k, V1 ~ V2, value = "V3")

> ml.useritem[1:3, 1:6]

   1  2  3  4  5  6

1  5  3  4  3  3  5

2  4 NA NA NA NA NA

3 NA NA NA NA NA NA

到此,把数据整理成 ratingMatrix,接下来利用 recommenderlab 处理数据。
继续阅读recommenderlab 包实现电影评分预测

统计学博文导读:火箭队比赛与分类树、神经网络与降维

即日起,统计之都网站成立“统计学博文导读”栏目,归属于“网站导读”栏目。我们号召广大读者和作者将喜爱的统计学博客文章推荐给我们,以方便更多读者在这个信息爆炸的时代能够快速阅读到优秀的文章;本文是统计之都“统计学博文导读”第一篇,权当示范本栏目的作用。这次我们重点推荐两篇博文,分别来自于刘思喆和左辰,向大家展示统计学理论的生活和思维魅力:

一、火箭队比赛与分类树

 2009年3月5日,刘思喆发表了“从数据看2008-2009赛季的火箭队”一文,文章用分类树(Classification Tree)分析了火箭队2008-2009年的比赛数据,从数据的角度指出了各种比赛指标对结果胜负的影响关系。文章附有两幅分类树图,大力推荐热爱篮球运动并熟悉分类与回归树模型的同仁阅读(尤其是姚明粉丝)。

我本人是篮球白痴,对于各种术语都不懂,因此不多啰嗦,博主能将统计方法灵活应用到身边的数据,对此我深感佩服。

二、神经网络与降维思想

2009年3月12日,左辰发表了“神經網絡和非線性降維”一文,讲述了神经网络处理多变量数据时的降维思想,从降维的角度说明了隐藏层的作用。顺便提一句,我对左辰的数学修养非常佩服,感兴趣的读者不妨阅读他更多的博文,如“分析的那些人和事”系列()等。

三、其它博文

这里再列举一些我日常阅读的博客以及文章举例:

各位读者若有好的建议和意见请Email反馈到blog[at]cos.name,欢迎推荐好文章大家一起分享,来信请注明推荐原因(如读后感等)。