发明名称 一种基于神经网络解决协同过滤推荐数据稀疏性的方法
摘要 本发明基于神经网络解决协同过滤推荐数据稀疏性的方法,采用广义回归神经网络GRNN,通过训练网络模型和评分预测对稀疏的数据进行完全填充。在进行GRNN网络训练之前,对网络的输入变量采用平均影响值MIV进行筛选,选择对输出影响较大的特征值作为有效输入变量,利用有效输入变量构造GRNN的输入矩阵,采用Kfold交叉验证循环找出GRNN的最优spread值,利用最优的spread值及对应的输入矩阵和输出矩阵进行GRNN网络训练,利用训练好的GRNN对稀疏评分矩阵进行评分预测,用预测评分值代替稀疏评分矩阵未进行评分的数据。采用本发明可对稀疏的推荐数据进行完全填充,改善现有协同过滤技术最突出的数据高度稀疏性问题,使推荐结果更加准确。
申请公布号 CN103106535B 申请公布日期 2015.05.13
申请号 CN201310055267.6 申请日期 2013.02.21
申请人 电子科技大学 发明人 孙健;王晓丽;徐杰;隆克平;张毅;梁雪芬;李乾坤;姚洪哲;陈旭;陈小英
分类号 G06N3/02(2006.01)I 主分类号 G06N3/02(2006.01)I
代理机构 成都行之专利代理事务所(普通合伙) 51220 代理人 温利平
主权项 一种基于神经网络解决协同过滤推荐数据稀疏性的方法,其特征在于,包括以下步骤:步骤1:对于表示M个用户对N个项目评分的稀疏评分矩阵A,计算每个用户对所有项目评分的稀疏度以及每个项目所有用户评分的稀疏度,其中,稀疏评分矩阵A中某个用户未评价的某个项目的评分值统一用0代替;设置用户稀疏度阈值和项目稀疏度阈值,当某个用户的稀疏度小于用户稀疏度阈值时,则删除该用户;当某个项目的稀疏度小于项目稀疏度阈值时,则将删除该项目,得到的用户数量记为m、项目数量记为n,根据m个用户U<sub>i</sub>,1≤i≤m对n个项目P<sub>j</sub>,1≤j≤n的评分构建原始评价矩阵T:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>T</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>t</mi><mn>11</mn></msub></mtd><mtd><msub><mi>t</mi><mn>12</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>t</mi><mrow><mn>1</mn><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>t</mi><mn>21</mn></msub></mtd><mtd><msub><mi>t</mi><mn>22</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>t</mi><mrow><mn>2</mn><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><mo>.</mo></mtd><mtd><mo>.</mo></mtd><mtd></mtd><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd><mtd><mo>.</mo></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd><mtd><mo>.</mo></mtd><mtd></mtd><mtd><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>t</mi><mrow><mi>m</mi><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>t</mi><mrow><mi>m</mi><mn>2</mn></mrow></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>t</mi><mi>mn</mi></msub></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000680876830000011.GIF" wi="609" he="422" /></maths>其中t<sub>ij</sub>,1≤i≤m,1≤j≤n表示用户U<sub>i</sub>对项目P<sub>j</sub>的评分;步骤2:根据原始评价矩阵T的实际情况选择f个特征值,并计算f个用户特征值与f个项目特征值,其中每个用户特征值根据用户对所有项目的评分计算,每个项目特征值根据所有用户对该项目评分计算;每个用户的f个特征值构成一个列的用户特征向量,每个项目的f个特征值构成一个列的项目特征向量;构造原始输入矩阵I,m个用户特征向量依次与n个项目特征向量进行组合为列,共计m*n列构成原始输入矩阵I:<img file="FDA0000680876830000021.GIF" wi="1338" he="805" />其中,u<sub>ik</sub>,1≤i≤m,1≤k≤f表示用户U<sub>i</sub>对应的第k个特征值,p<sub>jk</sub>,1≤j≤n,1≤k≤f表示项目P<sub>j</sub>对应的第k个特征值;以原始输入矩阵I为输入矩阵、原始评价矩阵T为输出矩阵训练GRNN网络,此时GRNN网络的光滑因子spread值=1,得到已训练的GRNN网络;步骤3:原始输入矩阵I的每行表示一个输入变量,共计2f行;对原始输入矩阵I中第d,1≤d≤2f个输入变量,即第d行数据在原始值基础上增大或减小10%,其他输入变量不变,得到两个新的输入矩阵I_increase_d、I_decrease_d;每个输入变量均进行同样的处理,共计得到4f个输入矩阵;将这4f个输入矩阵作为步骤2中已训练的GRNN网络的输入矩阵进行仿真预测,得到4f个仿真预测输出矩阵R_increase_d、R_decrease_d,仿真预测输出矩阵为m*n矩阵,仿真预测输出矩阵中的元素r<sub>ij</sub>,1≤i≤m,1≤j≤n为仿真预测得到的用户U<sub>i</sub>对项目P<sub>j</sub>的评分;步骤4:对于步骤3中得到的第d个输入变量对应的仿真输出矩阵R_increase_d、R_decrease_d,计算平均影响值MIV<sub>d</sub>:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>MIV</mi><mi>d</mi></msub><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mrow><mo>(</mo><msub><mi>r</mi><mrow><mi>ij</mi><mo>_</mo><mi>increase</mi><mo>_</mo><mi>d</mi></mrow></msub><mo>-</mo><msub><mi>r</mi><mrow><mi>ij</mi><mo>_</mo><mi>decrease</mi><mo>_</mo><mi>d</mi></mrow></msub><mo>)</mo></mrow></mrow><mrow><mi>m</mi><mo>&times;</mo><mi>n</mi></mrow></mfrac></mrow>]]></math><img file="FDA0000680876830000022.GIF" wi="990" he="246" /></maths>其中,r<sub>ij_increase_d</sub>表示第d个输入变量增大10%得到的仿真输出矩阵R_increase_d中用户U<sub>i</sub>对项目P<sub>j</sub>的评分,r<sub>ij_decrease_d</sub>表示第d个输入变量减小10%得到的仿真输出矩阵R_decrease_d中用户U<sub>i</sub>对项目P<sub>j</sub>的评分;计算2f个输入变量各自对应的平均影响值MIV<sub>d</sub>,找出2f个平均影响值MIV<sub>d</sub>中的最大值max(MIV<sub>d</sub>),计算阈值Q=max(MIV<sub>d</sub>)×10%,选择平均影响值MIV<sub>d</sub>大于阈值Q的输入变量作为有效输入变量,有效输入变量数量记为F;在原始输入矩阵I中,保留有效输入变量对应的行数据,删除其他输入变量对应的行数据,生成新的输入矩阵I<sub>w</sub>;步骤5:将步骤4中生成的输入矩阵I<sub>w</sub>作为GRNN网络的输入矩阵、原始评价矩阵T作为GRNN网络的输出矩阵,设定spread值的寻优步长和寻优范围,采用Kfold交叉验证GRNN网络,选择误差最小的spread值为最优spread值,最优spread值对应的输入矩阵记为I<sub>s</sub>,输出矩阵记为T<sub>s</sub>;采用最优spread值,以输入矩阵I<sub>s</sub>作为输入矩阵、输出矩阵T<sub>s</sub>作为输出矩阵重新训练GRNN网络;步骤6:采用步骤5中训练好的GRNN网络对稀疏评分矩阵A进行评分预测,计算稀疏评分矩阵A包含的M个用户和N个项目对应的特征向量,GRNN网络的输入矩阵为F行,每行表示一个有效输入变量,共计M*N列,每列为M个用户中任意一个用户的特征向量和N个项目任意一个项目的特征向量的组合,评分预测后得到所有M个用户对所有N个项目的预测评分矩阵,将稀疏评分矩阵A以特定符号表示的评分值以相应的预测评分值代替。
地址 611731 四川省成都市高新区(西区)西源大道2006号