基于Surprise推荐系统实战
- 本文就movielens数据集做测试,实践推荐。movielens数据集格式为:user item rating timestamp 其中主要用到前三列,timestamp在处理自己的数据集的时候可以用别的特征替换,在此不做详细说明。
- 本文基于开源推荐框架surprise,传送门。
- 官网上的例子直接用 Dataset.load_builtin(‘ml-100k’)载入数据集,奈何小白我一直不成功。遂自己去下载了数据集,从本地读取。
- 这里使用的是基于item的协同过滤,也就是这里的电影。相似度计算使用的是皮尔逊相关系数。
- 代码中可能稍微有点费脑的一点是一个转换问题,name<–>rid<–>inner_id,这里rid是一个桥梁的作用,rid:raw_id也就是每部电影所对应的原始id号。而在训练计算皮尔逊相关系数矩阵的时候,又将每部电影进行了id映射,也就是代码中的to_inner_iid()就是讲raw_id转换到相似性矩阵的inner_id。之后计算近邻,得到的inner_id 要将其转换为具体的电影名字,同样需要通过raw_id作为中介进行转换。讲起来有点绕,看代码详细体会。
import io
from surprise import KNN