个性化社交网络协同过滤推荐系统依赖用户的社交关系(用户关注用户的操作数据,称为用户之间的信任度),根据用户对项目的评分数据,计算目标用户的最近邻居,同时将目标用户信任的用户加入最近邻居,进行推荐,旨在提高目标用户信任的其他用户的相似用户的项目推荐,达到推荐更准确的目的。
本文主要讲解了个性化社交网络协同过滤推荐系统实现的开发环境、数据集、开发过程、协同过滤推荐算法、推荐算法测评指标、实现结果等内容。
1、开发工具:MyEclipse,jdk1.7,tomcat7,mysql5.5,navicat;
2、开发框架:Spring+Struts+Hibernate,页面采用jsp,jquery脚本,bootstrapt脚本,layer弹窗组件。
本系统采用filmtrust数据集,数据集一共两个文件trust.txt和ratings.txt,trust.txt是用户信任度数据文件,共1853条数据,ratings.txt是用户项目评分数据文件,共35497条数据,用户671个,项目1508个。
本系统使用SSH开发框架,mysql数据库,主要代码如下图所示:
1、applicaitonContext.xml配置文件
2、struts.xml配置文件
3、数据集处理工具类
4、协同过滤推荐算法工具类
5、KMeans聚类算法工具类
6、mysql数据库
本系统采用基于用户根据评分数据+聚类+信任用户数据填充提高信任用户相似度的推荐算法。
系统在启动后,会分页查找所有评分数据,并构建用户-项目评分矩阵,根据用户项目评分矩阵进行用户聚类(聚类算法的计算时间很长故在项目启动时运行,本聚类算法的初始中心点选择采用随机选择,随机选择对聚类的结果有影响,每次聚类结果都会不一样,也可更改其他参数影响聚类结果,最优聚类结果需要不断调试参数计算,可通过JunitTest类进行不断测试),用户在系统首页输入用户id,然后首先找到该用户所在的聚类中的簇,将簇中所有用户点构建成用户-项目评分矩阵,同时利用用户之间的信任度,将当前用户的信任用户填充进用户-项目评分矩阵,并填充当前用户的评分数据,如果信任用户对相同项目有评分,则不填充该项目评分,这样操作,用户与信任用户之间会有较高相似度,然后根据用户-项目评分矩阵计算当前用户的最近邻用户,最后就是推荐。
测评指标采用MAE平均绝对误差、recall召回率、precision查准率,算法的比较是四中介绍的算法与四去掉聚类算法的比较,经过多次计算添加聚类的算法的MAE、recall、precision都优于没有添加聚类的算法。
1、系统首页
2、KMeans聚类结果1
3、KMeans聚类结果2
4、推荐结果1
5、推荐结果2
6、测评指标