本发明属于数据挖掘技术领域,发明应用于协同过滤技术数据预处理过程中,主要目的是消除原始评分数据评分噪声。该方法区别于已有方法的特色在于将用户之间相似度关系和项目之间流行度差异信息结合起来对原始评分数据进行修正,以消除环境因素(例如用户评分时情绪状况)导致的评分偏移,以提高协同过滤技术的推荐准确度。
背景技术
协同过滤技术是个性化推荐技术中一种应用范围广的推荐算法,协同过滤技术的基本核心思想是利用群体智慧,认为相似用户的喜好也是相似的,目前主要分为以下几类:基于用户(或项目)的协调过滤算法、基于模型的协同过滤算法、以及混合过滤算法等。目前协同过滤算法存在着冷启动、数据稀疏、推荐精度低、评分噪声等问题。
协同过滤算法的基本过程是构建用户-项目评分矩阵,寻找用户相似邻居群体,根据邻居群体的对此用户未评价的项目的做出预测,然后根据结果对用户做出相应的推荐。协同过滤技术算法核心步骤是利用评分矩阵来选取用户相似群体,但是原始的用户评分可能会有评分噪声,例如用户评分时情绪因素会导致评分出现偏移,从而导致后续协同过滤算法推荐精确度下降。因此需要对原始评分数据进行调整,减弱情绪等因素导致的评分偏移。
技术实现要素:
本发明提出了一种基于模糊c均值聚类和weightedslopeone算法的评分数据噪声消除方法,目的在于消除环境因素(例如评分时用户的情绪情况),调整原始评分数据,提高协同过滤算法的推荐准确度。
本发明的技术方案:
一种评分数据噪声消除方法,步骤如下:
步骤1.输入用户评分矩阵r、用户集合user和项目集合item;
步骤2.对评分矩阵数据进行平滑处理,得到平滑处理后的评分矩阵r'
2.1)首先将项目按照流行度不同划分到三个集合中一个,三个集合分别是流行项目集合setpopular、普通项目集合setordinary和不流行项目集合setnpopular;
具体过程如下:
2.1.1)计算项目item的流行度popular(item),计算方法如下:
其中,集合user(item)是对项目item评分过的用户集合,ru,item是用户u对项目item的评分;
2.1.2)对评分矩阵评分数据进行k-means聚类,聚类个数为3,聚类后得到三个簇的中心分别为c1、c2、c3,其中c1<c2<c3;
2.1.3)如果
2.2)计算用户对于三类项目的评分偏移,分别是differ(u,popular)、differ(u,ordinary)和differ(u,npopular);计算流程如下:
2.2.1)计算用户u对于流行项目的评分偏移differ(u,popular)
其中,item(u)是用户u的评分过的项目集合;
2.2.2)计算用户u对于普通项目的评分偏移differ(u,ordinary)
2.2.3)计算用户u对于不流行项目的评分偏移differ(u,npopular)
2.3)填充评分矩阵,具体过程如下:
2.3.1)计算用户u的评分填充数量fillnum(u),计算方法如下:
其中,
2.3.2)计算用户u未评分过的项目item的填充概率possible(item),计算方法如下:
其中,r(item)是项目item的评分数量;r(m)是项目m的评分数量;
2.3.3)在集合item-item(u)按照计算的概率随机抽取项目item进行评分填充,如果fillnum(u)<=0,不进行数据填充;如果fillnum(u)>0,数据填充数量为fillnum(u)次;在填充过程中,如果抽到的item∈setpopular,填充用户u对于项目item的填充评分
步骤3.设定模糊指数值m,簇数量λ,初始化隶属度矩阵p和簇中心集合v,设定模糊c均值聚类算法的最大迭代次数t和精度ε;使用模糊c均值聚类算法对平滑处理后的评分矩阵r'进行模糊聚类,当达到最大迭代次数,或算法达到精度要求后,停止迭代;输出最终隶属度矩阵p和簇中心集合v;
步骤4.计算修正后的评分矩阵ra,具体流程如下:
4.1)取一条原始评分数据,计算修正后的评分;
假设取出的原始评分数据用户rk,x,是用户k对项目x的原始评分;计算修正后的评分
4.1.1)计算在第c个簇中项目x与项目y的流行度差异devc,x,y,计算方法如下:
devc,x,y=vc,x-vc,y
其中,1<=c<=λ;vc,x是第c个簇的簇中心在项目x上的分量;vc,y是第c个簇的簇中心在项目y上的分量;
4.1.2)计算修正后的评分
其中,rk,y是用户k对项目y的原始评分数据;item(x,y)是同时对项目x与项目y同时评分的项目集合;pk,c是用户k对第c个簇的隶属度;
4.2)重复(4.1),遍历原始评分矩阵所有评分,进行评分修正;
步骤5.输出修正后的评分矩阵ra。
本发明的有益效果为:该方法在进行噪声处理过程中综合考虑了项目之间流行度关系和用户之间的相似关系,同时使用聚类算法提高了weightedslopeone算法的扩展性.使用此方法来消除用户评分时特征环境的影响,提高协同过滤技术的推荐精度。经实验证明中经过修正后的评分数据相比较与原始评分数据在推荐精度上有明显提高。
附图说明
图1是本发明所提出的基于模糊c均值聚类和weightedslopeone算法实施的程序流程图。
图2是消除评分噪声后的评分数据与未处理的原始数据在不同邻居个数情况下运用基于用户的协同过滤算法进行推荐的推荐结果的mae(平均绝对误差值)比较。
具体实施方式
下面结合附图对本发明的实施方式进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。具体实验的数据集为movielens-small数据集,包括约700个用户对9000部电影的100000条评分。
步骤1.输入用户评分矩阵r,用户集合user,项目集合item。
步骤2.对评分矩阵数据进行平滑处理,得到平滑处理后的评分矩阵r'
2.1)首先将项目按照流行度不同划分到三个集合中一个,这三个集合分别是流行项目集合setpopular、普通项目集合setordinary、不流行项目集合setnpopular。具体过程如下:
2.1.1)计算项目item的流行度popular(item),计算方法如下:
其中,集合user(item)是对项目item评分过的用户集合,ru,item是用户u对项目item的评分。
2.1.2)对评分矩阵评分数据进行k-means聚类,聚类个数为3,聚类后得到三个簇的中心分别为c1、c2、c3,其中c1<c2<c3。
2.1.3)如果
2.2)计算用户对于三类项目的评分偏移,分别是differ(u,popular)、differ(u,ordinary)、differ(u,npopular)。计算流程如下:
2.2.1)计算用户u对于流行项目的评分偏移differ(u,popular)
其中,item(u)是用户u的评分过的项目集合;
2.2.2)计算用户u对于普通项目的评分偏移differ(u,ordinary)
2.2.3)计算用户u对于不流行项目的评分偏移differ(u,npopular)
2.3)填充评分矩阵,具体过程如下:
2.3.1)计算用户u的评分填充数量fillnum(u),计算方法如下:
其中,
2.3.2)计算用户u未评分过的项目item的填充概率possible(item),计算方法如下:
其中,item(u)是用户u评分过的项目集合;r(item)是项目item的评分数量;r(m)是项目m的评分数量。
2.3.3)在集合item-item(u)按照计算的概率随机抽取项目item进行评分填充,如果fillnum(u)<=0,那么不进行数据填充。如果fillnum(u)>0,那么数据填充数量为fillnum(u)次。在填充过程中,如果抽到的item∈setpopular,填充用户u对于项目item的填充评分
步骤3.设定模糊指数值m=2,簇数量λ=150,初始化隶属度矩阵p和簇中心集合v,设定算法的最大迭代次数t=100和算法精度ε=0.02。使用模糊c均值聚类算法对平滑处理后的评分矩阵r'进行模糊聚类,当达到最大迭代次数,或者算法达到精度要求后,停止迭代。输出最终隶属度矩阵p和簇中心集合v。
步骤4.计算修正后的评分矩阵ra,具体流程如下:
4.1)取一条原始评分数据,计算修正后的评分。
假设取出的原始评分数据用户rk,x,是用户k对项目x的原始评分。计算修正后的评分
4.1.1)计算在第c个簇中项目x与项目y的流行度差异devc,x,y,计算方法如下:
devc,x,y=vc,x-vc,y
其中,1<=c<=λ;vc,x是第c个簇的簇中心在项目x上的分量;vc,y是第c个簇的簇中心在项目y上的分量;
4.1.2)计算修正后的评分
其中,item(u)是用户u评分过的项目集合;rk,y是用户k对项目y的原始评分数据;item(x,y)是同时对项目x与项目y同时评分的项目集合;pk,c是用户k对第c个簇的隶属度。
4.2)重复(4.1),遍历原始评分矩阵所有评分,进行评分修正。
步骤5.输出修正后的评分矩阵ra。