发明名称 一种基于条件受限波尔兹曼机的协同过滤优化方法
摘要 本发明公开了一种基于条件受限波尔兹曼机的协同过滤优化方法,该方法通过在改进的条件受限波尔兹曼机中融合项目类别信息作为条件层,在个性化推荐系统中提高推荐准确性。其特点是利用用户-项目评分信息、项目类别信息进行建模,考虑用户-项目评分信息、项目类别信息对用户兴趣偏好及预测评分的不同影响,并应用到改进的条件受限波尔兹曼机的计算。由于同时考虑了用户-项目评分信息、项目类别信息对用户兴趣偏好、预测评分的影响,该方法削弱了单一数据源对推荐系统的制约,提高了推荐准确性,实验结果表明该方法的推荐准确性明显高于仅采用用户-项目评分信息的受限波尔兹曼机方法。
申请公布号 CN105302873A 申请公布日期 2016.02.03
申请号 CN201510644973.3 申请日期 2015.10.08
申请人 北京航空航天大学 发明人 欧阳元新;刘晓蒙;荣文戈;熊璋
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京科迪生专利代理有限责任公司 11251 代理人 成金玉;孟卜娟
主权项 一种基于条件受限波尔兹曼机的协同过滤优化方法,其特征在于:所述方法分为两个阶段:第一个阶段是设计阶段,根据条件受限波尔兹曼机模型的特点和数据集的特征进行模型设计,模型包括可见层V,即评分数据输入层、隐藏层H,即特征提取层和条件层F,即条件数据输入层;实现步骤如下:步骤A1、利用条件多项式概率分布对可见层v每一列的评分向量进行建模,可见层的单元<img file="FDA0000816746660000011.GIF" wi="53" he="71" />被激活的概率为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>p</mi><mrow><mo>(</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><mo>=</mo><mn>1</mn><mo>|</mo><mi>H</mi><mo>,</mo><mi>F</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>exp</mi><mrow><mo>(</mo><msubsup><mi>b</mi><mi>i</mi><mi>k</mi></msubsup><mo>+</mo><msubsup><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>H</mi></msubsup><msubsup><mi>W</mi><mrow><mi>i</mi><mi>j</mi></mrow><mi>k</mi></msubsup><msub><mi>h</mi><mi>j</mi></msub><mo>+</mo><msubsup><mi>&Sigma;</mi><mrow><mi>q</mi><mo>=</mo><mn>1</mn></mrow><mi>F</mi></msubsup><msub><mi>f</mi><mi>q</mi></msub><msub><mi>VF</mi><mrow><mi>q</mi><mi>i</mi></mrow></msub><mo>)</mo></mrow></mrow><mrow><msubsup><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></msubsup><mi>exp</mi><mrow><mo>(</mo><msubsup><mi>b</mi><mi>i</mi><mi>k</mi></msubsup><mo>+</mo><msubsup><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>H</mi></msubsup><msubsup><mi>W</mi><mrow><mi>i</mi><mi>j</mi></mrow><mi>k</mi></msubsup><msub><mi>h</mi><mi>j</mi></msub><mo>+</mo><msubsup><mi>&Sigma;</mi><mrow><mi>q</mi><mo>=</mo><mn>1</mn></mrow><mi>F</mi></msubsup><msub><mi>f</mi><mi>q</mi></msub><msub><mi>VF</mi><mrow><mi>q</mi><mi>i</mi></mrow></msub><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000816746660000012.GIF" wi="1172" he="191" /></maths>其中<img file="FDA0000816746660000013.GIF" wi="53" he="77" />表示可见层第i个评分为k的二进制数值;h<sub>j</sub>表示隐藏层第j个单元的二进制数值;f<sub>q</sub>表示条件层第q个单元的特征值;<img file="FDA0000816746660000014.GIF" wi="58" he="75" />表示可见层第i个评分为k的单元偏置;b<sub>j</sub>表示隐藏层第j个单元的偏置;<img file="FDA0000816746660000015.GIF" wi="76" he="78" />表示可见层与隐藏层之间的连接权重;VF<sub>qi</sub>表示可见层与条件层的连接权重;步骤A2、利用伯努利概率分布对隐藏层H的特征向量进行建模,隐藏层的单元h<sub>j</sub>被激活的概率:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>p</mi><mrow><mo>(</mo><msub><mi>h</mi><mi>j</mi></msub><mo>=</mo><mn>1</mn><mo>|</mo><mi>V</mi><mo>,</mo><mi>F</mi><mo>)</mo></mrow><mo>=</mo><mi>&sigma;</mi><mrow><mo>(</mo><msub><mi>b</mi><mi>j</mi></msub><mo>+</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>V</mi></munderover><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><msubsup><mi>W</mi><mrow><mi>i</mi><mi>j</mi></mrow><mi>k</mi></msubsup><mo>+</mo><munderover><mo>&Sigma;</mo><mrow><mi>q</mi><mo>=</mo><mn>1</mn></mrow><mi>F</mi></munderover><msub><mi>f</mi><mi>q</mi></msub><msub><mi>HF</mi><mrow><mi>q</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000816746660000016.GIF" wi="981" he="146" /></maths>其中<img file="FDA0000816746660000017.GIF" wi="52" he="76" />表示可见层第i个评分为k的二进制数值;f<sub>q</sub>表示条件层第q个单元的特征值;<img file="FDA0000816746660000018.GIF" wi="58" he="78" />表示可见层第i个评分为k的单元偏置;b<sub>j</sub>表示隐藏层第j个单元的偏置;<img file="FDA0000816746660000019.GIF" wi="70" he="78" />表示可见层与隐藏层之间的连接权重;HF<sub>qi</sub>表示隐藏层与条件层的连接权重;<img file="FDA00008167466600000110.GIF" wi="294" he="127" />是激活函数,其中<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>x</mi><mo>=</mo><msub><mi>b</mi><mi>j</mi></msub><mo>+</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>V</mi></munderover><munderover><mo>&Sigma;</mo><mi>k</mi><mi>K</mi></munderover><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><msubsup><mi>W</mi><mrow><mi>i</mi><mi>j</mi></mrow><mi>k</mi></msubsup><mo>+</mo><munderover><mo>&Sigma;</mo><mrow><mi>q</mi><mo>=</mo><mn>1</mn></mrow><mi>F</mi></munderover><msub><mi>f</mi><mi>q</mi></msub><msub><mi>HF</mi><mrow><mi>q</mi><mi>j</mi></mrow></msub><mo>;</mo></mrow>]]></math><img file="FDA00008167466600000111.GIF" wi="653" he="159" /></maths>第二个阶段是学习阶段,构造模型参数并求出最佳的参数值,用于预测评分,包括如下步骤:步骤B1、参数初始化参数为<img file="FDA0000816746660000021.GIF" wi="550" he="77" />可见层与隐藏层的连接权重<img file="FDA0000816746660000022.GIF" wi="102" he="77" />可见层与条件层的连接权重VF<sub>qi</sub>、隐藏层与条件层的连接权重HF<sub>qi</sub>都使用均值为0,标准差为0.01的正态分布进行初始化;可见层单元偏置<img file="FDA0000816746660000023.GIF" wi="87" he="76" />隐藏层单元偏置b<sub>j</sub>初始化为全零;步骤B2、采用随机梯度上升法进行参数更新,通过不断迭代更新得到模型参数的最佳值,参数的梯度公式如下:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msubsup><mi>&Delta;W</mi><mrow><mi>i</mi><mi>j</mi></mrow><mi>k</mi></msubsup><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>l</mi><mi>o</mi><mi>g</mi><mi>p</mi><mrow><mo>(</mo><mi>V</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><msubsup><mi>W</mi><mrow><mi>i</mi><mi>j</mi></mrow><mi>k</mi></msubsup></mrow></mfrac><mo>=</mo><mo>&lt;</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><msub><mi>h</mi><mi>j</mi></msub><msub><mo>&gt;</mo><mrow><mi>d</mi><mi>a</mi><mi>t</mi><mi>a</mi></mrow></msub><mo>-</mo><mo>&lt;</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><msub><mi>h</mi><mi>j</mi></msub><msub><mo>&gt;</mo><mrow><mi>mod</mi><mi>e</mi><mi>l</mi></mrow></msub></mrow>]]></math><img file="FDA0000816746660000024.GIF" wi="927" he="149" /></maths><maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msubsup><mi>&Delta;b</mi><mi>i</mi><mi>k</mi></msubsup><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>log</mi><mi>p</mi><mrow><mo>(</mo><mi>V</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><msubsup><mi>b</mi><mi>i</mi><mi>k</mi></msubsup></mrow></mfrac><mo>=</mo><mo>&lt;</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><msub><mo>&gt;</mo><mrow><mi>d</mi><mi>a</mi><mi>t</mi><mi>a</mi></mrow></msub><mo>-</mo><mo>&lt;</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><msub><mo>&gt;</mo><mrow><mi>mod</mi><mi>e</mi><mi>l</mi></mrow></msub></mrow>]]></math><img file="FDA0000816746660000025.GIF" wi="828" he="141" /></maths><maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msub><mi>&Delta;b</mi><mi>j</mi></msub><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>log</mi><mi>p</mi><mrow><mo>(</mo><mi>V</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><msub><mi>b</mi><mi>j</mi></msub></mrow></mfrac><mo>=</mo><mo>&lt;</mo><msub><mi>h</mi><mi>j</mi></msub><msub><mo>&gt;</mo><mrow><mi>d</mi><mi>a</mi><mi>t</mi><mi>a</mi></mrow></msub><mo>-</mo><mo>&lt;</mo><msub><mi>h</mi><mi>j</mi></msub><msub><mo>&gt;</mo><mrow><mi>mod</mi><mi>e</mi><mi>l</mi></mrow></msub></mrow>]]></math><img file="FDA0000816746660000026.GIF" wi="815" he="144" /></maths><maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>&Delta;VF</mi><mrow><mi>q</mi><mi>i</mi></mrow></msub><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>log</mi><mi>p</mi><mrow><mo>(</mo><mi>V</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><msub><mi>VF</mi><mrow><mi>q</mi><mi>i</mi></mrow></msub></mrow></mfrac><mo>=</mo><mo>&lt;</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><msub><mi>f</mi><mi>q</mi></msub><msub><mo>&gt;</mo><mrow><mi>d</mi><mi>a</mi><mi>t</mi><mi>a</mi></mrow></msub><mo>-</mo><mo>&lt;</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><msub><mi>f</mi><mi>q</mi></msub><msub><mo>&gt;</mo><mrow><mi>mod</mi><mi>e</mi><mi>l</mi></mrow></msub></mrow>]]></math><img file="FDA0000816746660000027.GIF" wi="956" he="143" /></maths><maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><msub><mi>&Delta;HF</mi><mrow><mi>q</mi><mi>j</mi></mrow></msub><mo>=</mo><mfrac><mrow><mo>&part;</mo><mi>log</mi><mi>p</mi><mrow><mo>(</mo><mi>V</mi><mo>)</mo></mrow></mrow><mrow><mo>&part;</mo><msub><mi>HF</mi><mrow><mi>q</mi><mi>j</mi></mrow></msub></mrow></mfrac><mo>=</mo><mo>&lt;</mo><msub><mi>h</mi><mi>j</mi></msub><msub><mi>f</mi><mi>q</mi></msub><msub><mo>&gt;</mo><mrow><mi>d</mi><mi>a</mi><mi>t</mi><mi>a</mi></mrow></msub><mo>-</mo><mo>&lt;</mo><msub><mi>h</mi><mi>j</mi></msub><msub><mi>f</mi><mi>q</mi></msub><msub><mo>&gt;</mo><mrow><mi>mod</mi><mi>e</mi><mi>l</mi></mrow></msub></mrow>]]></math><img file="FDA0000816746660000028.GIF" wi="956" he="143" /></maths>其中&lt;·&gt;<sub>data</sub>表示由训练集定义的期望;&lt;·&gt;<sub>model</sub>表示由模型IC‑CRBMF定义的期望;步骤B3、预测评分,根据最佳的参数值进行评分预测;<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><mi>R</mi><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><mi>k</mi><mo>&CenterDot;</mo><mi>p</mi><mrow><mo>(</mo><msubsup><mi>v</mi><mi>i</mi><mi>k</mi></msubsup><mo>=</mo><mn>1</mn><mo>|</mo><mi>H</mi><mo>,</mo><mi>F</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000816746660000029.GIF" wi="518" he="143" /></maths>IC‑CRBMF:代表融合项目类别信息的基于条件受限波尔兹曼机的协同过滤推荐方法;根据基于用户和基于项目,将IC‑CRBMF分为基于用户的IC‑CRBMF_UserBased和基于项目的IC‑CRBMF_ItemBased两种,然后通过Hybrid IC‑CRBMF混合加权组合得到最终的预测结果,计算如下:R<sub>Hybrid</sub>=β·R<sub>IC‑CRBMF_ItemBased</sub>+(1‑β)·R<sub>IC‑CRBMF_UserBased</sub>其中β表示组合权重。
地址 100191 北京市海淀区学院路37号