【Paper01】
《An Efficient Deep Learning Model to Infer User Demographic Information From Ratings》
IEEE Access, 2019
【研究背景】
用户人口统计信息对于提供高质量的个性化推荐很重要,但是当下有各种隐私保护政策,加上用户不愿透露自己信息,所以人口统计信息的获取十分困难,于是需要对人口统计信息进行预测。
提出的已有方法的缺点:1. 手动创建(handcraft)的特征过于依赖专家经验;2. 传统机器学习模型不能模拟复杂的非线性关系。
【本文方法】
方法总览。
1. 数据处理
由于电影数据集的稀疏性,以及用户观看数量的不均匀,比如有的用户看了上百部电影,有的用户只看了20部,这就造成了用户向量中非零元素分布不均匀,为了减少用户向量的非零元素个数,作者提出了两个点,分别是“Which”和“What”,即:在哪个位置补充评分,和补充值为多少的评分。【注:这里的用户向量就是评分矩阵的行向量,长度为项目个数,每个位置的值表示该用户对对应项目的评分】
首先简单介绍一下矩阵分解。
这里就是经典的矩阵分解方法(《Matrix factorization techniques for recommender systems》, 2009),预测值由2部分组成:前面 b i a s g l o b a l bias_{global} biasglobal是所有项目的平均分, b i a s u s e r / i t e m i / j bias^{i/j}_{user/item} biasuser/itemi/j是用户 i i i的平均打分/项目 j j j收到的平均打分与global的差值,个人的理解就是,这一部分就是用用户、项目平均分来对全局平均分进行一个修正;第二部分是用户向量与项目向量的内积。
矩阵分解简单举个例子,已知评分矩阵如下,我们预测
u
1
u_1
u1对
i
2
i_2
i2的评分
p
1
,
2
p_{1,2}
p1,2:
R
=
[
5
0
0
1
4
3
3
3
3
3
5
0
5
0
0
]
R=\begin{bmatrix} 5 & 0 & 0 &1 & 4 \\ 3 & 3 & 3 & 3 & 3 \\ 5 & 0 & 5 & 0 & 0 \end{bmatrix}
R=⎣
⎡535030035130430⎦
⎤
R是评分矩阵,可以计算出
b
i
a
s
g
l
o
b
a
l
=
5
+
1
+
4
+
3
∗
5
+
5
+
5
10
=
3.5
,
b
i
a
s
u
s
e
r
1
=
(
5
+
1
+
4
)
3
−
3.5
=
−
0.2
,
b
i
a
s
i
2
=
3
−
3.5
=
−
0.5
bias_{global} = \frac{5+1+4+3*5+5+5}{10}=3.5,{bias}^1_{user}=\frac{(5+1+4)}{3}-3.5=-0.2,bias_i^2=3-3.5=-0.5
biasglobal=105+1+4+3∗5+5+5=3.5,biasuser1=3(5+1+4)−3.5=−0.2,biasi2=3−3.5=−0.5
再根据矩阵分解的思想,用P和Q两个矩阵(初始为随机生成)的乘积来拟合R,所以预测的结果就是3.5-0.2-0.5再加上P的第一行和Q转置的第二列。 后续P和Q的迭代过程不再赘述。
现在回到文章内容,关于“Which”,作者提出了2个不同的策略:
i
n
d
e
x
j
index_j
indexj:第
j
j
j个用户要补充评分的位置。个人的理解,
i
n
d
e
x
j
index_j
indexj是个向量,即D=[20,30,40],代表补充下标为20,30,40的3个电影的评分。
S
S
S: 没有评分的项目数量
u
i
u_i
ui: 用户
i
i
i的平均评分
p
j
,
i
p_{j,i}
pj,i: 矩阵分解的预测值
(1)TOP_S:物理意义就是选取矩阵分解评分预测结果最大的n个电影的下标,至于这个n是多少,就用下标的平方和的二次根来决定,让D的二范数等于S,这里作者也没说原因,我的猜测是尽量选取下标靠前的电影。
(2)DIF_S:和上面一样,不过物理意义是尽量选取接近用户打分平均值的项目的下标。
介绍完了“Which”,介绍一下“What”:
α
\alpha
α是超参数,取10
θ
i
\theta_i
θi作者说的逻辑回归的系数?但是这篇文章只有对比方法里有逻辑回归,正则化强度取的0.16,暂时认为这里取0.16
最终的填充值差不多就是矩阵分解预测值除以2.6,当然,会将范围控制在[1.5]
2.RETENTION BLOCKS
这部分应该是文章的核心。
(1) OVERLOOK GATE (忽视门)
过程如图所示,作为输入的
x
i
x_i
xi是表示用户
i
i
i的向量,即上一步中补充了一些非零值的向量。
作者设计这个的原因:作者假设只有一小部分评分对人口预测是有效的。
从输入到
h
i
h_i
hi,是一个全连接层,这里
h
h
h的维度要远小于
x
x
x,这样可以更好地提取隐特征,挖掘输入变量间的关系。再通过一层全连接,用softmax激活函数试图忽略一些没价值的评分数据,最后用输入和
h
h
h对应位置相乘(element-wise),相乘的结果是同维度的向量,这一步通过softmax的结果来决定
x
x
x哪些评分数据被储存。【softmax结果的2个性质:1)非负数;2)和等于1】
【总结:
x
i
x_i
xi:原始输出;
h
i
h_i
hi:提取重要信息;
o
i
o_i
oi:结合了
x
,
h
x,h
x,h,忽视了不重要的信息】
(2)YIELD GATE (产出门)
tanh:
soigmoid:
这里有2个分支流,第一个:tanh激活函数创建新的候选值,第二个:sigmoid决定更新哪些值,但这些都是黑盒了,应该都是作者编的解释性。把这两个的结果对应位置相乘,再加上上一步的结果 o i o_i oi. 这里输出的 z i z_i zi保持 h h h的维度,理论上是学习到了各个位置间的关系。
3.多标签学习
由于前面的网络结构,学习到的 z z z向量保留了不同标签之间的相互关系,所以同时对性别、年龄、职业进行预测。但是是为每个类别分别采用不同的分类器,而不是学习多分类的联合分布。这样的好处是:可以调整不同类别分类器的学习率来更好地保留多个不同标签间的相互关系。
训练
加上正则项,
W
A
W_A
WA是分类层的参数,
W
B
W_B
WB是剩下的其他层参数,分别用2个超参和l1/l2正则项控制。
损失函数本体是交叉熵。本质是对真实标签值的预测概率取对数求和。
K
=
{
G
e
n
d
e
r
,
A
g
e
,
O
c
c
u
p
a
t
i
o
n
}
K=\{Gender,Age,Occupation\}
K={Gender,Age,Occupation}
评估
标准的多分类任务,用准确度评估。
实验
对比的Baseline包括对数回归、参数C取值不同的SVM,都属于经典的机器学习方法。作者的模型也有3种形式,从上到下分别是“不包括数据预处理”、“分别预测3个标签”和上述的完整模型。指标方面,分别对比了3个属性的准确率以及三个准确率的和。
改进方向:
- 提出新的模型预测人口信息。(利用Ratings 或者 其他)
- 针对新用户 (调研到一篇《Inferring Private Demographics of New Users in Recommender Systems》)
- 改进对用户评分数据的预处理方式