
2.4 实验与分析
2.4.1 数据集
为了检验提出方法的有效性,分别在Movielens_100K和Movielens_1M数据集上进行验证,数据集的具体参数如表2-1所列。
表2-1 实验数据集的具体参数

实验环境:Windows 7操作系统,4GB内存,Intel(R)Core(TM)i3-4150 CPU3.5GHz开发工具使用Matlab 2013b。
2.4.2 评价标准
本书采用MAE和RMSE作为度量标准。MAE用来衡量推荐的精确率,能很好地反映预测值误差的实际情况。设在训练集上得到用户的预测评分集合为{pu,1,pu,2,pu,3,…,pu,n},用户实际评分集合为{ru,1,ru,2,ru,3,…,ru,n},则平均绝对误差MAE定义如式(2-13)所示。

式中:ru,i——用户u对项目i的真实评分;
pu,i——用户u对项目i的预测评分;
N——测试集中用户评分的个数。
通过计算用户的预测评分和实际评分之间的偏差来度量算法预测的准确性,MAE值越小,则预测评分与实际评分越接近,精确度越高。
均方根误差RMSE定义如式(2-14)所示。

RMSE同样用来衡量推荐的精确率,RMSE更侧重于预测评分与实际评分差值的绝对值,相对MAE加大了惩罚力度,RMSE值越小,则MAE值越小,推荐精确度越高。
2.4.3 实验结果与分析
本实验随机将Movielens数据集按8:2比例分为训练集和测试集,并进行10次交叉实验求得平均值作为最终结果。
1. 在Movielens_100K数据集上传统相似度比较
为了验证和评估本书提出的基于巴氏系数相似度对于邻居数目的变化情况,将巴式系数相似度与传统相似度的MAE进行比较,如图2-1所示。
从图2-1可以看出,当邻居数目k在5~30变化时,比较Pearson相关系数、Jaccard相似度的MAE值。Jaccard相似度在全局上计算共同评分所占比重,由巴氏系数取得评分分布并结合Pearson相关系数在局部上得到评分之间的相似度,由全部和局部相似度得到巴氏系数相似度。从图2-1中可以看出,随着用户邻居数目k的增大,本书提出的BCCF算法其MAE值总体趋于减少,当邻居数达到30时MAE值基本稳定;相对于传统的Jaccard和Pearson相关系数计算方法,BCCF算法的MAE值最低且相对稳定。

图2-1 巴式系数相似度与传统相似度的MAE比较
2. 在Movielens_100K数据集上不同算法之间对比
为了验证同一数据集上不同算法之间MAE和RMSE的变化对比情况,如图2-2和图2-3所示分别为Movielens_100K数据集上3种算法的MAE对比和Movielens_100K数据集上3种算法的RMSE对比,实验中最近邻居数k分别取5、10、15、20、25和30,将巴氏系数相似度作为算法的相似度计算方法,本章提出的BCCF算法分别与文献[7]中提出的改进相似度算法(JPCC)、文献[8]中提出的改进算法(JMSD)在Movielens_100K数据集上进行MAE和RMSE值对比。

图2-2 Movielens_100K数据集上3种算法的MAE对比
由图2-2和图2-3可以看出,在Movielens_100K数据集上改进算法BCCF与传统的JPCC算法相比MAE在趋于稳定状态下降低了6%,RMSE降低了2%;比JMSD算法相比MAE在趋于稳定状态下降低了10%,RMSE降低了5%。在Movielens_100K数据集上BCCF算法的精确性比上述所参照的经典算法的精确度有所提高,从一个侧面说明了在该数据集中实际存在着用户对项目的共同评分很少的情况下进行优化的方案,即采用巴氏系数进行用户间所有的评分能够进一步提高算法的精度。

图2-3 Movielens_100K数据集上3种算法的RMSE对比
3. 在Movielens_1M数据集上不同算法之间对比
本节实验中最近邻居数k为5~30,将巴氏系数改进相似度作为算法的相似度计算方法。如图2-4所示为Movielens_1M数据集上3种算法的MAE对比,图2-5所示为Movielens_1M数据集上3种算法的RMSE对比,并将本章提出的BCCF算法分别与JPCC算法、JMSD算法进行了MAE和RMSE值对比。

图2-4 Movielens_1M数据集上3种算法的MAE对比

图2-5 Movielens_1M数据集上3种算法的RMSE对比
由图2-4和图2-5可以看出,在Movielens_1M数据集上改进算法BCCF与传统的JPCC算法相比在趋于稳定状态下MAE降低了20%,RMSE降低了17%,比JMSD算法相比在趋于稳定状态下MAE降低了10%,RMSE降低了4%。由于RMSE和MAE值越小则推荐精度越高,且在Movielens_1M数据集上BCCF算法的RMSE和MAE值比在Movielens_100K数据集上实验结果更小,说明数据集越稀疏其BCCF算法的MAE和RMSE性能越好,说明本书提出的巴氏系数改进相似度的协同过滤推荐算法能有效缓解评分数据稀疏问题及其带来的推荐精度问题。