推荐系统的常见推荐算法的性能比较 博客分类: 推荐系统 推荐系统svdknn协同过滤
数据集是movielens-1M(下载)版本。
1. 训练集大小对于推荐性能的影响
使用SlopeOne算法,每次随机选取6%的用户预测其喜好,进行5次实验,取MAE的均值,得到下表:
训练集大小(%) |
MAE |
90 |
0.71718149 |
70 |
0.73005925 |
50 |
0.77483222 |
30 |
0.83092947 |
10 |
0.98020104 |
绘制成折线图,如下图所示:
由此可知,训练集越大,则推荐的准确率越高。
2. 不同相似度度量对性能的影响
使用ItemCF算法,训练集大小为数据集的90%,每次随机选取30%的用户预测其喜好,进行5次实验,取MAE的均值,得到下表:
相似度度量方法 |
MAE |
皮尔逊相关系数 |
0.86158483 |
曼哈顿距离 |
0.82744657 |
欧几里德距离 |
0.80844643 |
对数似然值相似度 |
0.80750607 |
Jaccard相似度 |
0.78540776 |
余弦相似度 |
0.81422523 |
绘制成直方图,如下图:
由此可知,Jaccard相似度的性能略好于其他几种相似度,但是优势很小。使用不同相似度度量方法差别不大。
3. 不同推荐算法的性能
使用皮尔逊相关系数作为相似度,训练集大小为数据集的90%,每次随机选取6%的用户预测其喜好,进行5次实验,取MAE的均值。其中KNN算法取近邻大小为5;EM算法的学习速度为0.005,过度拟合值为0.02,随机噪声值为0.005,EM的迭代次数为20。得到下表:
推荐算法 |
MAE |
ItemCF |
0.86158483 |
UserCF |
1.03740876 |
Slope One |
0.71718149 |
KNN(k = 5) |
0.83184328 |
SVD (Compute SVD using EM Algorithm: learning rate = 0.005, overfitting prevention = 0.02, random noise = 0.005, epoch = 20) |
0.70493273 |
绘制成直方图,如下图:
由此可知,SVD和Slope One算法的推荐结果最为精确,UserCF最差。这个数据和推荐系统相关著作中的结论是吻合的。
此外,在内存方面,Slope One最占内存,1G内存下最多只能处理6%左右的用户。而其他算法均能轻松地处理30%以上的用户量。
在速度方面,SVD速度最快,处理每个用户的平均时间约为4ms,Slope One的平均时间约为30ms,ItemCF和UserCF的平均处理时间都在10ms左右。KNN的速度是最慢的,平均处理时间约为100ms。