2. 重庆农村商业银行 科技信息部, 重庆 400023
2. Science and Technology Information Department, Chongqing Rural Commercial Bank, Chongqing 400023, China
协同过滤算法通过计算用户的兴趣相似性, 筛选兴趣最相近的用户为邻居为用户推荐商品, 是推荐系统研究的热点[1,2]. 有学者将物质扩散和热传导理论[3–5]应用于协同过滤推荐技术, 取得了很好的效果, 典型的是基于二部图的协同过滤推荐研究, 该算法令能量在“用户-项目”以及“项目-其他用户”间扩散, 扩散完成后即获取到准确的邻居用户, 预测评分更加准确, 已经成为协同过滤领域研究的一个新方向[6], 不断有学者在此基础上研究新的改进措施来进一步提高推荐的准确度. 文献[7]提出了一种基于随机森林修正的加权二部图推荐算法, 首先建立评分权重矩阵, 再用二部图做能量分配, 获取到初始推荐结果, 最后采用随机森林对推荐结果进行再次修正, 提高了推荐的准确度; 文献[8]提出了一种利用差异路径权重控制能量传递的二部图算法, 该算法在第一阶段能量传递时采用用户相似性作为路径权重, 使与目标用户相似的用户节点获得更多的能量; 在第二阶段采用项目属性的相似性作为路径权重, 使与目标用户已购项目具有相似属性的项目获得更多的能量, 达到了提高推荐结果多样性的目标; 文献[9,10]综合考虑项目度、用户评分标准信息和时间动态因素, 对二部图上的用户-项目关联关系做了加权处理, 推荐列表的平均绝对偏差和均方根误差都有明显下降.
1 基于加权二部图的协同过滤推荐算法二部图是图论中的一种特殊的无向图, 图中顶点集合V被划分成V1和V2两部分, 且
${\rm{e}}n{g_{wv}} = \dfrac{1}{{d({u_v})}}\sum\limits_{k = 1}^q {\dfrac{{{a_{wk}}{a_{vk}}}}{{d({i_k})}}} $ | (1) |
其中,
${r_{wk}} = \frac{{\displaystyle\sum\limits_{v = 1, v \ne w}^p {en{g_{wv}}{a_{vk}}} }}{{\displaystyle\sum\limits_{v = 1, v \ne w}^p {en{g_{wv}}} }}$ | (2) |
按
BNCF算法在建立用户-项目模型时仅考虑用户是否选择过项目, 用户选择过某一个项目则说明用户对该项目有偏好. 这种假设具有很大的局限性, 仅适用于粗略的用户偏好统计, 在基于用户评分的体系中, 用户偏好划分更加精细, BNCF算法的推荐结果就不再准确. 例如在一个5分等级的评价系统中, 用户对某一个项目给出5分的评价说明用户喜欢该项目, 若用户对某一个项目给出2分的评价, 则不能再认为用户喜欢该项目. 为避免低分评价对判断用户偏好的影响, 部分学者提出忽略低分评价、只考虑高分评价的算法, 这种算法更加符合用户偏好的实际, 能取得更加准确的评分预测结果. 更进一步地, 部分学者认为低分评价中也具有参考意义, 不应该直接丢弃, 提出基于加权二部图的协同过滤推荐算法, 其中典型的是基于参数化的加权二部图算法(PB-BNCF)和基于比例的加权二部图算法(RB-BNCF).
1.1 基于参数化的加权二部图算法基于参数化的加权二部图算法对图中每条用户—项目的连边赋予一个权值e, 当用户
${{e}}n{g_{wv}} = \frac{1}{{{{f}}({u_v})}}\sum\limits_{k = 1}^q {\frac{{{{{e}}_{wk}}{{{e}}_{vk}}}}{{f({i_k})}}} $ | (3) |
其中, 函数f表示对图中某一顶点有连边的权值进行求和, 即
计算用户
${r_{wk}} = \frac{{\displaystyle\sum\limits_{v = 1, v \ne w}^p {en{g_{wv}} \cdot {{\rm{e}}_{vk}}} }}{{\displaystyle\sum\limits_{v = 1, v \ne w}^p {en{g_{wv}}} }}$ | (4) |
PB-BNCF算法使用参数
基于比例的加权二部图算法考虑用户评分习惯问题, 部分用户可能习惯性地给所有项目高分, 而部分用户习惯性地给所有项目低分, 单纯地以某一个绝对分值来判定用户偏好不准确, 因此提出先对用户评分数据按照式(5)进行处理.
${{{t}}_{wk}} = \dfrac{{{r_{wk}}}}{{\overline {{{{r}}_{{{{u}}_{{w}}}}}} }}$ | (5) |
其中,
${{e}}n{g_{wv}} = \frac{1}{{{{f}}({u_v})}}\sum\limits_{k = 1}^q {\frac{{{{{t}}_{wk}}{{{t}}_{vk}}}}{{f({i_k})}}} $ | (6) |
计算用户
${r_{wk}} = \frac{{\displaystyle\sum\limits_{v = 1, v \ne w}^p {en{g_{wv}} \cdot {{{r}}_{vk}}} }}{{\displaystyle\sum\limits_{v = 1, v \ne w}^p {en{g_{wv}}} }}$ | (7) |
RB-BNCF算法通过数据预处理消除了用户评分习惯对分析用户偏好的影响, 并且不需要输入控制参数, 对不同数据集都有较高的推荐准确度.
2 基于改进加权二部图和用户信任度的协同过滤推荐算法PB-BNCF算法和RB-BNCF算法根据用户对项目的评分为用户-项目的连边赋予一定的权重, 当边上权重较小时, 通过这条边传递的用户能量就较少, 达到弱化低分评价对判断用户偏好的影响的目的. 这两种算法的共同点将用户共同喜欢的项目作为衡量是否有共同的兴趣偏好的量化标准, 对于用户不喜欢的项目采取的是忽略或弱化影响的处理方式. 但是, 不难想象, 两个用户如果共同不喜欢的项目较多, 也能说明两个用户兴趣偏好相似, 用户的低分评价也蕴含着用户偏好信息, 需要进行挖掘和分析.
2.1 评分数据处理在本文的改进算法中, 为体现用户评分对用户喜欢或不喜欢某一个项目的判断, 需要对用户的评分用式(8)进行预处理.
${{{t}}_{wk}} = \frac{{{r_{wk}}{\rm{ - }}\overline {{{{r}}_{{{{u}}_{{w}}}}}} }}{{\overline {{{{r}}_{{{{u}}_{{w}}}}}} }}$ | (8) |
其中,
${{\rm{t}}_{wk}} = \dfrac{{{r_{wk}}}}{{\overline {{{\rm{r}}_{{{\rm{u}}_{\rm{w}}}}}} }}{\rm{ - }}1$ | (9) |
计算用户
${{e}}n{g^ + }_{wv} = \frac{1}{{{{{f}}^ + }({u_v})}}\sum\limits_{k = 1}^q {\frac{{{{{t}}_{wk}}{{{t}}_{vk}}}}{{{f^ + }({i_k})}}} $ | (10) |
函数
${\rm{e}}n{g^{\rm{ - }}}_{wv} = \frac{1}{{{{\rm{f}}^{\rm{ - }}}({u_v})}}\displaystyle\sum\limits_{k = 1}^q {\frac{{\left| {{{\rm{t}}_{wk}}{{\rm{t}}_{vk}}} \right|}}{{{f^{\rm{ - }}}({i_k})}}} $ | (11) |
函数
用户
${{e}}n{g_{wv}} = \sqrt {{{\left( {{{e}}n{g^{\rm{ - }}}_{wv}} \right)}^2} + {{\left( {{{e}}n{g^ + }_{wv}} \right)}^2}} $ | (12) |
为进一步提高推荐准确度, 众多学者在推荐过程中引入用户信任度. 比较有代表性的是卢竹兵等人提出的基于信任网络的协同过滤推荐算法[16], 算法认为用户的信任度具有传递性, 用户A信任用户B, 用户B信任用户C, 则认为用户A也信任用户C. 根据用户的信任关系结合用户评分构建邻居用户模型, 可以得到更加准确的推荐结果. 分析此类算法后发现, 学者还隐含地认为用户信任度具有全局性, 即如果AB间有信任关系, 则对用户A推荐所有领域的项目时都采用B做邻居用户, 这与实际情况不符, 现实情况是很难有一个用户对所有领域都熟悉, 用户A在选择不同领域的项目时更倾向于咨询具体领域内的可信用户. 因而本文将用户信任度的形式定义如表1所示.
若用户
(1) 评分数量权重
本文定义评分数量因子
${\omega _{{{w}}, \chi }} = \left\{ {\begin{array}{*{20}{c}} 1, \\ {{n_{w, \chi }}/H}, \end{array}} \right.\begin{array}{*{20}{c}} {} \\ {} \end{array}\begin{array}{*{20}{c}} {{n_{w, \chi }} \geqslant H} \\ {{n_{w, \chi }} < H} \end{array}$ | (13) |
其中,
(2) 评分准确度权重
衡量用户
${{{E}}_{w, k}} = 1 - \frac{{\left| {{r_{wk}} - \overline {{r_{{{{i}}_k}}}} } \right|}}{S}$ | (14) |
其中, S为项目的评分范围, 若项目评分采用5分制, 则S = 5;
由评分数量因素
${{{T}}_{w, \chi }} = {\omega _{{{w}}, \chi }} \times \frac{{\displaystyle\sum\limits_{k \in \chi } {{E_{w, k}}} }}{{\left| \chi \right|}}$ | (15) |
其中,
综合以上用户相似性和用户信任度的因素, 计算用户
${r_{wk}} = \frac{{\displaystyle\sum\limits_{v = 1, v \ne w, {{k}} \in \chi }^p {en{g_{wv}} \cdot {{{T}}_{w, \chi }} \cdot {{{r}}_{vk}}} }}{{\displaystyle\sum\limits_{v = 1, v \ne w}^p {en{g_{wv}}} }}$ | (16) |
用户在某一领域内的信任度相对比较稳定, 因此采用离线方式计算用户信任度, 在线推荐时将信任度矩阵作为算法输入, 算法推荐流程如图1所示.
3 实验分析 3.1 实验设计
本文采用美国Minnesota大学的GroupLens 项目MovieLens和Eachmovie两个真实的电影评分数据集进行实验, 其中MovieLens数据集中包括943个用户对1682部电影的100 000个评分记录, 每个用户至少对20部电影进行了评分, 评分范围为1–5; Eachmovie数据集中有72 916个用户对1628部电影的2811 983个评分记录, 评分范围为0–1, 为使不同数据集的实验结果具有可比性, 将Eachmovie数据集中的用户评分进行线性处理, 使评分落在1–5之间. 随机选取每个数据集中的80%作为训练集, 构建协同过滤推荐模型, 剩余20%作为测试集, 检验推荐效果.
3.2 评估指标由于改进算法着眼于提高推荐的准确度, 因此采用学者最常使用的平均绝对偏差(MAE)来评估算法的效果. MAE表示算法预测评分与用户实际评分之间的差距, 计算对单个用户推荐准确度的方法如式(17).
$MA{E_w} = \frac{{\displaystyle\sum\nolimits_{k = 1}^N {\left| {{r_{wk}} - r_{wk}^, } \right|} }}{N}$ | (17) |
其中, N为测试集中某一用户
实验对传统二部图算法、基于参数化的加权二部图算法、基于比例的加权二部图算法以及本文改进算法进行了对比分析, 采用两种数据集时各算法的推荐准确度对比情况如图2和图3所示, 图中纵轴是不同算法的MAE值, 横轴是实验中设置的邻居用户数.
从图2纵向来看, BNCF算法在MovieLens数据集中预测评分结果偏差比较大, PB-BNCF算法和RB-BNCF算法MAE值明显低于BNCF算法, 本文提出的算法则在不同邻居用户数情况下均优于对比算法; 从横向来看, BNCF算法随着邻居用户数从5增加到40, 推荐准确度呈现不稳定的表现, PB-BNCF算法、RB-BNCF算法以及本文提出的算法在邻居用户数较少(5–10)时MAE值相对较高, 在邻居数为15–20时达到最佳的推荐效果, 在邻居数超过30时, MAE值趋向于稳定.
从图3可以看出, BNCF算法在Eachmovie数据集上预测评分结果偏差仍然比较大, 说明BNCF算法在基于评分的推荐系统上推荐效果不佳, 对路径进行加权处理后可以明显提高推荐的准确度; RB-BNCF在Eachmovie数据集上MAE值略有升高, 可能和Eachmovie数据集评分稀疏度比MovieLens数据集高有关; PB-BNCF算法在Eachmovie数据集上的MAE值远高于在MovieLens数据集上的结果, 可能原因是PB-BNCF算法对不同数据集的最佳参数
对比各种算法在Eachmovie和MovieLens数据集的实验结果来看, 本文提出的算法在不同的数据集上MAE值均低于其它算法, 推荐效果准确且稳定.
4 总结和展望为了提高协同过滤推荐的准确度, 本文提出了一种基于改进的加权二部图和用户信任度的协同过滤推荐系统. 算法充分挖掘了用户低分评价中包含的用户兴趣信息, 在二部图进行能量扩散过程中同时扩散“喜欢”和“不喜欢”的能量, 并结合用户在具体领域中的信任度对项目进行预测评分. 实验结果表明, 改进算法在两种数据集上均能取得更准确的推荐结果, 算法表现稳定. 由于算法充分挖掘了隐藏的用户的兴趣信息, 因而可以更进一步地解决协同过滤数据稀疏性的问题, 笔者将在接下来的工作中在此方面进行研究和探讨, 不断优化算法的推荐效果.
[1] |
李龙生, 艾均, 苏湛, 等. 结合用户行为和物品标签的协同过滤推荐算法. 计算机应用与软件, 2018, 35(6): 248-253. DOI:10.3969/j.issn.1000-386x.2018.06.045 |
[2] |
赵宇峰, 李新卫. 基于歌曲标签聚类的协同过滤推荐算法的研究. 计算机应用与软件, 2018, 35(6): 259-262. DOI:10.3969/j.issn.1000-386x.2018.06.047 |
[3] |
Zhou T, Ren J, Medo M, et al. Bipartite network projection and personal recommendation. Physical Review E, 2007, 76: 046115. DOI:10.1103/PhysRevE.76.046115 |
[4] |
Liu JG, Wang BH, Guo Q. Improved collaborative filtering algorithm via information transformation. International Journal of Modern Physics C, 2009, 20(2): 285-293. DOI:10.1142/S0129183109013613 |
[5] |
Zhang YC, Blattner M, Yu YK. Heat conduction process on community networks as a recommendation model. Physical Review Letters, 2007, 99(15): 154301. DOI:10.1103/PhysRevLett.99.154301 |
[6] |
刘朋. 混合个性化推荐方法研究[硕士学位论文]. 北京: 北方工业大学, 2018.
|
[7] |
李玲. 基于二部图的个性化推荐系统研究[硕士学位论文]. 北京: 北方工业大学, 2018.
|
[8] |
高长元, 段文彬, 张树臣. 基于差异路径权重的二部图网络推荐算法. 计算机应用研究, 2019(3): 1-6. |
[9] |
陈诚. 基于二部图的推荐算法的研究与应用[硕士学位论文]. 北京: 北京邮电大学, 2016.
|
[10] |
王茜, 段双艳. 一种改进的基于二部图网络结构的推荐算法. 计算机应用研究, 2013, 30(3): 771-774. DOI:10.3969/j.issn.1001-3695.2013.03.033 |
[11] |
曹易, 张宁. 二部图在用户-网站中的实证研究. 计算机系统应用, 2012, 21(6): 132-135. DOI:10.3969/j.issn.1003-3254.2012.06.028 |
[12] |
唐敏, 关健, 邓国强, 等. 一种求解二部图最大匹配问题新算法及其应用. 计算机系统应用, 2012, 21(3): 72-75, 28. DOI:10.3969/j.issn.1003-3254.2012.03.016 |
[13] |
黄波, 严宣辉, 林建辉. 基于有向图分割的推荐算法. 计算机系统应用, 2015, 24(12): 196-203. DOI:10.3969/j.issn.1003-3254.2015.12.031 |
[14] |
任琛. 融入生活体验的二部图推荐算法[硕士学位论文]. 西安: 西安电子科技大学, 2017.
|
[15] |
黄熠姿, 杨金鑫, 孙维. 基于改进二部图与专家信任的混合推荐算法. 价值工程, 2017, 36(19): 160-164. |
[16] |
卢竹兵, 唐雁. 一种基于信任网络的协同过滤推荐策略. 西南师范大学学报(自然科学版), 2008, 33(2): 123-126. |