本文记录的目的是方便自己学习和复习,有误之处请谅解,欢迎指出。
在计算广告中使用逻辑回归等算法进行CTR(广告点击率)、CVR(转化率)等预估时,类别特征经过One hot编码后,常常存在四个重要问题:
1、特征非常稀疏
2、特征空间非常大
3、特征之间相对独立,没有考虑关联性
4、如何高效的组合特征
那么关键问题转化成:如何高效的提取这些组合特征。一种办法就是引入领域知识人工进行特征工程。这样做的弊端是高阶组合特征非常难提取,会耗费极大的人力。
针对这四个问题,有人提出了因子分解机(Factorization Machine,FM),一定程度上解决了这些问题。
一、FM公式
公式比较简单,就是在线性回归模型后面添加多项式特征组合项:
在多项式模型中,特征和之间的特征组合采用表示,取值是0和1。需要注意:当和均非0时,组合特征才有意思,否则组合特征输出0。
那么组合特征需要的参数数量为。每个参数需要大量的样本训练,并且需要保证都不为0,如果存在某一个为0,那么对应的权重参数将不会被训练更新,这又是一个特征稀疏导致的问题。
如何解决呢?可以采用矩阵的分解,下图为交叉项特征参数,为实对称矩阵,根据实对称矩阵的性质,可以被分解为一个矩阵与这个矩阵转置相乘,即。
那么每个参数可以用两个向量相乘来代替,即下图。这样每个特征就对应一个隐向量,我们需要的就是这个隐向量,因为的取值只有0或1,对我们没什么作用,个人认为也可以理解为一种嵌入embedding。
这种方式也使得特征之间建立了联系,不在独立。例如和的系数分别为和,它们直接存在公共项,可以先把特征理解与其对应的隐向量划等号。
公式推导:
梯度: