什么是高维组合特征?

为了提高模型对数据复杂关系的拟合能力,在做特征工程时常常对一些特征进行组合,构成高阶特征。

以逻辑回归为例,假设数据特征向量为 X = ( x 1 , x 2 , . . . , x k ) X = (x_1, x_2, ..., x_k) X=(x1,x2,...,xk),则有

Y = s i g m o i d ( ∑ i ∑ j w i j < x i , x j > ) Y = sigmoid(\sum_{i} \sum_{j} w_{ij} < x_i, x_j >) Y=sigmoid(ijwij<xi,xj>)

其中 < x i , x j > < x_i, x_j > <xi,xj>表示 x i x_i xi x j x_j xj的组合特征。第 i , j i, j i,j个特征的取值个数为 ∣ x i ∣ , ∣ x j ∣ |x_i|, |x_j| xi,xj,那么 w i j w_{ij} wij的维度大小为 ∣ x i ∣ ⋅ ∣ x j ∣ |x_i|·|x_j| xixj。当 x i x_i xi x j x_j xj为ID类特征,例如user id有m个,item id有n个,那么 w i j w_{ij} wij的参数规模为 m ∗ n m*n mn,生产环境中,uid和nid可达百万级,几乎无法学习 m ∗ n m*n mn规模的参数。

一种行之有效的方法是将 w i j w_{ij} wij进行矩阵分解,由 m ∗ n m*n mn分解为两个 m ∗ k m*k mk n ∗ k n*k nk的矩阵乘法, k < < m , k < < n k << m, k << n k<<m,k<<n。此时 w i j = x i ′ ⋅ x j ′ w_{ij} = x_i^{'} · x_j^{'} wij=xixj,这样需要学习的参数规模为 ( m + n ) ∗ k (m+n)*k (m+n)k,其实类似于embedding的形式。

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

算法工程师面试那些事儿

おすすめ

転載: blog.csdn.net/qq_40006058/article/details/121344130