基于云模型的协同过滤推荐算法代码实现(附源代码)

一、云模型介绍

    针对传统推荐系统数据稀疏、相似性计算方法导致共同评分用户少的问题,提出利用云模型概念与定量数值转换的优势,研究云模型(百度百科查看概念)的个性化推荐改进算法。

    云模型所表达的概念的整体特性可以用云的数字特征来反映,云用期望、熵、超熵这3个数字特征来整体表征一个概念。

二、推荐实现思路     

    1、构建用户-电影评分矩阵;

    2、定义用户的电影评分频度向量(用户对所有电影的1-5分值打分次数),用户评分频度向量不关心具体项目的评分,而是关心用户对项目集的评分特征;

    3、利用逆向云算法,根据用户的评分频度向量计算出云的三个参数表示的用户评分偏好,称为用户评分特征向量,记为

java mahout实现协同过滤算法 协同过滤推荐算法代码_数据

,其中,期望Ex反映了用户对所有项目的平均满意度,为偏好水平;熵En反映了用户评分的集中程度,为评分偏好的离散度;He为超熵的稳定度。

    4、计算两个云之间的相似度。两个用户的评分特征向量的余弦夹角为两个云之间的相似度,即两个用户之间的相似度;

    5、得到最近邻居;

    6、得到推荐结果。

三、基于云模型的协同过滤推荐算法的优势

    1、考虑了整体信息,避免了基于向量的相似度计算方式严格匹配对象属性的不足;

    2、充分利用了用户评分数据的统计信息;

    3、避免了传统相似度比较方法中侧重利用相关性而非相似性的弱点;

    4、使得那些虽然缺少共同评分项目,但有整体共同偏好的用户变得可比较;

    5、更加适合用户评分数据稀疏的现实情况。

四、推荐实现过程     

    1、构建用户-电影评分矩阵,如下图:

java mahout实现协同过滤算法 协同过滤推荐算法代码_协同过滤_02

    2、定义云实体类,如下图:

java mahout实现协同过滤算法 协同过滤推荐算法代码_相似度_03

    3、定义用户的电影评分频度向量,如下图:

java mahout实现协同过滤算法 协同过滤推荐算法代码_协同过滤_04

    4、实例化云,如下图:

java mahout实现协同过滤算法 协同过滤推荐算法代码_java mahout实现协同过滤算法_05

    5、计算用户之间的相似度,如下图:

java mahout实现协同过滤算法 协同过滤推荐算法代码_协同过滤_06

    6、得到最近邻居,如下图:

java mahout实现协同过滤算法 协同过滤推荐算法代码_协同过滤_07

    7、得到推荐结果,如下图:

java mahout实现协同过滤算法 协同过滤推荐算法代码_数据_08