如何理解Wide&Deep中的cross-product transformation

发布于 10 天前  26 次阅读


image-20220801161643646

本文主要对Wide & Deep论文中的交叉积转换操作做一个理解备忘。

Cross product对应中文翻译是叉积,对应线性代数中的外积。但是Wide & Deep论文中所定义的cross-product transformation与线性代数中的外积运算并没有什么联系,论文中使用cross-product transformation来交叉(用户安装的app列表,用户浏览过的app列表)两个稀疏特征,其定义如下:

原文翻译:

其中是一个布尔变量,如果第个特征是第个变换的一部分,则为1,否则为0。对于二元特征,当且仅当组成特征(“性别=女性”和“语言=en”)全部为1时,跨积转换(例如,“AND(性别=女性,语言=en)”)为1,否则为0。这捕获了二元特征之间的相互作用,并向广义线性模型添加了非线性。

为向量维度,是交叉特征输出向量中一个标量索引。

以下举例说明,假如google play中一共有3个app(分别为a,b,c),某用户下载的app列表为

每个维度分别代表了某个app是否被下载,而该用户的浏览列表为

将两个向量进行拼接,得到

该向量表示用户安装了a、b且浏览过a、b、c,该向量即为两个特征的交叉形式,其交叉所有可能为(每个维度都是独立的)

现在我们的目的是把这些可能转换成onehot向量,维度等于所有可能的数量(在案例中是32,假设可以不浏览就直接下载)。即

为了实现这个转换,我们需要依赖一个矩阵来完成,假设一个向量如下

它代表着用户安装了a、b且浏览过a、b、c,则

若换一个,如

仍然是为1,即任何向量,只要满足中含有1的维度,中也为1,则运算将返回1。从语义角度来说,该运算使得只要满足c中的条件的向量运算后返回1,是包含关系。就像之后的例子中,若表示(安装过a、b、c且浏览过a、b、c),则x也满足(安装了a、b且浏览过a、b、c),因此返回1。

根据以上运算,转换矩阵C(32 x 6)可以写成

依赖于就可以将multihot转换成对应的onehot向量。

但是值得注意的是,实现该转换不一定需要如此运算,可以通过提前建立可能性表,通过查表得到对应onehot向量。

 

 

参考链接

https://zhuanlan.zhihu.com/p/395608710

https://datascience.stackexchange.com/questions/57435/how-is-the-cross-product-transformation-defined-for-binary-features


面向ACG编程