发明名称 一种用于推荐系统的计算机数据挖掘方法
摘要 本发明涉及一种用于推荐系统的计算机数据挖掘方法,属于计算机数据处理技术领域。首先在计算机的主服务器中初始化用户偏好矩阵和服务项目偏好矩阵,将用户输入的偏好矩阵的行向量分发给计算机中的多个映射器,各映射器分别计算用户偏好矩阵和服务项目偏好矩阵的梯度方向的子方向,并将计算结果发送给计算机中的化简器,化简器对接收的梯度方向的子方向进行累加,并根据用户偏好矩阵和服务项目偏好矩阵的梯度方向矩阵,对用户偏好矩阵和服务项目偏好矩阵进行更新。本发明方法对已有的PMF算法进行了改进,提高了大规模数据处理能力;采用键值对的数据存储结构储存偏好矩阵,使得占用的储存空间更小,数据读取速度更快。
申请公布号 CN102750360B 申请公布日期 2014.05.28
申请号 CN201210193229.2 申请日期 2012.06.12
申请人 清华大学 发明人 王建民;丁贵广;龙明盛;姜晓伟
分类号 G06F17/30(2006.01)I;G06F17/16(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京清亦华知识产权代理事务所(普通合伙) 11201 代理人 罗文群
主权项 1.一种用于推荐系统的计算机数据挖掘方法,其特征在于该方法包括以下步骤:(1)设定一个N×M的偏好矩阵R,其中N为偏好矩阵R的行数,N等于用户个数,M为偏好矩阵R的列数,M等于为用户服务的项目个数;(2)向计算机输入文件,将输入文件转换成映射化简模型中的序列文件,使序列文件中的每一行为偏好矩阵R的一个行向量,偏好矩阵R的每一行的数据结构为:行向量下标和键值对数组组成,其中键值对数组包括服务项目编号和用户对该服务项目的偏好;(3)将偏好矩阵R表示为R=U<sup>T</sup>V,其中U<sup>T</sup>为N×D的用户偏好矩阵的转置,N等于用户个数,D为用户服务项目偏好因子个数,V为D×M的服务项目偏好矩阵,M为服务项目个数;(4)在计算机的主服务器中生成用户偏好矩阵U和服务项目偏好矩阵V,其中用户偏好矩阵U的行为用户编号,列为用户偏好因子,初始化时用户偏好因子为任意实数,服务项目偏好矩阵V的行为服务项目编号,列为服务项目偏好因子,并设初始化时服务项目偏好因子为任意实数;(5)将上述偏好矩阵R的行向量分发给计算机中的多个映射器,各映射器根据读取的偏好矩阵R的行向量,分别根据公式:<maths num="0001"><![CDATA[<math><mrow><msub><mrow><mo>&dtri;</mo><mi>U</mi></mrow><mi>ik</mi></msub><mo>=</mo><msub><mi>&lambda;</mi><mi>U</mi></msub><msub><mi>U</mi><mi>ik</mi></msub><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><msub><mi>I</mi><mi>ij</mi></msub><msub><mi>V</mi><mi>j</mi></msub><mrow><mo>(</mo><msub><mi>R</mi><mi>ij</mi></msub><mo>-</mo><mi>g</mi><mrow><mo>(</mo><msubsup><mi>U</mi><mi>i</mi><mi>T</mi></msubsup><msub><mi>V</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><msup><mi>g</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><msubsup><mi>U</mi><mi>i</mi><mi>T</mi></msubsup><msub><mi>V</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>计算用户偏好矩阵U中每个元素的梯度方向▽U<sub>ik</sub>,根据公式:<maths num="0002"><![CDATA[<math><mrow><mi>&Delta;</mi><mrow><mo>(</mo><msub><mrow><mo>&dtri;</mo><mi>V</mi></mrow><mi>ik</mi></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>I</mi><mi>ij</mi></msub><msub><mi>U</mi><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>R</mi><mi>ij</mi></msub><mo>-</mo><mi>g</mi><mrow><mo>(</mo><msubsup><mi>U</mi><mi>i</mi><mi>T</mi></msubsup><msub><mi>V</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><msup><mi>g</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><msubsup><mi>U</mi><mi>i</mi><mi>T</mi></msubsup><msub><mi>V</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>计算服务项目偏好矩阵V中每个元素的梯度方向的子方向Δ(▽V<sub>ik</sub>),其中,<img file="FDA0000412902020000013.GIF" wi="73" he="77" />表示用户偏好矩阵U的转置的第i个行向量,V<sub>j</sub>表示服务项目偏好矩阵V的第j个行向量,λ<sub>U</sub>是用户指定的用户偏好程度参数,λ<sub>U</sub>为正实数,U<sub>ik</sub>为用户偏好矩阵U的第i行、第k列的元素,I为指示函数矩阵,若I<sub>ij</sub>等于0,则表示用户i未对服务项目j产生偏好,若I<sub>ij</sub>等于1,则表示用户i对服务项目j产生偏好,g是罗杰斯特函数,g’是g函数的一阶导函数:<maths num="0003"><![CDATA[<math><mrow><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow></mfrac><mo>;</mo></mrow></math>]]></maths>各映射器将梯度方向▽U<sub>ik</sub>和梯度方向子方向Δ(▽V<sub>ik</sub>)分别发送给计算机中的化简器;(6)化简器根据接收的服务项目偏好矩阵V中每个元素的梯度方向的子方向Δ(▽V<sub>ik</sub>)进行累加,得到矩阵V的每个元素的梯度方向▽V<sub>ik</sub>,<img file="FDA0000412902020000022.GIF" wi="550" he="140" />其中λ<sub>V</sub>是用户指定的服务项目偏好程度参数,λ<sub>V</sub>是正实数;(7)化简器构建一个用户偏好矩阵U的梯度方向矩阵▽U,梯度方向矩阵▽U中第i行、第k列的值为步骤(5)计算得到的▽U<sub>ik</sub>,构建一个服务项目偏好矩阵V的梯度方向矩阵▽V,梯度方向矩阵▽V中第i行、第k列的值为步骤(5)计算得到的▽V<sub>ik</sub>;并根据用户偏好矩阵U的梯度方向矩阵▽U和服务项目偏好矩阵V的梯度方向矩阵▽V,对用户偏好矩阵U和服务项目偏好矩阵V进行更新,使:<maths num="0004"><![CDATA[<math><mrow><mfenced open='' close=''><mtable><mtr><mtd><mi>U</mi><mo>=</mo><mi>U</mi><mo>-</mo><mo>&dtri;</mo><mi>U</mi></mtd></mtr><mtr><mtd><mi>V</mi><mo>=</mo><mi>V</mi><mo>-</mo><mo>&dtri;</mo><mi>V</mi></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths>完成一次迭代;(8)用户设定一个最大迭代次数,若迭代次数大于或等于最大迭代次数,则得到用户偏好矩阵U和服务项目偏好矩阵V,结束计算;若迭代次数小于最大迭代次数,则重复步骤(3)~步骤(8)。
地址 100084 北京市海淀区清华园1号