发明名称 基于用户相似度的稀疏数据协同过滤推荐方法
摘要 本发明公开一种基于用户相似度的稀疏数据协同过滤推荐方法,主要解决现有技术中面临稀疏数据时,计算用户之间相似度值不准确,进而影响推荐质量的问题。其实现步骤为:(1)构建稀疏用户对项目的评分矩阵;(2)计算任意两个项目之间的全局相似性;(3)计算任意两个用户评分之间的局部相似性;(4)计算任意两个用户之间的相似度;(5)预测评分;(6)产生推荐列表;(7)完成了对所有用户的协同过滤项目推荐。通过实验仿真结果表明,在稀疏数据集上,本发明与传统协同过滤推荐方法相比计算用户之间相似度更准确,进而提高推荐质量,更好的满足用户需求。
申请公布号 CN106021329A 申请公布日期 2016.10.12
申请号 CN201610297877.0 申请日期 2016.05.06
申请人 西安电子科技大学 发明人 慕彩红;刘逸;王喜智;朱虎明;熊涛;刘若辰;田小林;冯伟;焦李成
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 田文英;王品华
主权项 一种基于用户相似度的稀疏数据协同过滤推荐方法,包括如下步骤:(1)构建稀疏用户对项目的评分矩阵:(1a)从用户对项目的评分数据集中随机提取用户对项目的评分信息,创建用户对项目的稀疏评分矩阵R(n×m),其中,n表示用户数量,m表示项目数量;(1b)将稀疏评分矩阵中用户未评过分的项目的评分用0表示,将稀疏评分矩阵中用户评过分的项目的评分用对应评分值表示;(2)计算稀疏评分矩阵中任意两个项目之间的全局相似性:(2a)按照下式,计算稀疏评分矩阵中任意两个项目之间的雅克比Jaccard系数:<maths num="0001"><math><![CDATA[<mrow><mi>J</mi><mi>a</mi><mi>c</mi><mi>c</mi><mi>a</mi><mi>r</mi><mi>d</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mo>|</mo><msub><mi>r</mi><mi>i</mi></msub><mo>&cap;</mo><msub><mi>r</mi><mi>j</mi></msub><mo>|</mo></mrow><mrow><mo>|</mo><msub><mi>r</mi><mi>i</mi></msub><mo>&cup;</mo><msub><mi>r</mi><mi>j</mi></msub><mo>|</mo></mrow></mfrac></mrow>]]></math><img file="FDA0000983559410000011.GIF" wi="453" he="157" /></maths>其中,Jaccard(i,j)表示稀疏评分矩阵中任意项目i与项目j的雅克比Jaccard系数,r<sub>i</sub>表示稀疏评分矩阵中项目i的评分集合,r<sub>j</sub>表示稀疏评分矩阵中项目j的评分集合,r<sub>i</sub>∩r<sub>j</sub>表示项目i的评分集合与项目j的评分集合的交集,|r<sub>i</sub>∩r<sub>j</sub>|表示两个评分集合的交集中评分个数,r<sub>i</sub>∪r<sub>j</sub>表示项目i的评分集合与项目j的评分集合的并集,|r<sub>i</sub>∪r<sub>j</sub>|表示两个评分集合的并集中评分个数;(2b)计算稀疏评分矩阵中任意两个项目之间的巴氏Bhattacharyya系数;(2c)按照下式,计算稀疏评分矩阵中任意两个项目之间的全局相似性:BCJ(i,j)=[1+Jaccard(i,j)]*BC(i,j)其中,BCJ(i,j)表示稀疏评分矩阵中任意项目i与项目j的全局相似性,Jaccard(i,j)表示项目i与项目j的雅克比Jaccard系数,*表示相乘操作,BC(i,j)表示项目i与项目j的巴氏Bhattacharyya系数;(2d)判断是否计算完稀疏评分矩阵中所有项目的全局相似性,若是,执行步骤(3),否则,执行步骤(2a);(3)计算稀疏评分矩阵中任意两个用户评分之间的局部相似性:(3a)按照下式,计算稀疏评分矩阵中任意两个用户评分之间的局部相似性:<maths num="0002"><math><![CDATA[<mrow><mi>l</mi><mi>o</mi><mi>c</mi><mrow><mo>(</mo><msub><mi>r</mi><mrow><mi>u</mi><mi>i</mi></mrow></msub><mo>,</mo><msub><mi>r</mi><mrow><mi>v</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mrow><mo>(</mo><msub><mi>r</mi><mrow><mi>u</mi><mi>i</mi></mrow></msub><mo>-</mo><mover><msub><mi>r</mi><mi>u</mi></msub><mo>&OverBar;</mo></mover><mo>)</mo></mrow><mo>*</mo><mrow><mo>(</mo><msub><mi>r</mi><mrow><mi>v</mi><mi>j</mi></mrow></msub><mo>-</mo><mover><msub><mi>r</mi><mi>v</mi></msub><mo>&OverBar;</mo></mover><mo>)</mo></mrow></mrow></msup></mrow></mfrac><mo>*</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mrow><mo>(</mo><msub><mi>r</mi><mrow><mi>u</mi><mi>i</mi></mrow></msub><mo>-</mo><mover><msub><mi>r</mi><mrow><mi>m</mi><mi>e</mi><mi>d</mi></mrow></msub><mo>&OverBar;</mo></mover><mo>)</mo></mrow><mo>*</mo><mrow><mo>(</mo><msub><mi>r</mi><mrow><mi>v</mi><mi>j</mi></mrow></msub><mo>-</mo><mover><msub><mi>r</mi><mrow><mi>m</mi><mi>e</mi><mi>d</mi></mrow></msub><mo>&OverBar;</mo></mover><mo>)</mo></mrow></mrow></msup></mrow></mfrac></mrow>]]></math><img file="FDA0000983559410000021.GIF" wi="1315" he="183" /></maths>其中,loc表示稀疏评分矩阵中任意两个用户评分之间的局部相似性,r<sub>ui</sub>表示稀疏评分矩阵中任意用户u对项目i的评分,r<sub>vj</sub>表示稀疏评分矩阵中任意用户v对项目j的评分,<img file="FDA0000983559410000025.GIF" wi="48" he="63" />表示稀疏评分矩阵中任意用户u的平均评分,<img file="FDA0000983559410000024.GIF" wi="46" he="70" />表示稀疏评分矩阵中任意用户v的平均评分,e表示求自然常数操作,*表示相乘操作,<img file="FDA0000983559410000023.GIF" wi="84" he="68" />表示在[1,2,3,4,5]评分区间的中位数3;(3b)判断是否计算完稀疏评分矩阵中所有用户评分的局部相似性,若是,执行步骤(4),否则,执行步骤(3a);(4)计算稀疏评分矩阵中任意两个用户之间的相似度:(4a)计算稀疏评分矩阵中任意两个用户之间雅克比Jaccard系数;(4b)按照下式,计算稀疏评分矩阵中任意两个用户之间的相似度:<maths num="0003"><math><![CDATA[<mrow><mi>s</mi><mi>i</mi><mi>m</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mi>J</mi><mi>a</mi><mi>c</mi><mi>c</mi><mi>a</mi><mi>r</mi><mi>d</mi><mrow><mo>(</mo><mi>m</mi><mo>,</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><munder><mo>&Sigma;</mo><mrow><mi>i</mi><mo>&Element;</mo><msub><mi>I</mi><mi>m</mi></msub></mrow></munder><munder><mo>&Sigma;</mo><mrow><mi>j</mi><mo>&Element;</mo><msub><mi>I</mi><mi>n</mi></msub></mrow></munder><mi>B</mi><mi>C</mi><mi>J</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>*</mo><mi>l</mi><mi>o</mi><mi>c</mi><mrow><mo>(</mo><msub><mi>r</mi><mrow><mi>m</mi><mi>i</mi></mrow></msub><mo>,</mo><msub><mi>r</mi><mrow><mi>n</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000983559410000022.GIF" wi="1485" he="119" /></maths>其中,sim(m,n)表示稀疏评分矩阵中任意用户m与用户n的相似度,Jaccard(m,n)表示用户m与用户n的雅克比Jaccard系数,∑表示求和操作,I<sub>m</sub>表示用户m的评分集合,I<sub>n</sub>表示用户n的评分集合,∈表示属于符号,BCJ(i,j)表示项目i与项目j的全局相似性,*表示相乘操作,loc(r<sub>mi</sub>,r<sub>nj</sub>)表示评分r<sub>mi</sub>与评分r<sub>nj</sub>的局部相关性,r<sub>mi</sub>表示用户m对项目i的评分,r<sub>nj</sub>表示用户n对项目j的评分;(4c)判断是否计算完稀疏评分矩阵中所有用户的相似度,若是,执行步骤(5),否则,执行步骤(4a);(5)预测评分:(5a)选取稀疏评分矩阵中任意一个用户作为目标用户;(5b)将目标用户与其它用户的相似度值按照从大到小排序,选取排序中前K个用户,作为目标用户的邻居用户集,K≥50;(5c)采用协同过滤公式,对稀疏评分矩阵中目标用户评分为0的项目进行预测评分;(5d)判断稀疏评分矩阵中所有用户是否均选为目标用户,若是,则执行步骤(6),否则,执行步骤(5a);(6)产生推荐列表:(6a)选取稀疏评分矩阵中任意一个用户作为目标用户,并为其产生推荐列表;(6b)将稀疏评分矩阵中目标用户评分为0的项目按照预测评分从大到小排序,从排序中选取前N个项目作为最终的推荐集合,2≤N≤20;(6c)判断稀疏评分矩阵中所有用户是否均产生了推荐列表,若是,则执行步骤(7),否则,执行步骤(6a);(7)完成了对所有用户的协同过滤项目推荐。
地址 710071 陕西省西安市太白南路2号
您可能感兴趣的专利