关于组合特征的处理

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。以广告点击预估问题为例,原始数据有语言和类型两种离散特征.下表是语言和类型对点击的影响。为了提高拟合能力,语言和类型可以组成二阶特征。

下表为语言和类型的组合特征对点击的影响:

以逻辑回归为例,假设数据的特征向量为 $ X = (x_1,x_2,…,x_k)$,则有

$$Y = sigmoid(\sum_{i} \sum_{j} w{ij}<x_i,x_j>)$$

其中< $x_i$, $x_j$ >表示$x_i$和$x_j$的组合特征,$w_{ij}$的维度等于|$x_i$| · |$x_j$| ,|$x_i$|和|$x_j$|分别代表第$i$个特征和第$j$个特征不同取值的个数。在上表广告点击预测问题中,$w$的维度是$2 * 2 = 4$(语言取值为中文或英文两种,类型的取值为电影或电视剧两种)。这种特征组合看起来是没有任何问题的,但当引入ID类型的特征时问题就出现了。以推荐问题为例,下表是用户ID 和物品ID对点击的影响。

下表是用户ID和物品ID的组合特征对点击的影响。

若用户的数量为$m$、物品的数量为$n$,那么需要学习的参数规模为$m * n$。在网络环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习$m * n$规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用$k$维的低维向量表示$(k << m,k << n)$,

$$Y = sigmoid(\sum_{i} \sum_{j} w{ij}<x_i,x_j>)$$

其中$w_{ij} = x_i' · x_j'$ ,$x_i'$ 和 $x_j'$分别表示$x_i$和$x_j$对应的低维向量。在上表的推荐问题中,需要学习的参数的规模变为$m * k + n * k$,这就等价于矩阵分解。