欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

推荐系统的常见推荐算法的性能比较 博客分类: 推荐系统 推荐系统svdknn协同过滤 

程序员文章站 2024-03-14 15:56:22
...

 

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

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

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

 

训练集大小(%

MAE

90

0.71718149

70

0.73005925

50

0.77483222

30

0.83092947

10

0.98020104

 

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


推荐系统的常见推荐算法的性能比较
            
    
    博客分类: 推荐系统 推荐系统svdknn协同过滤 

 


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

 

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

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

 

相似度度量方法

MAE

皮尔逊相关系数

0.86158483

曼哈顿距离

0.82744657

欧几里德距离

0.80844643

对数似然值相似度

0.80750607

Jaccard相似度

0.78540776

余弦相似度

0.81422523

 

绘制成直方图,如下图:


推荐系统的常见推荐算法的性能比较
            
    
    博客分类: 推荐系统 推荐系统svdknn协同过滤 

 

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

 

绘制成直方图,如下图:


推荐系统的常见推荐算法的性能比较
            
    
    博客分类: 推荐系统 推荐系统svdknn协同过滤 

 

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

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

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

 

  • 推荐系统的常见推荐算法的性能比较
            
    
    博客分类: 推荐系统 推荐系统svdknn协同过滤 
  • 大小: 6.9 KB
  • 推荐系统的常见推荐算法的性能比较
            
    
    博客分类: 推荐系统 推荐系统svdknn协同过滤 
  • 大小: 9.2 KB
  • 推荐系统的常见推荐算法的性能比较
            
    
    博客分类: 推荐系统 推荐系统svdknn协同过滤 
  • 大小: 7.2 KB