CN107391713A - 一种解决协同过滤推荐技术中冷启动问题的方法及系统 - Google Patents
一种解决协同过滤推荐技术中冷启动问题的方法及系统 Download PDFInfo
- Publication number
- CN107391713A CN107391713A CN201710634135.7A CN201710634135A CN107391713A CN 107391713 A CN107391713 A CN 107391713A CN 201710634135 A CN201710634135 A CN 201710634135A CN 107391713 A CN107391713 A CN 107391713A
- Authority
- CN
- China
- Prior art keywords
- mrow
- msub
- user
- cluster
- msup
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Biology (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Physiology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Genetics & Genomics (AREA)
- Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于个性化推荐技术领域,尤其涉及一种解决协同过滤推荐技术中冷启动问题的方法及系统。一种解决协同过滤推荐技术中冷启动问题的方法,包括:选取数据集;通过优化的遗传算法建立初始用户或项目聚类模型;基于用户或项目初始聚类模型进行聚类,得到用户或项目聚类模型;计算新用户或新项目到聚类模型中各类簇的熵值,将新用户或新项目划分类簇;对新用户或新项目进行推荐。本发明还包括一种解决协同过滤推荐技术中冷启动问题的系统,包括:选取模块;初始模型建立模块;聚类模块;划分类簇模块;产生推荐模块。本发明利用改进的遗传算法进行K‑Means聚类,生成用户或项目初始聚类模型,对新用户或新项目产生推荐。
Description
技术领域
本发明属于个性化推荐技术领域,尤其涉及一种解决协同过滤推荐技术中冷启动问题的方法及系统。
背景技术
信息过载是大数据环境下最严重的问题之一,推荐系统作为有效缓解该问题的方法,受到工业界和学术界越来越多的关注。作为当前使用最广泛的推荐技术之一的协同过滤推荐技术,在理论和应用研究都已取得了大量成果,但是存在冷启动问题,影响了协同过滤推荐技术的推荐质量。
冷启动问题包括新用户冷启动问题和新项目冷启动问题。传统的协同过滤推荐技术无法对新用户或新项目进行相似度计算,为其查找最近邻居集,无法产生推荐。本发明借用机器学习思想,采用K-Means算法进行聚类,然后利用新用户或新项目的属性信息,将新用户或新项目分到相应的簇中,这样新用户和新项目就能找到兴趣相似的邻居,根据邻居用户或项目的评分信息产生推荐,解决了传统协同过滤推荐算法的冷启动问题。但是,传统的K-Means聚类算法在对初始用户中心点的选取是随机的,不仅效率低而且会产生局部最优的情况,影响最终聚类的划分,从而影响整个推荐质量。传统的遗传算法中的选择交叉概率及变异概率是固定的,即整个进化过程中不变,但是种群初期与末期的差异是很大的,在种群进化初期,个体之间差异性较大,需要较大的交叉、变异概率,从而增加种群的多样性,而在种群进化的末期,个体之间差异已经相对很小,故需要及时调整交叉概率及变异概率。
发明内容
本发明的目的在于克服上述协同过滤推荐技术中的新用户及新项目冷启动问题,利用改进的遗传算法进行K-Means聚类,生成用户或项目初始聚类模型,最终对新用户和新项目产生推荐。
为了实现上述目的,本发明采用以下技术方案:
一种解决协同过滤推荐技术中冷启动问题的方法,包括以下步骤:
步骤1:选取数据集,所述数据集包括用户-项目评分数据及用户或项目属性信息;
步骤2:基于用户-项目评分数据,通过优化的遗传算法建立初始用户或项目聚类模型;
步骤3:根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型;
步骤4:根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇;步骤5:在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐。
优选地,在所述步骤2之前还包括:
对遗传算法进行优化,包括:
步骤a.采用加权的轮廓系数作为种群中个体的适应度函数:
f=s (3)
其中,a(i)为样本i到同类簇其他样本的平均距离,b(i)表示样本i到其他类簇内样本平均距离的最小值,S(i)为样本i的轮廓系数,S为聚类模型的轮廓系数,n为聚类模型中样本的个数,f为种群中个体的适应度函数,f′为改进后种群中个体的适应度函数,witer为惯性权系数,iter为当前进化代数,iteravg为平均进化代数,itermax为最大进化代数,wini为最小惯性权系数,wend为最大惯性权系数;
步骤b.将算法中的交叉概率和变异概率按如下公式进行动态调整:
其中,Pc *为遗传算法自适应交叉概率,Pc1、Pc2分别为最大、最小交叉概率,Pm *为遗传算法自适应变异概率,Pm1、Pm2分别为最大、最小变异概率,f′为改进后种群中个体的适应度函数,favg为种群中个体的平均适应度函数值,fmax为个体的最大适应度函数值,Epj为种群中个体j的熵值,Eavg为种群中个体的平均熵值,Emax为种群中个体的最大熵值,k为1/logem,e为自然常数,m为聚类中样本的数量,pij为种群个体j对应的聚类中类簇i包含的对象占聚类所有样本的比例,L为种群个体j对应的聚类中类簇的个数。
优选地,所述步骤2包括:
步骤2.1:将用户-项目评分数据转化为用户-项目评分矩阵R;
步骤2.2:输入用户-项目评分矩阵R及当前进化代数iter;
步骤2.3:种群初始化,随机选择M个2~n1/2之间的整数,其中n为用户或项目个数,并将所述M个2~n1/2之间的整数进行二进制编码、转化为二进制数,构成种群的M条染色体,所述染色体为种群中个体;
步骤2.4:对于每一条染色体,在R上随机选取该染色体对应十进制数个元素,作为初始聚类中心,进行K-Means聚类,得到聚类模型;
步骤2.5:利用公式(1)至(5)计算种群中染色体的适应度函数值;
步骤2.6:根据适应度函数值以及当前的进化代数,判断是否达到收敛条件,即是否iter>N或|fi-fi-1|<=ε,其中,N为正整数,ε为正数,若是,则进行步骤2.11;若否,则进行下一步;
步骤2.7:保留最大适应度函数值对应的染色体,并将该染色体迁移到下一代种群中,替换最小适应度函数值对应的染色体;
步骤2.8:采用轮盘赌策略进行染色体选择操作;
步骤2.9:采用Pc *进行单点交叉操作;
步骤2.10:采用Pm *进行变异操作,得到变异后种群的M条染色体,执行步骤2.4;
步骤2.11:输出最大适应度函数值的染色体,并将其对应的十进制数作为聚类个数k′,进行K-Means聚类,并将对应的聚类结果作为初始用户或项目聚类模型,所述初始用户或项目聚类模型包括初始用户或项目聚类个数k′及初始聚类中心点。
优选地,所述步骤4包括:
步骤4.1:统计R中存在评分数据的用户id或项目id;
步骤4.2:将R中存在评分数据的用户或项目对应的用户属性信息或项目属性信息进行离散化处理,得到用户属性信息矩阵U或项目属性信息矩阵I;
步骤4.3:结合用户或项目聚类模型及U或I,将新用户或新项目分别置于用户或项目聚类模型的类簇内,并计算此时类簇的熵值,计算公式如下所示:
其中,ei′为类簇c内用户或项目属性i的熵值,k为1/logem,e为自然常数,m为类簇c中样本的数量,L为用户或项目属性i划分类数,pij为类簇c内第i个用户或项目属性的第j个类别所占比例,q为用户或项目属性个数;
步骤4.4:将新用户或新项目划分到熵值最大的类簇中。
优选地,所述步骤5包括:
步骤5.1:在新用户或新项目所属类簇内,计算新用户或新项目与所属类簇内用户或项目的相似度,得出新用户或新项目的最近邻居us或is;
步骤5.2:在R上计算us或is的最近邻居集Qu或Qi;
步骤5.3:在Qu或Qi上,对us进行Top-N推荐,并将Top-N推荐结果推荐给新用户,将新项目推荐给Qi中的评分值Top-N用户。
基于上述的一种解决协同过滤推荐技术中冷启动问题的方法的一种解决协同过滤推荐技术中冷启动问题的系统,包括:
选取模块,用于选取数据集,所述数据集包括用户-项目评分数据及用户或项目属性信息;
初始模型建立模块,用于基于用户-项目评分数据,通过优化的遗传算法建立初始用户或项目聚类模型;
聚类模块,用于根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型;
划分类簇模块,用于根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇;
产生推荐模块,用于在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐。
优选地,还包括:
优化模块,用于对遗传算法进行优化,包括:
步骤a.采用加权的轮廓系数作为种群中个体的适应度函数:
f=S (3)
其中,a(i)为样本i到同类簇其他样本的平均距离,b(i)表示样本i到其他类簇内样本平均距离的最小值,S(i)为样本i的轮廓系数,S为聚类模型的轮廓系数,n为聚类模型中样本的个数,f为种群中个体的适应度函数,f′为改进后种群中个体的适应度函数,witer为惯性权系数,iter为当前进化代数,iteravg为平均进化代数,itermax为最大进化代数,wini为最小惯性权系数,wend为最大惯性权系数;
步骤b.将算法中的交叉概率和变异概率按如下公式进行动态调整:
其中,Pc *为遗传算法自适应交叉概率,Pc1、Pc2分别为最大、最小交叉概率,Pm *为遗传算法自适应变异概率,Pm1、Pm2分别为最大、最小变异概率,f′为改进后种群中个体的适应度函数,favg为种群中个体的平均适应度函数值,fmax为个体的最大适应度函数值,Epj为种群中个体j的熵值,Eavg为种群中个体的平均熵值,Emax为种群中个体的最大熵值,k为1/logem,e为自然常数,m为聚类中样本的数量,pij为种群个体j对应的聚类中类簇i包含的对象占聚类所有样本的比例,L为种群个体j对应的聚类中类簇的个数。
优选地,所述初始模型建立模块进一步包括:
转化模块,用于将用户-项目评分数据转化为用户-项目评分矩阵R;
输入模块,用于输入用户-项目评分矩阵R及当前进化代数iter;
种群初始化模块,用于种群初始化,随机选择M个2~n1/2之间的整数,其中n为用户或项目个数,并将所述M个2~n1/2之间的整数进行二进制编码、转化为二进制数,构成种群的M条染色体,所述染色体为种群中个体;
随机聚类模块,用于对于每一条染色体,在R上随机选取该染色体对应十进制数个元素,作为初始聚类中心,进行K-Means聚类,得到聚类模型;
第一计算模块,用于利用公式(1)至(5)计算种群中染色体的适应度函数值;
判断模块,用于根据适应度函数值以及当前的进化代数,判断是否达到收敛条件,即是否iter>N或|fi-fi-1|<=ε,其中,N为正整数,ε为正数,若是,则进行步骤2.11;若否,则进行下一步;
迁移替换模块,用于保留最大适应度函数值对应的染色体,并将该染色体迁移到下一代种群中,替换最小适应度函数值对应的染色体;
选择模块,用于采用轮盘赌策略进行染色体选择操作;
交叉模块,用于采用Pc *进行单点交叉操作;
变异模块,用于采用Pm *进行变异操作,得到变异后种群的M条染色体,执行步骤2.4;
初始聚类模型生成模块,用于输出最大适应度函数值的染色体,并将其对应的十进制数作为聚类个数k′,进行K-Means聚类,并将对应的聚类结果作为初始用户或项目聚类模型,所述初始用户或项目聚类模型包括初始用户或项目聚类个数k′及初始聚类中心点。
优选地,所述划分类簇模块进一步包括:
统计模块,用于统计R中存在评分数据的用户id或项目id;
离散化模块,用于将R中存在评分数据的用户或项目对应的用户属性信息或项目属性信息进行离散化处理,得到用户属性信息矩阵U或项目属性信息矩阵I;
第二计算模块,用于结合用户或项目聚类模型及U或I,将新用户或新项目分别置于用户或项目聚类模型的类簇内,并计算此时类簇的熵值,计算公式如下所示:
其中,ei′为类簇c内用户或项目属性i的熵值,k为1/logem,e为自然常数,m为类簇c中样本的数量,L为用户或项目属性i划分类数,pij为类簇c内第i个用户或项目属性的第j个类别所占比例,q为用户或项目属性个数;
划分模块,用于将新用户或新项目划分到熵值最大的类簇中。
优选地,所述产生推荐模块进一步包括:
最近邻居计算模块,用于在新用户或新项目所属类簇内,计算新用户或新项目与所属类簇内用户或项目的相似度,得出新用户或新项目的最近邻居us或is;
最近邻居集计算模块,用于在R上计算us或is的最近邻居集Qu或Qi;
推荐模块,用于在Qu或Qi上,对us进行Top-N推荐,并将Top-N推荐结果推荐给新用户,将新项目推荐给Qi中的评分值Top-N用户。
与现有技术相比,本发明具有的有益效果:
本发明解决了传统的K-Means聚类算法在对初始聚类中心点的随机选取时,产生的局部最优情况,引入具有自适应全局优化搜索的遗传算法,在交叉概率和变异概率上,根据熵值及进化代数,对传统的交叉概率和变异概率进行改进,随着种群的变化自适应实现种群的进化,采用轮廓系数作为适应度函数,并结合加权的惯性权系数对轮廓系数进行改进,将K-Means算法的局部寻优能力和遗传算法的全局寻优能力相结合,得出用户或项目初始聚类模型。根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型;根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇;在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐。
本发明解决了传统协同过滤推荐技术存在的冷启动问题,对新用户或新项目进行了推荐,并有较高推荐质量。
附图说明
图1为本发明一种解决协同过滤推荐技术中冷启动问题的方法的基本流程示意图之一。
图2为本发明一种解决协同过滤推荐技术中冷启动问题的方法的基本流程示意图之二。
图3为本发明一种解决协同过滤推荐技术中冷启动问题的方法的最近邻个数选择曲线图。
图4为本发明一种解决协同过滤推荐技术中冷启动问题的方法的推荐质量比较曲线图。
图5为本发明一种解决协同过滤推荐技术中冷启动问题的系统的基本结构示意图之一。
图6为本发明一种解决协同过滤推荐技术中冷启动问题的系统的基本结构示意图之二。
具体实施方式
为了便于理解,对本发明的具体实施方式中出现的部分名词作以下解释说明:
协同过滤:协同过滤推荐算法通过用户对项目的评分记录对目标用户进行推荐,认为拥有相似兴趣的用户会对相同的项目有相似的喜好程度。协同过滤不仅考虑目标用户的历史评分记录,还考虑其他用户的历史记录,通过过滤不相关信息,将对目标用户有价值的信息聚集在一起,进而产生推荐。协同过滤可以发现目标用户潜在的兴趣爱好,且推荐质量较高,被证明是目前最成功的个性化推荐技术之一。
冷启动:冷启动问题由两部分组成,新用户冷启动问题和新项目冷启动问题。新用户冷启动问题尤为严重,它可能导致用户对系统的不信任进而导致用户的流失。新用户在刚加入推荐网站时,由于没有或缺少评分数据,协同过滤推荐算法不能对目标用户进行精确推荐,这样容易导致新用户的流失,而新项目当评分未达到一定的数量之前不会被推荐给用户,从而导致新项目很难被推荐给用户。
遗传算法:属于一种随机化搜索具体问题最优解的算法,该算法的由来是建立在由达尔文提出的生物界“适者生存,优胜劣汰”的进化规律基础之上的。遗传算法一词最初是在1967年时,由美国著名Michigan大学的J.Holland教授给出的。遗传算法不受其所在领域的限制,较强的鲁棒性使其能处理各种类型的问题;算法在执行时具有内在的隐并行性特点,因此易于实现算法的并行化计算,在算法执行效率上有很大的处理空间。
聚类:聚类是根据在数据中发现的描述对象及其关系的信息将物理或抽象对象的集合分成相似的对象类的过程。聚类是无监督的学习,且组内相似性越大,组间差别越大,聚类效果越好。目前有很多的聚类算法,主要有基于划分的方法,基于层次的方法,基于密度的方法等。
K-Means聚类:K-Means算法又称K均值算法,算法以K作为输入参数,把n个对象的集合分为K个类簇,使得不同类簇间的相似度低,而相同类簇内的相似度高。本发明中K-Means算法采用平方误差和作为判断收敛的准则函数。
轮廓系数:是聚类效果好坏的一种评价方式。最早由Peter J.Rousseeuw在1986提出。它结合内聚度和分离度两种因素,可以用来在相同原始数据的基础上用来评价不同算法、或者算法不同运行方式对聚类结果所产生的影响。
适应度函数:在遗传算法中,适应度是描述个体性能的主要指标。根据适应度的大小,对个体进行优胜劣汰。适应度是驱动遗传算法的动力。从生物学角度讲,适应度相当于“生存竞争、适者生存”的生物生存能力,在遗传过程中具有重要意义。适应度函数(FitnessFunction)的选取直接影响到遗传算法的收敛速度以及能否找到最优解。
Top-N推荐:根据目标用户的最近邻居集,利用预测评分公式预测目标用户对未评分项目的评分,将预测评分最高的N个项目推荐给目标用户。
Pearson相关系数:Pearson相关系数:用来衡量两个数据集合之间的相关性,取值范围为[-1,1],数值越大表示两个数据集合越相似。
海明距离:两个码字的对应比特取值不同的比特数称为这两个码字的海明距离,在一个有效编码集中,任意两个码字的海明距离的最小值称为该编码集的海明距离。
轮盘赌策略:群体中每一染色体指定饼图中一个小块。块的大小与染色体的适应性分数成比例,适应性分数愈高,它在饼图中对应的小块所占面积也愈大。为了选取一个染色体,要做的就是旋转这个轮子,直到轮盘停止时,看指针停止在哪一块上,就选中与它对应的那个染色体。
下面结合附图和具体的实施例对本发明做进一步的解释说明:
实施例一:
如图1所示,本发明的一种解决协同过滤推荐技术中冷启动问题的方法,包括以下步骤:
步骤S11:选取数据集,所述数据集包括用户-项目评分数据及用户或项目属性信息。
步骤S12:基于用户-项目评分数据,通过优化的遗传算法建立初始用户或项目聚类模型。
步骤S13:根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型。
步骤S14:根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇。
步骤S15:在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐。
实施例二:
如图2-4所示,本发明的另一种解决协同过滤推荐技术中冷启动问题的方法,包括以下步骤:
步骤S21:选取数据集,作为一种可实施方式,选取Movielens数据集,包括6040位用户对3900部电影超过1,000,000条的用户-项目评分数据、6040位用户的用户属性信息,其中用户-项目评分数据包括用户id、项目id及评分数据,用户属性信息包括用户id、用户性别及用户年龄。
步骤S22:对遗传算法进行优化,包括:
步骤a.采用加权的轮廓系数作为种群中个体的适应度函数:
f=S (3)
其中,a(i)为样本i到同类簇其他样本的平均距离,b(i)表示样本i到其他类簇内样本平均距离的最小值,S(i)为样本i的轮廓系数,S为聚类模型的轮廓系数,n为聚类模型中样本的个数,f为种群中个体的适应度函数,f′为改进后种群中个体的适应度函数,witer为惯性权系数,iter为当前进化代数,iteravg为平均进化代数,itermax为最大进化代数,wini为最小惯性权系数,wend为最大惯性权系数;
步骤b.将算法中的交叉概率和变异概率按如下公式进行动态调整:
其中,Pc *为遗传算法自适应交叉概率,Pc1、Pc2分别为最大、最小交叉概率,Pm *为遗传算法自适应变异概率,Pm1、Pm2分别为最大、最小变异概率,f′为改进后种群中个体的适应度函数,favg为种群中个体的平均适应度函数值,fmax为个体的最大适应度函数值,Epj为种群中个体j的熵值,Eavg为种群中个体的平均熵值,Emax为种群中个体的最大熵值,k为1/logem,e为自然常数,m为聚类中样本的数量,pij为种群个体j对应的聚类中类簇i包含的对象占聚类所有样本的比例,L为种群个体j对应的聚类中类簇的个数。
步骤S23:基于用户-项目评分数据,通过优化的遗传算法建立初始用户聚类模型,包括:
步骤S231:将用户-项目评分数据转化为用户-项目评分矩阵R;用户-项目评分矩阵R如表1所示:
表1 用户-项目评分信息表
用户id | 项目id | 评分 |
1 | 122 | 5 |
2 | 110 | 5 |
3 | 1246 | 4 |
4 | 21 | 3 |
5 | 39 | 3 |
… | … | … |
步骤S232:输入用户-项目评分矩阵R及当前进化代数iter,作为一种可实施方式,iter取值为0。
步骤S233:种群初始化,随机选择M个2~n1/2之间的整数,其中n为用户或项目个数,并将所述M个2~n1/2之间的整数进行二进制编码、转化为二进制数,构成种群的M条染色体,所述染色体为种群中个体;
作为一种可实施方式,M取30,n为6040,即选择30个2~60401/2之间的整数,并将所述30个2~60401/2之间的整数进行二进制编码、转化为二进制数,构成种群的30条染色体,即种群中个体,其中6040为用户的个数;
例如选取{3,15,20,……,62}共30个十进制整数,分别转化为二进制,如15转化为二进制为0001111。
步骤S234:对于每一条染色体,在R上随机选取该染色体对应十进制数个元素,作为初始聚类中心,进行K-Means聚类,得到聚类模型;
例如当染色体对应十进制数为15时,则在R上随机选取15个元素作为初始聚类中心,进行K-Means聚类,直至聚类结束;
通常K-Means算法采用平方误差和E作为判断收敛的准则函数,定义如下:
其中,k′是聚类个数,p表示给定的对象在空间中的坐标,Ci是类簇,mi是Ci的均值,并且p和mi都可以是多维的;
进行K-Means聚类,过程如下:
步骤c,通过欧氏距离将所有元素划分到距离最小的类簇当中;
步骤d,重新计算同一类簇内数据点的平均值,作为下次划分时类簇的中心点;
步骤e,判断算法是否达到收敛的条件,若无则返回步骤d继续执行,直到满足收敛条件,算法输出k′个簇的集合,即聚类模型,并在此基础上进行下一步处理。
步骤S235:利用公式(1)至(5)计算种群中染色体的适应度函数值。
步骤S236:根据适应度函数值以及当前的进化代数,判断是否达到收敛条件,即是否iter>N或|fi-fi-1|<=ε,其中,N为正整数,ε为正数,若是,则进行步骤S2311;若否,则进行下一步,作为一种可实施方式,N取值为100,ε取值为0.0001。
步骤S237:保留最大适应度函数值对应的染色体,并将该染色体迁移到下一代种群中,替换最小适应度函数值对应的染色体。
步骤S238:采用轮盘赌策略进行染色体选择操作,包括:
步骤f.根据各染色体的适应度值计算其按比例分配的概率;
步骤g.利用随机函数产生一个在[0,1]之间的随机数;
步骤h.根据步骤f得到的概率,判断产生的随机数在累计概率序列中的位置,若它最多能大于序列中的第n个值,其中n属于[1,30],则表示第n条染色体被随机选择;
步骤i.判断是否满足交叉概率中需要交叉的染色体数目,若不满足,则返回步骤g,满足则算法停止,进行下一步。
步骤S239:采用Pc *进行单点交叉操作。
步骤S2310:采用Pm *进行变异操作,得到变异后种群的30条染色体,执行步骤S234。
步骤S2311:输出最大适应度函数值的染色体,并将其对应的十进制数作为聚类个数k′,进行K-Means聚类,并将对应的聚类结果作为初始用户或项目聚类模型,所述初始用户或项目聚类模型包括初始用户或项目聚类个数k′及初始聚类中心点。
步骤S24:根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型。
步骤S25:根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇,包括:
步骤S251:统计R中存在评分数据的用户id。
步骤S252:将R中存在评分数据的用户或项目对应的用户属性信息或项目属性信息进行离散化处理,得到用户属性信息矩阵U或项目属性信息矩阵I,具体如下:
age:用户年龄,把用户年龄划分为六类并用6位二进制代表:100000代表0-20,110000代表21-30,111000代表31-40,111100代表41-50,111110代表51-60,111111代表大于60;gender:用户性别,用0代表男,1代表女;
occupation:用户职业,共有21个职位,将其划分为4类,1000代表休闲类,0100代表文化类,0010代表管理类,0001代表其他。
步骤S253:结合用户或项目聚类模型及U或I,将新用户或新项目分别置于用户或项目聚类模型的类簇内,并计算此时类簇的熵值,计算公式如下所示:
其中,ei′为类簇c内用户属性i的熵值,k为1/logem,e为自然常数,m为类簇c中样本的数量,L为用户属性i划分类数,pij为类簇c内第i个用户属性的第j个类别所占比例,q为用户属性个数;
作为一种可实施方式,每个用户有3个属性,即q为3,将用户的每一个属性分为2类,即L为2,分别为和新用户属性信息一致、和新用户属性信息不一致。
步骤S254:将新用户划分到熵值最大的类簇中。
步骤S26:在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐,包括:
步骤S261:在新用户所属类簇内,计算新用户与所属类簇内用户的相似度,作为一种可实施方式,采用海明距离进行计算,得出新用户的最近邻居us或is,具体如下:
利用用户的属性特征,由海明距离方法来计算用户间相似度,用户属性特征包含用户性别、用户年龄、用户所从事的职位;
假设考虑的用户属性特征集为{c1,c2,......cn},用户A各个特征所对应的值为{v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11},用户B各个特征所对应的值为{r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11},则用户A和用户B之间的相似度大小即可通过海明距离的计算公式来衡量,具体计算的公式如(12)所示:
用户A及用户B之间的特征距离dis(A,B)对应的值,为公式(12)中用户A和用户B的特征值进行异或运算结果中1的个数,即{q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11}中所包含1的个数即为两用户间的特征距离,根据特征距离计算用户间的特征属性相似度大小,计算公式如(13)所示:
其中,Uj、Uj分别代表用户i和用户j的属性特征,simd(Ui,Uj)代表用户Ui和用户Uj的特征属性的相似度。
步骤S262:在R上通过Pearson相关系数计算us的最近邻居集Qu,Pearson相关系数计算公式如(14)所示:
其中,rui、rvi分别代表用户u和用户v对项目i的评分,分别带表用户u和用户v对项目的平均分,Iuv代表用户u和v同时评过分的项目交集,Iu和Iv分别表示用户u和用户v的评分项目集合;
最近邻居集Qu的邻居个数,即最近邻个数的选择如下所示:
作为一种可实施方式,将Movielens数据集中用户-项目评分数据划分为5组训练集和测试集,分别计算最近邻个数为{10,20,30,40,50,60}的MAE值,取5组实验结果的平均值作为实验的最终结果,最近邻个数选择如图3所示:
MAE为平均绝对偏差,是衡量预测准确度的标准,其基本思想是通过计算预测值和真实值之间的平均绝对误差来衡量推荐算法的预测结果与实际情况的偏差,MAE值越小,则预测值和真实值之间的误差越小,推荐的精度越高,平均绝对偏差MAE计算公式如(15)所示:
其中Pui代表用户u对项目i的预测评分值,Rui代表用户u对项目i的评分值,N代表项目数;
基于用户的协同过滤预测评分计算公式如(16)所示:
其中,Nu表示目标用户的最近邻居集,Sim(u,m)为目标用户u与用户m的相似度,rmi和分别为用户m对项目i的评分和对项目的平均评分;
由图3可知,MAE值随着最近邻个数的增加呈现出先减后增的趋势,当最近邻居集个数介于[0,50]时,MAE值随着最近邻个数的增大而大幅减小,当最近邻个数介于[50,60]时,MAE值随着最近邻个数的增大而小幅增大,故选择50为最近邻个数,即最近邻居集Qu的邻居个数。
步骤S263:在Qu上,对us进行Top-N推荐,并将Top-N推荐结果推荐给新用户,具体如下:
根据目标用户us的最近邻居集Qu,利用预测评分公式(16),预测目标用户对未评分项目的评分,并统计目标用户已评价项目的评分,将预测评分最高及已评价项目的评分最高的前N个项目推荐给目标用户,作为一种可实施方式,N为10。
作为一种可实施方式,按照本实施例中的方法对新用户(40,男,管理员)进行推荐,推荐结果如表2所示:
表2 推荐结果表
推荐排名 | 项目id | 项目名称 |
1 | 687 | Country Life |
2 | 1776 | Ride |
3 | 80 | Badkonake Sefid |
4 | 635 | Family Thing,A |
5 | 2230 | Always Tell Your Wife |
6 | 5 | Father of the Bride Part II |
7 | 810 | Niagara,Niagara |
8 | 1268 | Pump Up the Volume |
9 | 403 | Two Crimes |
10 | 601 | The Wooden Man's Bride |
作为一种可实施方式,选用movielens数据集,按8:2的比例分成训练集和测试集,利用数据集给出的五对训练集和测试集分别进行实验,并将相同最近邻个数下五次实验结果的MAE平均值作为此最近邻个数下最终的结果,并将解决协同过滤推荐技术中冷启动问题的传统的众数法、基于用户的协同过滤及本发明中方法进行比较,实验结果如图4所示,其中UCF为基于用户的协同过滤。
由图4可知,本发明中方法在最近邻个数10-60间有最低的MAE值,说明本发明相较传统的众数法、基于用户的协同过滤有较高推荐精度,且当最近邻个数为50时,MAE值最小,说明当最近邻个数为50时,本发明中方法的推荐质量最高。
值得说明的是,对新项目进行推荐与对新用户进行推荐的方法相类似,在此不再赘述。
实施例三:
如图5所示,本发明的一种解决协同过滤推荐技术中冷启动问题的系统,包括:
选取模块51,用于选取数据集,所述数据集包括用户-项目评分数据及用户或项目属性信息。
初始模型建立模块52,用于基于用户-项目评分数据,通过优化的遗传算法建立初始用户或项目聚类模型。
聚类模块53,用于根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型。
划分类簇模块54,用于根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇。
产生推荐模块55,用于在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐。
实施例四:
如图6所示,本发明的另一种解决协同过滤推荐技术中冷启动问题的系统,包括:
选取模块61,用于选取数据集,所述数据集包括用户-项目评分数据及用户或项目属性信息。
优化模块62,用于对遗传算法进行优化,包括:
步骤a.采用加权的轮廓系数作为种群中个体的适应度函数:
f=S (3)
其中,a(i)为样本i到同类簇其他样本的平均距离,b(i)表示样本i到其他类簇内样本平均距离的最小值,S(i)为样本i的轮廓系数,S为聚类模型的轮廓系数,n为聚类模型中样本的个数,f为种群中个体的适应度函数,f′为改进后种群中个体的适应度函数,witer为惯性权系数,iter为当前进化代数,iteravg为平均进化代数,itermax为最大进化代数,wini为最小惯性权系数,wend为最大惯性权系数;
步骤b.将算法中的交叉概率和变异概率按如下公式进行动态调整:
其中,Pc *为遗传算法自适应交叉概率,Pc1、Pc2分别为最大、最小交叉概率,Pm *为遗传算法自适应变异概率,Pm1、Pm2分别为最大、最小变异概率,f′为改进后种群中个体的适应度函数,favg为种群中个体的平均适应度函数值,fmax为个体的最大适应度函数值,Epj为种群中个体j的熵值,Eavg为种群中个体的平均熵值,Emax为种群中个体的最大熵值,k为1/logem,e为自然常数,m为聚类中样本的数量,pij为种群个体j对应的聚类中类簇i包含的对象占聚类所有样本的比例,L为种群个体j对应的聚类中类簇的个数。
初始模型建立模块63,用于基于用户-项目评分数据,通过优化的遗传算法建立初始用户或项目聚类模型。
聚类模块64,用于根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型。
划分类簇模块65,用于根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇。
产生推荐模块66,用于在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐。
所述初始模型建立模块63进一步包括:
转化模块631,用于将用户-项目评分数据转化为用户-项目评分矩阵R;
输入模块632,用于输入用户-项目评分矩阵R及当前进化代数iter;
种群初始化模块633,用于种群初始化,随机选择M个2~n1/2之间的整数,其中n为用户或项目个数,并将所述M个2~n1/2之间的整数转化为二进制数,构成种群的M条染色体,所述染色体为种群中个体;
随机聚类模块634,用于对于每一条染色体,在R上随机选取该染色体对应十进制数个元素,作为初始聚类中心,进行K-Means聚类,得到聚类模型;
第一计算模块635,用于利用公式(1)至(5)计算种群中染色体的适应度函数值;
判断模块636,用于根据适应度函数值以及当前的进化代数,判断是否达到收敛条件,即是否iter>N或|fi-fi-1|<=ε,其中,N为正整数,ε为正数,若是,则进行步骤2.11;若否,则进行下一步;
迁移替换模块637,用于保留最大适应度函数值对应的染色体,并将该染色体迁移到下一代种群中,替换最小适应度函数值对应的染色体;
选择模块638,用于采用轮盘赌策略进行染色体选择操作;
交叉模块639,用于采用Pc *进行单点交叉操作;
变异模块6310,用于采用Pm *进行变异操作,得到变异后种群的M条染色体,执行步骤2.4;
初始聚类模型生成模块6311,用于输出最大适应度函数值的染色体,并将其对应的十进制数作为聚类个数k′,进行K-Means聚类,并将对应的聚类结果作为初始用户或项目聚类模型,所述初始用户或项目聚类模型包括初始用户或项目聚类个数k′及初始聚类中心点。
所述划分类簇模块65进一步包括:
统计模块651,用于统计R中存在评分数据的用户id或项目id;
离散化模块652,用于将R中存在评分数据的用户或项目对应的用户属性信息或项目属性信息进行离散化处理,得到用户属性信息矩阵U或项目属性信息矩阵I;
第二计算模块653,用于结合用户或项目聚类模型及U或I,将新用户或新项目分别置于用户或项目聚类模型的类簇内,并计算此时类簇的熵值,计算公式如下所示:
其中,ei′为类簇c内用户或项目属性i的熵值,k为1/logem,e为自然常数,m为类簇c中样本的数量,L为用户或项目属性i划分类数,pij为类簇c内第i个用户或项目属性的第j个类别所占比例,q为用户或项目属性个数;
划分模块654,用于将新用户或新项目划分到熵值最大的类簇中。
所述产生推荐模块66进一步包括:
最近邻居计算模块661,用于在新用户或新项目所属类簇内,计算新用户或新项目与所属类簇内用户或项目的相似度,得出新用户或新项目的最近邻居us或is;
最近邻居集计算模块662,用于在R上计算us或is的最近邻居集Qu或Qi;
推荐模块663,用于在Qu或Qi上,对us进行Top-N推荐,并将Top-N推荐结果推荐给新用户,将新项目推荐给Qi中的评分值Top-N用户。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种解决协同过滤推荐技术中冷启动问题的方法,其特征在于,包括以下步骤:
步骤1:选取数据集,所述数据集包括用户-项目评分数据及用户或项目属性信息;
步骤2:基于用户-项目评分数据,通过优化的遗传算法建立初始用户或项目聚类模型;
步骤3:根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型;
步骤4:根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇;
步骤5:在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐。
2.根据权利要求1所述的一种解决协同过滤推荐技术中冷启动问题的方法,其特征在于,在所述步骤2之前还包括:
对遗传算法进行优化,包括:
步骤a.采用加权的轮廓系数作为种群中个体的适应度函数:
<mrow>
<mi>S</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mrow>
<mi>b</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mi>a</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>max</mi>
<mo>{</mo>
<mi>a</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
<mo>,</mo>
<mi>b</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
<mo>}</mo>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>S</mi>
<mo>=</mo>
<mfrac>
<mrow>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>n</mi>
</msubsup>
<mi>S</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
<mi>n</mi>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
f=S (3)
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<msup>
<mi>e</mi>
<msub>
<mi>w</mi>
<mrow>
<mi>i</mi>
<mi>t</mi>
<mi>e</mi>
<mi>r</mi>
</mrow>
</msub>
</msup>
<mi>f</mi>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>4</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>w</mi>
<mrow>
<mi>i</mi>
<mi>t</mi>
<mi>e</mi>
<mi>r</mi>
</mrow>
</msub>
<mo>=</mo>
<mfrac>
<mrow>
<mo>|</mo>
<mi>i</mi>
<mi>t</mi>
<mi>e</mi>
<mi>r</mi>
<mo>-</mo>
<msub>
<mi>iter</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
<mo>|</mo>
</mrow>
<mrow>
<msub>
<mi>iter</mi>
<mi>max</mi>
</msub>
<mo>-</mo>
<msub>
<mi>iter</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mfrac>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mrow>
<mi>i</mi>
<mi>n</mi>
<mi>i</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>w</mi>
<mrow>
<mi>e</mi>
<mi>n</mi>
<mi>d</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,a(i)为样本i到同类簇其他样本的平均距离,b(i)表示样本i到其他类簇内样本平均距离的最小值,S(i)为样本i的轮廓系数,S为聚类模型的轮廓系数,n为聚类模型中样本的个数,f为种群中个体的适应度函数,f′为改进后种群中个体的适应度函数,witer为惯性权系数,iter为当前进化代数,iteravg为平均进化代数,itermax为最大进化代数,wini为最小惯性权系数,wend为最大惯性权系数;
步骤b.将算法中的交叉概率和变异概率按如下公式进行动态调整:
<mrow>
<msup>
<msub>
<mi>P</mi>
<mi>c</mi>
</msub>
<mo>*</mo>
</msup>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>P</mi>
<mrow>
<mi>c</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<mfrac>
<mrow>
<mo>(</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>c</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>c</mi>
<mn>2</mn>
</mrow>
</msub>
<mo>)</mo>
<mo>(</mo>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>-</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mrow>
<msub>
<mi>f</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>g</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mfrac>
<msup>
<mi>e</mi>
<mfrac>
<mrow>
<msub>
<mi>E</mi>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
</msub>
<mo>-</mo>
<msub>
<mi>E</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
<msub>
<mi>E</mi>
<mi>max</mi>
</msub>
</mfrac>
</msup>
</mrow>
</mtd>
<mtd>
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>&GreaterEqual;</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>P</mi>
<mrow>
<mi>c</mi>
<mn>1</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo><</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msup>
<msub>
<mi>P</mi>
<mi>m</mi>
</msub>
<mo>*</mo>
</msup>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<mfrac>
<mrow>
<mo>(</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mn>2</mn>
</mrow>
</msub>
<mo>)</mo>
<mo>(</mo>
<msub>
<mi>f</mi>
<mi>max</mi>
</msub>
<mo>-</mo>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
<mrow>
<msub>
<mi>f</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>g</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mfrac>
<msup>
<mi>e</mi>
<mfrac>
<mrow>
<msub>
<mi>E</mi>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
</msub>
<mo>-</mo>
<msub>
<mi>E</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
<msub>
<mi>E</mi>
<mi>max</mi>
</msub>
</mfrac>
</msup>
</mrow>
</mtd>
<mtd>
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>&GreaterEqual;</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mn>1</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo><</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>E</mi>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
</msub>
<mo>=</mo>
<mo>-</mo>
<msubsup>
<mi>k&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>L</mi>
</msubsup>
<msub>
<mi>p</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<msub>
<mi>log</mi>
<mn>2</mn>
</msub>
<msub>
<mi>p</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,Pc *为遗传算法自适应交叉概率,Pc1、Pc2分别为最大、最小交叉概率,Pm *为遗传算法自适应变异概率,Pm1、Pm2分别为最大、最小变异概率,f′为改进后种群中个体的适应度函数,favg为种群中个体的平均适应度函数值,fmax为个体的最大适应度函数值,Epj为种群中个体j的熵值,Eavg为种群中个体的平均熵值,Emax为种群中个体的最大熵值,k为1/logem,e为自然常数,m为聚类中样本的数量,pij为种群个体j对应的聚类中类簇i包含的对象占聚类所有样本的比例,L为种群个体j对应的聚类中类簇的个数。
3.根据权利要求2所述的一种解决协同过滤推荐技术中冷启动问题的方法,其特征在于,所述步骤2包括:
步骤2.1:将用户-项目评分数据转化为用户-项目评分矩阵R;
步骤2.2:输入用户-项目评分矩阵R及当前进化代数iter;
步骤2.3:种群初始化,随机选择M个2~n1/2之间的整数,其中n为用户或项目个数,并将所述M个2~n1/2之间的整数进行二进制编码、转化为二进制数,构成种群的M条染色体,所述染色体为种群中个体;
步骤2.4:对于每一条染色体,在R上随机选取该染色体对应十进制数个元素,作为初始聚类中心,进行K-Means聚类,得到聚类模型;
步骤2.5:利用公式(1)至(5)计算种群中染色体的适应度函数值;
步骤2.6:根据适应度函数值以及当前的进化代数,判断是否达到收敛条件,即是否iter>N或|fi-fi-1|<=ε,其中,N为正整数,ε为正数,若是,则进行步骤2.11;若否,则进行下一步;
步骤2.7:保留最大适应度函数值对应的染色体,并将该染色体迁移到下一代种群中,替换最小适应度函数值对应的染色体;
步骤2.8:采用轮盘赌策略进行染色体选择操作;
步骤2.9:采用Pc *进行单点交叉操作;
步骤2.10:采用Pm *进行变异操作,得到变异后种群的M条染色体,执行步骤2.4;
步骤2.11:输出最大适应度函数值的染色体,并将其对应的十进制数作为聚类个数k′,进行K-Means聚类,并将对应的聚类结果作为初始用户或项目聚类模型,所述初始用户或项目聚类模型包括初始用户或项目聚类个数k′及初始聚类中心点。
4.根据权利要求3所述的一种解决协同过滤推荐技术中冷启动问题的方法,其特征在于,所述步骤4包括:
步骤4.1:统计R中存在评分数据的用户id或项目id;
步骤4.2:将R中存在评分数据的用户或项目对应的用户属性信息或项目属性信息进行离散化处理,得到用户属性信息矩阵U或项目属性信息矩阵I;
步骤4.3:结合用户或项目聚类模型及U或I,将新用户或新项目分别置于用户或项目聚类模型的类簇内,并计算此时类簇的熵值,计算公式如下所示:
<mrow>
<msup>
<msub>
<mi>e</mi>
<mi>i</mi>
</msub>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mo>-</mo>
<msubsup>
<mi>k&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>L</mi>
</msubsup>
<msub>
<mi>p</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<msub>
<mi>log</mi>
<mn>2</mn>
</msub>
<msub>
<mi>p</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>E</mi>
<mi>c</mi>
</msub>
<mo>=</mo>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>q</mi>
</msubsup>
<msup>
<msub>
<mi>e</mi>
<mi>i</mi>
</msub>
<mo>&prime;</mo>
</msup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>10</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,ei′为类簇c内用户或项目属性i的熵值,k为1/logem,e为自然常数,m为类簇c中样本的数量,L为用户或项目属性i划分类数,pij为类簇c内第i个用户或项目属性的第j个类别所占比例,q为用户或项目属性个数;
步骤4.4:将新用户或新项目划分到熵值最大的类簇中。
5.根据权利要求1或4所述的一种解决协同过滤推荐技术中冷启动问题的方法,其特征在于,所述步骤5包括:
步骤5.1:在新用户或新项目所属类簇内,计算新用户或新项目与所属类簇内用户或项目的相似度,得出新用户或新项目的最近邻居us或is;
步骤5.2:在R上计算us或is的最近邻居集Qu或Qi;
步骤5.3:在Qu或Qi上,对us进行Top-N推荐,并将Top-N推荐结果推荐给新用户,将新项目推荐给Qi中的评分值Top-N用户。
6.基于权利要求1-5所述的一种解决协同过滤推荐技术中冷启动问题的方法的一种解决协同过滤推荐技术中冷启动问题的系统,其特征在于,包括:
选取模块,用于选取数据集,所述数据集包括用户-项目评分数据及用户或项目属性信息;初始模型建立模块,用于基于用户-项目评分数据,通过优化的遗传算法建立初始用户或项目聚类模型;
聚类模块,用于根据初始用户或项目聚类模型,对用户-项目评分数据进行K-Means聚类,得到用户或项目聚类模型;
划分类簇模块,用于根据新用户或新项目的属性信息及用户或项目属性信息,计算新用户或新项目划分到用户或项目聚类模型各类簇的熵值,根据得出的熵值将新用户或新项目划分到所属类簇;
产生推荐模块,用于在新用户或新项目所属类簇中,查找新用户或新项目的最近邻居,对新用户或新项目的最近邻居进行推荐,并将推荐结果作为对新用户或新项目的推荐。
7.根据权利要求6所述的一种解决协同过滤推荐技术中冷启动问题的系统,其特征在于,还包括:
优化模块,用于对遗传算法进行优化,包括:
步骤a.采用加权的轮廓系数作为种群中个体的适应度函数:
<mrow>
<mi>S</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mrow>
<mi>b</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mi>a</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>max</mi>
<mo>{</mo>
<mi>a</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
<mo>,</mo>
<mi>b</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
<mo>}</mo>
</mrow>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>S</mi>
<mo>=</mo>
<mfrac>
<mrow>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>n</mi>
</msubsup>
<mi>S</mi>
<mrow>
<mo>(</mo>
<mi>i</mi>
<mo>)</mo>
</mrow>
</mrow>
<mi>n</mi>
</mfrac>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
f=S (3)
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<msup>
<mi>e</mi>
<msub>
<mi>w</mi>
<mrow>
<mi>i</mi>
<mi>t</mi>
<mi>e</mi>
<mi>r</mi>
</mrow>
</msub>
</msup>
<mi>f</mi>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>4</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>w</mi>
<mrow>
<mi>i</mi>
<mi>t</mi>
<mi>e</mi>
<mi>r</mi>
</mrow>
</msub>
<mo>=</mo>
<mfrac>
<mrow>
<mo>|</mo>
<mi>i</mi>
<mi>t</mi>
<mi>e</mi>
<mi>r</mi>
<mo>-</mo>
<msub>
<mi>iter</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
<mo>|</mo>
</mrow>
<mrow>
<msub>
<mi>iter</mi>
<mi>max</mi>
</msub>
<mo>-</mo>
<msub>
<mi>iter</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mfrac>
<mrow>
<mo>(</mo>
<msub>
<mi>w</mi>
<mrow>
<mi>i</mi>
<mi>n</mi>
<mi>i</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>w</mi>
<mrow>
<mi>e</mi>
<mi>n</mi>
<mi>d</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>5</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,a(i)为样本i到同类簇其他样本的平均距离,b(i)表示样本i到其他类簇内样本平均距离的最小值,S(i)为样本i的轮廓系数,S为聚类模型的轮廓系数,n为聚类模型中样本的个数,f为种群中个体的适应度函数,f′为改进后种群中个体的适应度函数,witer为惯性权系数,iter为当前进化代数,iteravg为平均进化代数,itermax为最大进化代数,wini为最小惯性权系数,wend为最大惯性权系数;
步骤b.将算法中的交叉概率和变异概率按如下公式进行动态调整:
<mrow>
<msup>
<msub>
<mi>P</mi>
<mi>c</mi>
</msub>
<mo>*</mo>
</msup>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>P</mi>
<mrow>
<mi>c</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<mfrac>
<mrow>
<mo>(</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>c</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>c</mi>
<mn>2</mn>
</mrow>
</msub>
<mo>)</mo>
<mo>(</mo>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>-</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mrow>
<msub>
<mi>f</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>g</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mfrac>
<msup>
<mi>e</mi>
<mfrac>
<mrow>
<msub>
<mi>E</mi>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
</msub>
<mo>-</mo>
<msub>
<mi>E</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
<msub>
<mi>E</mi>
<mi>max</mi>
</msub>
</mfrac>
</msup>
</mrow>
</mtd>
<mtd>
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>&GreaterEqual;</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>P</mi>
<mrow>
<mi>c</mi>
<mn>1</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo><</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>6</mn>
<mo>)</mo>
</mrow>
</mrow>
3
<mrow>
<msup>
<msub>
<mi>P</mi>
<mi>m</mi>
</msub>
<mo>*</mo>
</msup>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<mfrac>
<mrow>
<mo>(</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mn>2</mn>
</mrow>
</msub>
<mo>)</mo>
<mo>(</mo>
<msub>
<mi>f</mi>
<mi>max</mi>
</msub>
<mo>-</mo>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>)</mo>
</mrow>
<mrow>
<msub>
<mi>f</mi>
<mrow>
<mi>m</mi>
<mi>a</mi>
<mi>g</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mfrac>
<msup>
<mi>e</mi>
<mfrac>
<mrow>
<msub>
<mi>E</mi>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
</msub>
<mo>-</mo>
<msub>
<mi>E</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
<msub>
<mi>E</mi>
<mi>max</mi>
</msub>
</mfrac>
</msup>
</mrow>
</mtd>
<mtd>
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo>&GreaterEqual;</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mn>1</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mrow>
<msup>
<mi>f</mi>
<mo>&prime;</mo>
</msup>
<mo><</mo>
<msub>
<mi>f</mi>
<mrow>
<mi>a</mi>
<mi>v</mi>
<mi>g</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>7</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>E</mi>
<msub>
<mi>p</mi>
<mi>j</mi>
</msub>
</msub>
<mo>=</mo>
<mo>-</mo>
<msubsup>
<mi>k&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>L</mi>
</msubsup>
<msub>
<mi>p</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<msub>
<mi>log</mi>
<mn>2</mn>
</msub>
<msub>
<mi>p</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>8</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,Pc *为遗传算法自适应交叉概率,Pc1、Pc2分别为最大、最小交叉概率,Pm *为遗传算法自适应变异概率,Pm1、Pm2分别为最大、最小变异概率,f′为改进后种群中个体的适应度函数,favg为种群中个体的平均适应度函数值,fmax为个体的最大适应度函数值,Epj为种群中个体j的熵值,Eavg为种群中个体的平均熵值,Emax为种群中个体的最大熵值,k为1/logem,e为自然常数,m为聚类中样本的数量,pij为种群个体j对应的聚类中类簇i包含的对象占聚类所有样本的比例,L为种群个体j对应的聚类中类簇的个数。
8.根据权利要求6所述的一种解决协同过滤推荐技术中冷启动问题的系统,其特征在于,所述初始模型建立模块进一步包括:
转化模块,用于将用户-项目评分数据转化为用户-项目评分矩阵R;
输入模块,用于输入用户-项目评分矩阵R及当前进化代数iter;
种群初始化模块,用于种群初始化,随机选择M个2~n1/2之间的整数,其中n为用户或项目个数,并将所述M个2~n1/2之间的整数进行二进制编码、转化为二进制数,构成种群的M条染色体,所述染色体为种群中个体;
随机聚类模块,用于对于每一条染色体,在R上随机选取该染色体对应十进制数个元素,作为初始聚类中心,进行K-Means聚类,得到聚类模型;
第一计算模块,用于利用公式(1)至(5)计算种群中染色体的适应度函数值;
判断模块,用于根据适应度函数值以及当前的进化代数,判断是否达到收敛条件,即是否iter>N或|fi-fi-1|<=ε,其中,N为正整数,ε为正数,若是,则进行步骤2.11;若否,则进行下一步;
迁移替换模块,用于保留最大适应度函数值对应的染色体,并将该染色体迁移到下一代种群中,替换最小适应度函数值对应的染色体;
选择模块,用于采用轮盘赌策略进行染色体选择操作;
交叉模块,用于采用Pc *进行单点交叉操作;
变异模块,用于采用Pm *进行变异操作,得到变异后种群的M条染色体,执行步骤2.4;
初始聚类模型生成模块,用于输出最大适应度函数值的染色体,并将其对应的十进制数作为聚类个数k′,进行K-Means聚类,并将对应的聚类结果作为初始用户或项目聚类模型,所述初始用户或项目聚类模型包括初始用户或项目聚类个数k′及初始聚类中心点。
9.根据权利要求6所述的一种解决协同过滤推荐技术中冷启动问题的系统,其特征在于,所述划分类簇模块进一步包括:
统计模块,用于统计R中存在评分数据的用户id或项目id;
离散化模块,用于将R中存在评分数据的用户或项目对应的用户属性信息或项目属性信息进行离散化处理,得到用户属性信息矩阵U或项目属性信息矩阵I;
第二计算模块,用于结合用户或项目聚类模型及U或I,将新用户或新项目分别置于用户或项目聚类模型的类簇内,并计算此时类簇的熵值,计算公式如下所示:
<mrow>
<msup>
<msub>
<mi>e</mi>
<mi>i</mi>
</msub>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mo>-</mo>
<msubsup>
<mi>k&Sigma;</mi>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>L</mi>
</msubsup>
<msub>
<mi>p</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<msub>
<mi>log</mi>
<mn>2</mn>
</msub>
<msub>
<mi>p</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>9</mn>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>E</mi>
<mi>c</mi>
</msub>
<mo>=</mo>
<msubsup>
<mi>&Sigma;</mi>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>q</mi>
</msubsup>
<msup>
<msub>
<mi>e</mi>
<mi>i</mi>
</msub>
<mo>&prime;</mo>
</msup>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>10</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,ei′为类簇c内用户或项目属性i的熵值,k为1/logem,e为自然常数,m为类簇c中样本的数量,L为用户或项目属性i划分类数,pij为类簇c内第i个用户或项目属性的第j个类别所占比例,q为用户或项目属性个数;
划分模块,用于将新用户或新项目划分到熵值最大的类簇中。
10.根据权利要求6所述的一种解决协同过滤推荐技术中冷启动问题的系统,其特征在于,所述产生推荐模块进一步包括:
最近邻居计算模块,用于在新用户或新项目所属类簇内,计算新用户或新项目与所属类簇内用户或项目的相似度,得出新用户或新项目的最近邻居us或is;
最近邻居集计算模块,用于在R上计算us或is的最近邻居集Qu或Qi;
推荐模块,用于在Qu或Qi上,对us进行Top-N推荐,并将Top-N推荐结果推荐给新用户,将新项目推荐给Qi中的评分值Top-N用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710634135.7A CN107391713B (zh) | 2017-07-29 | 2017-07-29 | 一种解决协同过滤推荐技术中冷启动问题的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710634135.7A CN107391713B (zh) | 2017-07-29 | 2017-07-29 | 一种解决协同过滤推荐技术中冷启动问题的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391713A true CN107391713A (zh) | 2017-11-24 |
CN107391713B CN107391713B (zh) | 2020-04-28 |
Family
ID=60342158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710634135.7A Active CN107391713B (zh) | 2017-07-29 | 2017-07-29 | 一种解决协同过滤推荐技术中冷启动问题的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391713B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108198045A (zh) * | 2018-01-30 | 2018-06-22 | 东华大学 | 基于电子商务网站数据挖掘的混合推荐系统的设计方法 |
CN108415987A (zh) * | 2018-02-12 | 2018-08-17 | 大连理工大学 | 一种电影推荐的冷启动解决方法 |
CN108595595A (zh) * | 2018-04-19 | 2018-09-28 | 北京理工大学 | 一种基于交互式差分进化计算的用户知识需求获取方法 |
CN108614591A (zh) * | 2018-04-27 | 2018-10-02 | 宁波工程学院 | 一种卷绕张力控制系统辨识方法 |
CN108776919A (zh) * | 2018-05-31 | 2018-11-09 | 西安电子科技大学 | 基于聚类及进化算法构建信息核的物品推荐方法 |
CN108805199A (zh) * | 2018-06-08 | 2018-11-13 | 电子科技大学成都学院 | 一种基于遗传算法的实体商业营销方法 |
CN108804517A (zh) * | 2018-04-26 | 2018-11-13 | 北京五八信息技术有限公司 | 冷启动方法、装置、计算设备及计算机可读存储介质 |
CN108804605A (zh) * | 2018-05-29 | 2018-11-13 | 重庆大学 | 一种基于层次结构的推荐方法 |
CN109063052A (zh) * | 2018-07-19 | 2018-12-21 | 北京物资学院 | 一种基于时间熵的个性化推荐方法及装置 |
CN109214772A (zh) * | 2018-08-07 | 2019-01-15 | 平安科技(深圳)有限公司 | 项目推荐方法、装置、计算机设备及存储介质 |
CN110070134A (zh) * | 2019-04-25 | 2019-07-30 | 厦门快商通信息咨询有限公司 | 一种基于用户兴趣感知的推荐方法及装置 |
CN110083764A (zh) * | 2019-04-11 | 2019-08-02 | 东华大学 | 一种协同过滤算法冷启动问题的解决方法 |
CN110209938A (zh) * | 2019-05-31 | 2019-09-06 | 河南大学 | 一种基于服务多粒度属性的潜在用户推荐方法 |
CN110609943A (zh) * | 2018-05-28 | 2019-12-24 | 九阳股份有限公司 | 一种智能设备的主动交互方法及服务机器人 |
CN110766206A (zh) * | 2019-09-29 | 2020-02-07 | 东软睿驰汽车技术(沈阳)有限公司 | 一种信息预测方法及装置 |
CN111353094A (zh) * | 2018-12-20 | 2020-06-30 | 北京嘀嘀无限科技发展有限公司 | 一种信息推送方法及装置 |
CN112163093A (zh) * | 2020-10-13 | 2021-01-01 | 杭州电子科技大学 | 基于特征值的电力居民app多题型问卷得分分类方法 |
CN112307332A (zh) * | 2020-10-16 | 2021-02-02 | 四川大学 | 基于用户画像聚类的协同过滤推荐方法、系统及存储介质 |
CN113160998A (zh) * | 2021-03-30 | 2021-07-23 | 西安理工大学 | 一种基于差分进化算法的减肥运动处方生成方法 |
CN114638443A (zh) * | 2022-05-19 | 2022-06-17 | 安徽数智建造研究院有限公司 | 一种基于改进遗传算法的施工设备智能选型及调配方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763351A (zh) * | 2008-12-23 | 2010-06-30 | 未序网络科技(上海)有限公司 | 基于数据融合的视频节目推荐方法 |
US20140172501A1 (en) * | 2010-08-18 | 2014-06-19 | Jinni Media Ltd. | System Apparatus Circuit Method and Associated Computer Executable Code for Hybrid Content Recommendation |
CN103971161A (zh) * | 2014-05-09 | 2014-08-06 | 哈尔滨工程大学 | 基于柯西分布量子粒子群的混合推荐方法 |
CN104867164A (zh) * | 2015-04-29 | 2015-08-26 | 中国科学院上海微系统与信息技术研究所 | 一种基于遗传算法的矢量量化码书设计方法 |
CN106897999A (zh) * | 2017-02-27 | 2017-06-27 | 江南大学 | 基于尺度不变特征变换的苹果图像融合方法 |
-
2017
- 2017-07-29 CN CN201710634135.7A patent/CN107391713B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763351A (zh) * | 2008-12-23 | 2010-06-30 | 未序网络科技(上海)有限公司 | 基于数据融合的视频节目推荐方法 |
US20140172501A1 (en) * | 2010-08-18 | 2014-06-19 | Jinni Media Ltd. | System Apparatus Circuit Method and Associated Computer Executable Code for Hybrid Content Recommendation |
CN103971161A (zh) * | 2014-05-09 | 2014-08-06 | 哈尔滨工程大学 | 基于柯西分布量子粒子群的混合推荐方法 |
CN104867164A (zh) * | 2015-04-29 | 2015-08-26 | 中国科学院上海微系统与信息技术研究所 | 一种基于遗传算法的矢量量化码书设计方法 |
CN106897999A (zh) * | 2017-02-27 | 2017-06-27 | 江南大学 | 基于尺度不变特征变换的苹果图像融合方法 |
Non-Patent Citations (1)
Title |
---|
杜晓娟: "云计算下基于混合算法的协同过滤推荐技术优化研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108198045A (zh) * | 2018-01-30 | 2018-06-22 | 东华大学 | 基于电子商务网站数据挖掘的混合推荐系统的设计方法 |
CN108415987A (zh) * | 2018-02-12 | 2018-08-17 | 大连理工大学 | 一种电影推荐的冷启动解决方法 |
CN108595595A (zh) * | 2018-04-19 | 2018-09-28 | 北京理工大学 | 一种基于交互式差分进化计算的用户知识需求获取方法 |
CN108595595B (zh) * | 2018-04-19 | 2020-06-16 | 北京理工大学 | 一种基于交互式差分进化计算的用户知识需求获取方法 |
CN108804517B (zh) * | 2018-04-26 | 2022-05-31 | 北京五八信息技术有限公司 | 冷启动方法、装置、计算设备及计算机可读存储介质 |
CN108804517A (zh) * | 2018-04-26 | 2018-11-13 | 北京五八信息技术有限公司 | 冷启动方法、装置、计算设备及计算机可读存储介质 |
CN108614591A (zh) * | 2018-04-27 | 2018-10-02 | 宁波工程学院 | 一种卷绕张力控制系统辨识方法 |
CN110609943A (zh) * | 2018-05-28 | 2019-12-24 | 九阳股份有限公司 | 一种智能设备的主动交互方法及服务机器人 |
CN108804605A (zh) * | 2018-05-29 | 2018-11-13 | 重庆大学 | 一种基于层次结构的推荐方法 |
CN108804605B (zh) * | 2018-05-29 | 2021-10-22 | 重庆大学 | 一种基于层次结构的推荐方法 |
CN108776919A (zh) * | 2018-05-31 | 2018-11-09 | 西安电子科技大学 | 基于聚类及进化算法构建信息核的物品推荐方法 |
CN108776919B (zh) * | 2018-05-31 | 2021-07-20 | 西安电子科技大学 | 基于聚类及进化算法构建信息核的物品推荐方法 |
CN108805199B (zh) * | 2018-06-08 | 2021-10-22 | 电子科技大学成都学院 | 一种基于遗传算法的实体商业营销方法 |
CN108805199A (zh) * | 2018-06-08 | 2018-11-13 | 电子科技大学成都学院 | 一种基于遗传算法的实体商业营销方法 |
CN109063052A (zh) * | 2018-07-19 | 2018-12-21 | 北京物资学院 | 一种基于时间熵的个性化推荐方法及装置 |
CN109214772B (zh) * | 2018-08-07 | 2024-01-16 | 平安科技(深圳)有限公司 | 项目推荐方法、装置、计算机设备及存储介质 |
CN109214772A (zh) * | 2018-08-07 | 2019-01-15 | 平安科技(深圳)有限公司 | 项目推荐方法、装置、计算机设备及存储介质 |
CN111353094A (zh) * | 2018-12-20 | 2020-06-30 | 北京嘀嘀无限科技发展有限公司 | 一种信息推送方法及装置 |
CN110083764A (zh) * | 2019-04-11 | 2019-08-02 | 东华大学 | 一种协同过滤算法冷启动问题的解决方法 |
CN110070134A (zh) * | 2019-04-25 | 2019-07-30 | 厦门快商通信息咨询有限公司 | 一种基于用户兴趣感知的推荐方法及装置 |
CN110209938A (zh) * | 2019-05-31 | 2019-09-06 | 河南大学 | 一种基于服务多粒度属性的潜在用户推荐方法 |
CN110209938B (zh) * | 2019-05-31 | 2022-10-25 | 河南大学 | 一种基于服务多粒度属性的潜在用户推荐方法 |
CN110766206A (zh) * | 2019-09-29 | 2020-02-07 | 东软睿驰汽车技术(沈阳)有限公司 | 一种信息预测方法及装置 |
CN112163093A (zh) * | 2020-10-13 | 2021-01-01 | 杭州电子科技大学 | 基于特征值的电力居民app多题型问卷得分分类方法 |
CN112307332A (zh) * | 2020-10-16 | 2021-02-02 | 四川大学 | 基于用户画像聚类的协同过滤推荐方法、系统及存储介质 |
CN113160998A (zh) * | 2021-03-30 | 2021-07-23 | 西安理工大学 | 一种基于差分进化算法的减肥运动处方生成方法 |
CN113160998B (zh) * | 2021-03-30 | 2023-11-14 | 西安理工大学 | 一种基于差分进化算法的减肥运动处方生成方法 |
CN114638443A (zh) * | 2022-05-19 | 2022-06-17 | 安徽数智建造研究院有限公司 | 一种基于改进遗传算法的施工设备智能选型及调配方法 |
CN114638443B (zh) * | 2022-05-19 | 2022-08-23 | 安徽数智建造研究院有限公司 | 一种基于改进遗传算法的施工设备智能选型及调配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107391713B (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391713A (zh) | 一种解决协同过滤推荐技术中冷启动问题的方法及系统 | |
CN101685458B (zh) | 一种基于协同过滤的推荐方法和系统 | |
Mampaey et al. | Summarizing data succinctly with the most informative itemsets | |
CN107256238B (zh) | 一种多约束条件下的个性化信息推荐方法及信息推荐系统 | |
CN105975488A (zh) | 一种关系数据库中基于主题类簇单元的关键词查询方法 | |
CN107526975A (zh) | 一种基于差分隐私保护决策树的方法 | |
CN107391582A (zh) | 基于上下文本体树计算用户偏好相似度的信息推荐方法 | |
CN107256241A (zh) | 基于网格与差异替换改进多目标遗传算法的电影推荐方法 | |
CN106846029B (zh) | 基于遗传算法和新型相似度计算策略的协同过滤推荐算法 | |
CN109977299A (zh) | 一种融合项目热度和专家系数的推荐算法 | |
CN108776919A (zh) | 基于聚类及进化算法构建信息核的物品推荐方法 | |
Hilderman et al. | Measuring the interestingness of discovered knowledge: A principled approach | |
CN103310027B (zh) | 用于地图模板匹配的规则提取方法 | |
CN113342994B (zh) | 一种基于无采样协作知识图网络的推荐系统 | |
CN111612583B (zh) | 一种基于聚类的个性化导购系统 | |
CN108287868B (zh) | 一种数据库查询、数据块划分方法和装置 | |
CN117034046A (zh) | 一种基于isodata聚类的柔性负荷可调潜力评估方法 | |
Cui et al. | An improved method for K-means clustering | |
CN105678430A (zh) | 基于邻近项目Slope One算法的用户改进推荐方法 | |
Chen et al. | PurTreeClust: A purchase tree clustering algorithm for large-scale customer transaction data | |
CN108388911A (zh) | 一种面向混合属性的移动用户动态模糊聚类方法 | |
CN115206450A (zh) | 一种合成路线推荐方法及终端 | |
CN108256058A (zh) | 一种基于微型计算平台的实时响应大媒体近邻检索方法 | |
CN111127184B (zh) | 一种分布式组合信用评估方法 | |
Seo et al. | Block-wise variable selection for clustering via latent states of mixture models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |