著录项信息
专利名称 | 基于物品分类和用户分类的协同过滤推荐方法 |
申请号 | CN201210030236.0 | 申请日期 | 2012-02-10 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-07-25 | 公开/公告号 | CN102609523A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 上海视畅信息科技有限公司 | 申请人地址 | 上海市松江区永丰街道玉树路269号5号楼3320室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 上海视畅信息科技有限公司 | 当前权利人 | 上海视畅信息科技有限公司 |
发明人 | 施荣杰;王守军 |
代理机构 | 上海愉腾专利代理事务所(普通合伙) | 代理人 | 唐海波 |
摘要
本发明涉及一种协同过滤算法,具体地说是一种基于物品分类和用户分类的协同过滤推荐算法,其特征在于采用如下步骤:A、物品的聚类与分类步骤;B、用户的聚类与分类步骤;C、物品聚类与用户聚类的融合步骤;D、排序推荐步骤。本发明同现有技术相比,用改进的KMEANS算法完成数据的聚类,方法简单,增加了可扩展性,同时解决了稀疏性问题、冷启动问题。
1.一种基于物品分类和用户分类的协同过滤推荐方法,其特征在于采用如下步骤:
A、物品的聚类与分类步骤:
首先,采用PCA分析方法鉴别物品的主要特征,即对整个物品集合所成的特征空间进行主轴定位,并得到PCA空间映射矩阵;
其次,采用KMEANS算法完成数据的聚类,即对每个物品都定义一个特征向量,该特征向量涵盖了物品的主要特征标签,通过余弦距离度量公式计算每两个物品之间的相似度,其公式如下:
其中,V1,V2表示物品的特征向量:V1=(v11,v12,...,v1n),V2=(v21,v22,...,v2n);根据应用的不同,给每个特征项赋予一定的权重以表示该特征的重要程度,即:V1=(v11,w11;v12,w12;...;v1n,w1n),V2=(v21,w21;v22,w22;...;v2n,w2n);
最后,在完成对物品的聚类后,记录每个类的类中心,当有新的物品加入时即可在PCA空间进行距离计算,把新物品分类到离它最近的类中心所代表的那个类别;
B、用户的聚类与分类步骤:当系统积累的用户数据量足够时,即可根据用户的类别消费特征向量来为用户进行聚类和分类,其过程和上述物品的聚类与分类步骤是一样的;
C、物品聚类与用户聚类的融合步骤:每个物品有了分类信息后,用户对物品的消费记录就可以转化为对类别的消费记录,从而使得用户消费特征的维度与类别的总数一致;
D、排序推荐步骤:按照类内按相似度排序来进行推荐,或者按照用户的消费历史根据类别排序后再按比例进行相关类内物品排序来进行推荐,或者按照用户的类别来进行推荐,把同类其他用户的消费物品推荐给该用户;
在步骤A中,所述的PCA分析方法为主成分分析算法,即Principal
ComponentAnalysis,其为降维统计方法,通过正交变换,将分量相关的原表征向量转化成分量不相关的新表征向量,其方法如下:
定义物品的加权特征向量为V=(v1,w1;v2,w2;...;vK,wK)T,其具备K个维度;现在取出n个物品:Vi=(vi1,wi1;vi2,wi2;...;viK,wiK)T,其中1≤i≤n;
定义矩阵:
计算物品在每个维度即属性上的均值:
计算每个物品离开均值的距离,该距离相当于坐标轴原点平移: 这里的I=
(1,...,1)是一个长度为n列的行向量;
计算这n个物品的协方差矩阵:
计算矩阵C的特征向量和特征值:A-1CA=D,其中,D表示C的特征值对角阵;
A表示C的特征向量矩阵;
对D和A按降序排列其中的特征值和特征向量,特征值的大小表征了主轴轴向上的物品属性的分离度,选取其中的前L个特征值和对应的特征向量:0≤L≤K,满足:
对应的,选取A的前L个特征向量:B=[Ai1,Ai2,...,AiL],其中,Aik(1≤k≤L)表示特征向量矩阵的某一列;
对于任何一个新到的样本,通过下面的公式计算其在给定PCA空间中的新坐标,即新特征向量:Vn+1=BT(vn+1,1,wn+1,1;vn+1,2,wn+1,2;...;vn+1,K,wn+1,K)T。
2.根据权利要求1所述的基于物品分类和用户分类的协同过滤推荐方法,其特征在于:
在步骤A中,在度量相似度时给特征赋予不同权重,特征的权重根据各个特征在分类中的作用设定,即根据鉴别的主要特征设定。
3.根据权利要求1-2中任一项所述的基于物品分类和用户分类的协同过滤推荐方法,其特征在于,在步骤A中,所述的KMEANS算法为K均值算法,其方法如下:
定义一组物品集合(x1,x2,...,xn),其中每个物品都通过一个D维的特征描述向量来表征,将这n个物品聚类成k个不同的类别,其中k≤n,C={C1,C2,...,Ck},并最小化类内数据与类均值之间差值的平方和: 其中,μi是数据类Si的均值,对差
值的定义为余弦距离: 其中,xj表示物品j的特征描
述向量,μi表示类别i的类中心,即所有属于类别i的物品的特征描述向量的均值,n表示特征描述向量的维度;
定义一组初始均值μ={μ1,μ2,...,μk},算法反复迭代下述两个步骤直到收敛为止:(1)物品归类步骤:将每个物品归类到距离其最近的均值所在的类别:
(2)更新物品类均值步骤: 定义收敛的条
件为:k个类中的物品不再发生变化。
基于物品分类和用户分类的协同过滤推荐方法\n技术领域\n[0001] 本发明涉及一种协同过滤算法,具体地说是一种基于物品分类和用户分类的协同过滤推荐算法。\n背景技术\n[0002] 当今社会,网络信息浩如烟海,且每年都会有大量的新作加入,观众如何寻找到自己喜爱的信息呢?当前,搜索引擎是用户查找信息的重要手段之一,但这并不是问题的答案。因为搜索引擎存在下述致命缺点:1.传统的搜索算法为所有用户呈现完全一样的搜索排序结果、无法针对不同用户的个性化特征提供相应的服务;2.针对一个搜索关键字,搜索引擎会返回数以万计的信息条目,而这其中仅仅极少一部分才是用户真正需要或感兴趣的;3.搜索的前提是用户知道他/她需要什么,如果连用户自己都不知道自己能得到什么或想要得到什么的时候,搜索就无能为力了。\n[0003] 目前的解决方法是引入智能推荐算法及系统,通过推荐的方法来帮助用户发现自己需要/喜欢的个性化内容。近年来个性化推荐的研究与应用发展迅猛,这源于Web2.0技术的成熟使得用户从被动的网络信息浏览者进化为网络交互的主动参与者。准确、高效的推荐系统可以挖掘用户潜在的消费倾向,为众多的用户提供个性化服务。在当今日趋激烈的竞争环境下,个性化推荐系统已经不仅仅是一种商业营销手段,更重要的是可以增进用户的黏着性。个性化推荐系统已经为电子商务等领域带来巨大的商业利益。目前的推荐算法有基于内容的过滤推荐、协同过滤推荐算法、基于人口统计学的推荐算法、基于知识的推荐算法以及混合推荐算法,其中协同过滤算法是目前应用最为成功的推荐算法之\n[0004] 目前协同过滤推荐算法主要分为两类:1.基于用户的协同过滤算法:用户对物品的评分比较相似,则他们对其他物品的评分也比较相似,从而找到具有相似兴趣的最近邻,形成推荐;2.基于物品的协同过滤算法根据用户对不同物品评分的相似性来估计该用户对某个物品的评分,以此进行推荐。协同过滤算法主要不足有三个方面:一是稀疏性问题,即当推荐系统中数据量很大而用户的显式评分数据又很少时,难以计算相似性,而无法推荐;\n二是冷启动问题,当新物品刚进入系统时,没有用户对其评价,造成协同过滤无法推荐该资源。三是可扩展性问题,推荐系统中的用户和资源会随时间快速的增长,而协同过滤算法的复杂度和数据量呈线性关系增长,严重影响了执行效率,从而导致可扩展性较差。\n发明内容\n[0005] 本发明的目的是克服现有技术的不足,提供是一种同时基于物品和用户的协同过滤推荐算法,能解决一般协同过滤算法中存在的稀疏性问题、冷启动问题以及可扩展性问题。\n[0006] 为了达到上述目的,本发明设计了一种基于物品分类和用户分类的协同过滤推荐算法,其特征在于采用如下步骤:\n[0007] A、物品的聚类与分类步骤:\n[0008] 首先,采用PCA分析方法鉴别物品的主要特征,即对整个物品集合所张成的特征空间进行主轴定位,并得到PCA空间映射矩阵;\n[0009] 其次,采用KMEANS算法完成数据的聚类,即对每个物品都定义一个特征向量,该特征向量涵盖了物品的上述主要特征标签,通过余弦距离度量公式计算每两个物品之间的相似度,其公式如下:\n[0010]\n[0011] 其中,V1,V2表示物品的特征向量:V1=(v11,v12,...,v1n),Vs=(v21,v22,...,v2n);\n[0012] 根据应用的不同,给每个特征项赋予一定的权重以表示该特征的重要程度,即:V1=(v11,w11;v12,w12;...;v1n,w1n),Vs=(v21,w21;v22,w22;...;v2nw2n);\n[0013] 最后,在完成对物品的聚类后,记录每个类的类中心,当有新的物品加入时即可在PCA空间进行距离计算,把新物品分类到离它最近的类中心所代表的那个类别;\n[0014] B、用户的聚类与分类步骤:当系统积累的用户数据量足够时,即可根据用户的类别消费特征向量来为用户进行聚类和分类,其过程和上述物品的聚类与分类步骤是一样的;\n[0015] C、物品聚类与用户聚类的融合步骤:每个物品有了分类信息后,用户对物品的消费记录就可以转化为对类别的消费记录,从而使得用户消费特征的维度与类别的总数一致;\n[0016] D、排序推荐步骤:按照类内按相似度排序来进行推荐,或者按照用户的消费历史根据类别排序后再按比例进行相关类内物品排序来进行推荐,或者按照用户的类别来进行推荐,把同类其他用户的消费物品推荐给该用户。\n[0017] 在步骤A中,在度量相似度时给特征赋予不同权重,特征的权重根据各个特征在分类中的作用设定,即根据鉴别的主要特征设定。\n[0018] 在步骤A中,所述的PCA分析方法为主成分分析算法,即Principal Component Analysis,其为降维统计方法,通过正交变换,将分量相关的原表征向量转化成分量不相关的新表征向量,其方法如下:\n[0019] 定义物品的加权特征向量为V=(v1,w1;v2,w2;...;vK,wK)T,其具备K个维度;现在取出n个物品:Vi=(vi1,wi1;vi2,wi2;...;viK,wiK)T,其中1≤i≤n;\n[0020] 定义矩阵:\n[0021] 计算物品在每个维度即属性上的均值:\n[0022]\n[0023] 计算每个物品离开均值的距离,该距离相当于坐标轴原点平移: 这里\n的I=(1,...,1)是一个长度为n列的行向量;\n[0024] 计算这n个物品的协方差矩阵:\n[0025] 计算矩阵C的特征向量和特征值:A-1CA=D,其中,D表示C的特征值对角阵;\nA表示C的特征向量矩阵;\n[0026] 对D和A按降序排列其中的特征值和特征向量,特征值的大小表征了该轴向上的物品属性的分离度,选取其中的前L个特征值和对应的特征向量:0≤L≤K,满足:\n[0027] 对应的,选取A的前L个特征向量:B=[Ai1,Ai2,...,AiL],其中,Aik(1≤k≤L)表示特征向量矩阵的某一列;\n[0028] 对于任何一个新到的样本,通过下面的公式计算其在给定PCA空间中的新坐标,即新特征向量:Vn+1=BT(vn+,1,wn+1,1;vn+1,2,wn+1,2;...;vn+1,K,wn+1,K)T。\n[0029] 在步骤A中,所述的KMEANS算法为K均值算法,其方法如下:\n[0030] 定义一组物品集合(x1,x2,...,xn),其中每个物品都通过一个D维的特征描述向量来表征,将这n个物品聚类成k个不同的类别,其中k≤n,C={C1,C2,...,Ck},并最小化类内数据与类均值之间差值的平方和: 其中,μi是数据类Si的均值,对\n差值的定义为余弦距离: 其中,xj表示物品j的特征\n描述向量,μi表示类别i的类中心,即所有属于类别i的物品的特征描述向量的均值,n表示特征描述向量的维度;\n[0031] 定义一组初始均值μ={μ1,μ2,...,μk},算法反复迭代下述两个步骤直到收敛为止:(1)物品归类步骤:将每个物品归类到距离其最近的均值所在的类别:\n(2)更新物品类均值步骤:\n定义收敛的条件为:k个类中的物品不再发生变化。\n[0032] 本发明同现有技术相比,用改进的KMEANS算法完成数据的聚类,方法简单,增加了可扩展性,同时解决了稀疏性问题、冷启动问题。\n附图说明\n[0033] 现结合附图对本发明作进一步说明。\n[0034] 图1为本发明的算法框图。\n具体实施方式\n[0035] 如图1,本发明采用如下步骤:\n[0036] A、物品的聚类与分类:\n[0037] 首先,采用PCA分析方法鉴别物品的主要特征,即对整个物品集合所张成的特征空间进行主轴定位,并得到PCA空间映射矩阵,增强了物品的可鉴别度,同时降低了后续特征距离计算的强度,这就有效解决了稀疏性问题和冷启动问题,即使没有用户评价,新物品也能根据其特征标签找到可靠的同类物品,从而实现精准的推荐;\n[0038] 其次,采用改进的KMEANS算法完成数据的聚类,即对每个物品都定义一个特征向量,该特征向量涵盖了物品的上述主要特征标签,通过余弦距离度量公式计算每两个物品之间的相似度,其公式如下:\n[0039]\n[0040] 其中,V1,V2表示物品的特征向量:V1=(v11,v12,...,v1n),Vs=(v21,v22,...,v2n);\n[0041] 根据应用的不同,给每个特征项赋予一定的权重以表示该特征的重要程度,即:V1=(v11,w11;v12,w12;...;v1n,w1n),Vs=(v21,w21;v22,w22;...;v2nw2n);\n[0042] 最后,在完成对物品的聚类后,记录每个类的类中心,当有新的物品加入时即可在PCA空间进行距离计算,把新物品分类到离它最近的类中心所代表的那个类别,这就解决了物品增加所带来的可扩展性问题;\n[0043] B、用户的聚类与分类:当系统积累的用户数据量足够时,即可根据用户的类别消费特征向量来为用户进行聚类和分类,其过程和上述物品的聚类与分类过程是一样的;\n[0044] C、物品聚类与用户聚类的融合:每个物品有了分类信息后,用户对物品的消费记录就可以转化为对类别的消费记录,从而使得用户消费特征的维度不再与物品的数量呈线性关系而只与类别的总数相关,由于类别的总数是可控的,而且在通常情况下远远小于物品的数量,所以融合了物品聚类结果的基于用户的协同过滤计算过程的复杂度不会随着物品数据量的增长而增加;\n[0045] D、排序推荐:可以按照类内按相似度排序来进行推荐,或者按照用户的消费历史根据类别排序后再按比例进行相关类内物品排序来进行推荐,或者按照用户的类别来进行推荐,把同类其他用户的消费物品推荐给该用户。\n[0046] 在步骤A中,在度量相似度时给特征赋予不同权重,特征的权重根据各个特征在分类中的作用设定,即根据鉴别的主要特征设定。\n[0047] 在步骤A中,所述的PCA分析方法为主成分分析算法,即Principal Component Analysis,这是一种降维的统计方法,通过正交变换,将分量相关的原表征向量转化成分量不相关的新表征向量,其方法如下:\n[0048] 定义物品的加权特征向量为V=(v1,w1;v2,w2;...;vK,wK)T,具备K个维度。现在取出n个物品:Vi=(vi1,wi1;vi2,wi2;...;viK,wiK)T,其中1≤i≤n,\n[0049] 定义矩阵: 计算物品在每个维\n度属性上的均值:\n[0050] 计算每个物品离开均值的距离,相当于坐标轴原点平移, 这里的I=\n(1,...,1)是一个长度为n列的行向量;\n[0051] 计算这n个物品的协方差矩阵:\n[0052] 计算矩阵C的特征向量和特征值A-1CA=D,这里的D表示C的特征值对角阵;\n这里的A表示C的特征向量矩阵;\n[0053] 对D和A按降序排列其中的特征值和特征向量,特征值的大小表征了该轴向上的物品属性的分离度,选取其中的前L个特征值和对应的特征向量:0≤L≤K,满足:\n[0054] 对应的,选取A的前L个特征向量。B=[Ai1,Ai2,...,AiL],其中Aik(1≤k≤L)表示特征向量矩阵的某一列;\n[0055] 对于任何一个新到的样本,可以通过下面的公式计算其在给定PCA空间中的新坐标,即新特征向量:Vn+1=BT(vn+1,1,wn+1,1;vn+1,2,wn+1,2;...;vn+1,K,wn+1,K)T。\n[0056] 在步骤A中,KMEANS算法即K均值算法,是一种非监督实时聚类算法。其基本原理如下:\n[0057] 定义一组物品集合(x1,x2,...,xn),其中每个物品都通过一个D维的特征描述向量来表征。KMEANS就是将这n个物品聚类成k个不同的类别,k≤n, C={C1,C2,...,Ck}并最小化类内数据与类均值之间差值的平方和:\n[0058] 这里的μi是数据类Si的均值。\n[0059] 这里对差值的定义为余弦距离而不是通常的欧几里德距离:\n[0060]\n其中xj表示物品j的特征描述向量;μi表示类别i的类中心,即所有属于类别i的物品的特征描述向量的均值,n表示特征描述向量的维度。\n[0061] 而传统的KMEANS算法基于欧基里德距离来计算相似度,公式为:\n这种计算距离的度量标准造成了KMEANS 算法对噪声特征非常敏感,而本发明中改进的KMEANS算法对噪声特征的敏感度不强。\n[0062] 算法的基本步骤如下:\n[0063] 定义一组初始均值μ={μ1,μ2,...,μk},算法反复迭代下述两个步骤直到收敛为止:\n[0064] (1)物品归类步骤:将每个物品归类到距离其最近的均值所在的类别:\n[0065] (2)更新物品类均值步骤:\n[0066] 定义收敛的条件为:k个类中的物品不再发生变化。\n[0067] 现在以下述视频数据为实施例进行说明:\n[0068]\n[0069] 定义类型集合为{动作,喜剧,爱情,战争,剧情,动画,科幻,奇幻,传记,恐怖,惊悚,古装,纪录,警匪,冒险,悬疑,艺术,灾难,魔幻,犯罪,歌舞,伦理,历史,家庭,戏曲,军事,系列,科教},这就决定了电影的特征描述向量是28个维度的。\n[0070] 于是得到上述七部视频的特征描述向量为:\n[0071]\n[0072]\n[0073] 定义权重向量为:\n[0074] {1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0 :\n1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0:1.0}\n[0075] 将上述数据代入PCA过程中的公式进行计算,得到降维后的维度为16,上述七部视频降维后的特征描述向量为:\n[0076]\n[0077] 再用KMEANS算法对这七部视频进行聚类计算,聚类计算时代入公式的是降维后的特征描述向量,并定义类别数为3,那么就可以得到下属聚类结果:\n[0078] C1={1787,252,2044};\n[0079] C2={6656,6657,6663};\n[0080] C3={11787};\n[0081] 即:ID为1787,252,2044的三部影片被聚成一类;ID为6656,6657, 6663的三部影片被聚成一类;ID为11787的影片单独形成一类。这样的聚类结果是合理的。用户聚类的过程与此一致。\n[0082] 本算法适合大数据量情况下的计算,比如视频数量可以达到1万以上,用户数量达到10万以上。\n[0083] 本发明中,算法推荐将分为两个阶段,第一阶段用户对物品的消费记录还比较少,无法进行用户聚类;第二阶段,用户消费记录比较丰富,可以进行用户聚类。在第一阶段,推荐主要有两种方法,第一种方法是进行类内按相似度排序的推荐,第二种方法是根据用户的消费历史按类别排序后再按比例进行相关类内物品的推荐,第一种方法对于非登陆用户也是适用的。在第二阶段,推荐主要根据用户的类别来进行推荐,把同类其他用户的消费物品推荐给该用户。\n[0084] 本发明中排序推荐的一种实施方式如下:\n[0085] 从不同维度进行排序。以视频为例,可以提供按收录时间、按上映时间、按评分、按播放次数、按微博的关注度,按朋友的兴趣等维度分别进行排序和呈现,具体如下:\n[0086] a)按收录时间:按照物品被收录到本系统数据库中的时间进行排序;\n[0087] b)按上市/上映时间:按照物品进入市场销售渠道的时间进行排序,如果是电影,就是该影片被公映的时间,并按照公映时间进行排序;\n[0088] c)按评分:按照消费者对物品的评价指数进行排序;由于评分是有时效的,所以可以取某一个时间段的评分作为排序的依据,比如一天,一周,一月等;\n[0089] d)按消费/播放次数:按照物品在市场上的销售量进行排序,如果是视频,就是该视频被点击播放的次数,并按照播放次数进行排序;由于消费/播放次数是有时效的,所以可以取某一个时间段的消费/播放次数作为排序的依据,比如一天,一周,一月等;\n[0090] e)按微博的关注度:按照物品在微博上的被关注度进行排序。由于微博上的关注度是有时效的,所以可以取某一个时间段内物品在微博上的被关注度作为排序的依据,比如一天,一周,一月等;\n[0091] f)按朋友的兴趣:这里的朋友可以是系统内自建的好友圈中的朋友,也可以是系统之外的好友圈中的朋友,比如微博中的好友等;按照朋友对物品的是否感兴趣进行排序;\n所谓感兴趣定义为朋友消费/正面评价过该物品;在此基础上再以对该物品感兴趣的好友数进行排序。\n[0092] 本发明采用改进的KMEANS算法完成数据的聚类,方法简单,增加了可扩展性,同时解决了稀疏性问题、冷启动问题。
法律信息
- 2018-03-06
- 2015-05-27
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201210030236.0
申请日: 2012.02.10
- 2012-07-25
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-12-24
|
2008-07-25
| | |
2
| |
2011-11-02
|
2011-07-12
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |