本文通过利用用户的review文本信息,构造“特征-相关性评分”,从而在LFM模型当中引入显性因子,从而使得模型的推荐结果具有解释性。(content-based + CF-based)

本文的Motivations:

(1) 单纯看评分和隐因子分解,无法给出具体的特征解释;所以加入显性因子

(2)不同用户会关注不同的特征,如果是隐性因子,没本法给出具体解释,也没办法体现出这里面的不同?

具体做法:

(1)先通过phrase-level sentiment analysis on user reviews, 提取特征名词、对于特征的评价;特征名词既可以用来表达item,也可以用来表达user

(2)根据用户的评价,构造user-feature矩阵以及item-feature矩阵(有点像package中label的关联属性),如一个用户多次采用了某个特征名词,那么user-feature中该实体的值就会大些;如果某个item被多个用户评价了同一个特征,该item-feature对应的实体值也应该增大

(3)结合user-item评分矩阵, user-feature, item-feature三个矩阵的分解如下,:user-feature~U1,V;  item-feature~U2,V;  user-item~ [U1, H1], [U2, H2];

(4)确定统一的优化目标(loss function),再结合Lagrange multiplier 和KTT补充条件,和求某个参数时,固定其他参数的方法求解。(存在疑惑;需要时再具体研究求解方法)

(5)求出5个矩阵之后,就可以还原user-item, user-feature, item-feature;在做推荐的时候,根据user-feature 和 item-feature可以求出user对于item在显性特征下的相关性,再结合user-item的评分,可确定最终的推荐score。 其中user-feature 和item-feature构造的相关性还可以用来给出推荐的解释。

启发:

类似的,通过分析显性特征user-feature的分布,是否可以得出用户做出选择时的选择结构?

代码参考:

librec: EFM

@RELATION user-music

@ATTRIBUTE user NUMERIC
@ATTRIBUTE item NUMERIC
@ATTRIBUTE rating NUMERIC
@ATTRIBUTE feature-sentiment STRING

@DATA
0,0,5,0:1 1:1
0,1,4,0:1 1:1
0,2,3,0:1 1:-1

 

 



留言

登录 请先登陆, 再留言!