(由于平台稿件格式问题,公式格式不能正确写上;如若读写困难可后台私信我要完整电子版)
4.1 基本原理和特征交叉
4.1.1 基本原理
逻辑回归简单实用,没有复杂的数值运算,非常适合在对性能要求较高的场景中进行在线预测,目前已经成为企业应用的标配和基线。但是,随着互联网的发展,以及应用场景的日益复杂,人们对机器学习的期待日渐提高,在一些复杂的场景中,逻辑回归显得有些力不从心。例如,在电商推荐场景中预测用户是否会购买某商品,商品和用户都将作为模型特征,购买行为的发生与否将作为预测类别。输入为 x=〖[x_1,x_2]〗^T,x_1=0 表示女性,x_1=1 表示男性,x_2=0 表示女鞋,x_2=1 表示男鞋,输出 y 表示用户的购买概率,特征分布如图4-1所示。
图4-1
其中,椭圆形表示用户会购买(y=1),三角形表示用户不会购买(y=0)。可以看出,这是一个典型的异或问题(在需要判断二者是否匹配的分类场景中,这种问题广泛存在)。通过前面的学习我们知道,要想用逻辑回归解决异或问题,就要对特征进行升维。特征交叉是一个非常好用的特征升维方法。例如,将 x=〖[x_1,x_2]〗^T 升维至 x=〖[x_1,x_2,x_1 x_2]〗^T,就可以解决异或问题。
然而,在真实的场景中,直接使用特征交叉会面临以下困难。
一般来说,特征维度有成千上万维,如果人工进行特征交叉,是不太容易把所有需要的交叉特征都找出来的,并且很多交叉特征并不是我们能想象出来的。因此,只能以穷举的方式对所有的特征进行两两交叉。例如,6维特征的交叉特征有 C_6^2=15 维。再如,在实际场景中并不算高的1000维特征,有 C_1000^2=499500 维的交叉特征。如此规模的特征,会给存储和计算带来沉重的负担并造成维数灾难(将在5.4节介绍)。
对于交叉后的高维特征,很多交叉特征非常稀疏,甚至在训练集里从未出现过(例如交叉项 x_i x_j=0、x_j=1 和 x_j=1 在训练样本中从未同时出现)。这时,特征所对应的系数 w_(i,j) 在使用梯度下降法时不会更新,w_(i,j) 永远都是一开始的随机值。但是,一旦在真实的生产环境中上线使用,只要有交叉特征出现(x_i x_j=1),w_(i,j) x_i x_j=w_(i,j) 就是一个随机数,相当于给模型注入了噪声。
待学习的特征系数 w_(i,j) 有上百万个。在