2011年5月6日,星期五

潜在因素与沃帕尔兔

有一篇不错的论文 梅农和埃尔坎 关于具有潜在特征的二元预测。它关心正确的事情:易于实施,整合多种信息源的能力以及可伸缩性。该模型可以被认为是 多项式对数矩阵分解.

在没有附带信息的情况下,以二进制形式进行描述是最容易的。在这种情况下,基本上是二项输入$ x =(r,c)$,\ [
\ log \ frac {p(y = 1 | x,w)} {p(y = 0 | x,w)} = \ alpha ^ T_r \ beta_c,
\]其中$ \ alpha $是与$ r $相关的$ k $潜在因子的向量,而$ \ beta $是与$ c $相关的$ k $潜在因子的向量。 $ r $和$ c $是此处的标识符,例如,用户ID和电影ID,用户ID和广告ID等。

我现在几乎可以在vowpal wabbit中做到这一点。假设模型中有两个潜在维($ k = 2 $)。训练数据$(y,(r,c))$将通过
y | alpha潜在_0_r潜在_1_r | beta潜在_0_c潜在_1_c
例如对于训练基准$(1,(16,432))$,
1 | alpha潜在_0_16潜在_1_16 | beta潜在_0_432潜在_1_432
然后选择--quadratic ab和--loss logistic。不幸的是,这没有做正确的事。首先,它创建了一些额外的功能(它是外部产品,而不是内部产品)。其次,这些额外的功能具有自己独立的权重,而在模型中,权重是各个权重的乘积。可能的解决方案是在vowpal中添加--dotproduct选项,该选项将采用两个名称空间并模拟与其内部乘积相对应的功能(在这种情况下,输入中功能的顺序很重要)。

如果到目前为止,您可能会看到如何将与dyad相关联的附加功能$ s(x)$添加到另一个命名空间中,以通过辅助信息来扩展模型。
y | alpha潜在_0_r潜在_1_r | beta潜在_0_c潜在_1_c |侧面特征...
同样,很容易合并与每个组件相关的辅助信息,这些辅助信息不会放置在alpha和beta命名空间中,以免被--dotproduct占用(实际上,对于与组件相关的典型辅助信息,--quadratic组件方面的信息将是合理的)。请注意,作者报告的更好的结果是,先学习潜在模型,固定潜在权重,然后学习与辅助信息相关的权重。

对于多值数据,作者使用多项式logit,但我怀疑 评分过滤树 具备物流基础的学习者可以完成工作。

最后,作者建议进行正则化对于取得良好的结果是必要的。可能我可以使用``仅一次通过训练数据''正则化样式来摆脱困境。

没意见:

发表评论