吉吉于

【RecSys】推荐系统的常见推荐算法的性能比较

 数据集是movielens-1M(下载)版本。

1. 训练集大小对于推荐性能的影响

使用SlopeOne算法,每次随机选取6%的用户预测其喜好,进行5次实验,取MAE的均值,得到下表:

 

 

训练集大小(%

MAE

90

0.71718149

70

0.73005925

50

0.77483222

30

0.83092947

10

0.98020104

 

绘制成折线图,如下图所示:

F60234ba cb1c 3899 b378 1aa6e058f6df

 

 由此可知,训练集越大,则推荐的准确率越高。

 

2. 不同相似度度量对性能的影响

使用ItemCF算法,训练集大小为数据集的90%,每次随机选取30%的用户预测其喜好,进行5次实验,取MAE的均值,得到下表:

 

 

相似度度量方法

MAE

皮尔逊相关系数

0.86158483

曼哈顿距离

0.82744657

欧几里德距离

0.80844643

对数似然值相似度

0.80750607

Jaccard相似度

0.78540776

余弦相似度

0.81422523

 

绘制成直方图,如下图:

A74c89a8 72e7 3eb8 bcbd ff2f22661c21

 

由此可知,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

 

绘制成直方图,如下图:

908f6d92 ad35 3566 8f66 47dffd89d906

 

由此可知,SVD和Slope One算法的推荐结果最为精确,UserCF最差。这个数据和推荐系统相关著作中的结论是吻合的。

此外,在内存方面,Slope One最占内存,1G内存下最多只能处理6%左右的用户。而其他算法均能轻松地处理30%以上的用户量。

在速度方面,SVD速度最快,处理每个用户的平均时间约为4ms,Slope One的平均时间约为30ms,ItemCF和UserCF的平均处理时间都在10ms左右。KNN的速度是最慢的,平均处理时间约为100ms。

 转载自http://fantasticinblur.iteye.com/blog/1333899

转载请注明:于哲的博客 » 【RecSys】推荐系统的常见推荐算法的性能比较