Part4 线性模型
1. 线性回归
- 线性回归采用最小二乘法作为代价函数,需要符合最小二乘法使用的基本假设,违背基本假设时,普通最小二乘法估计量不再是最小线性无偏估计量,但是还是无偏的
- 正规方程法中如果XTX不可逆,两种解决方案:删除数据中多余的特征(即特征之间存在相关性);删除部分特征数据使特征数小于样本数
2.逻辑回归
-
当逻辑回归仍采用线性回归的代价函数时,即仍用MSE表征,定义为J(θ)=m1∑i=1m21(hθ(x(i)−y(i))2,其中hθ(x)=sigmoid(θTX),所得到的代价函数将是一个非凸函数,影响用梯度下降法求最小值,因此选用交叉熵损失函数
-
利用梯度下降法求解代价函数的推导公式

-
两种角度考虑逻辑回归的代价函数:
- 极大似然估计

-
多分类问题的逻辑回归
softmax的推导过程:
lnP(Yi=1)=β1Xi−lnZ
lnP(Yi=2)=β2Xi−lnZ
lnP(Yi=3)=β3Xi−lnZ
lnP(Yi=K)=βKXi−lnZ
这里的lnZ为一个常数,能够保证ΣP(i)=1,将两边指数化,可得
P(Yi=k)=Z1eβkXi
则有
Z=∑eβkXi
代入上式则有:
P(Yi=c)=∑k=1Keβk⋅Xieβc⋅xi
记βc⋅xi=zc,则上式就变为了:
P(y=i)=∑k=1Kezkezi
softmax的损失函数
softmax的损失函数常用对数似然代价函数,具体如下:
Loss=−i∑tilnyi
ti代表第i个样本的分类,当第i个样本分类为k时,有:ti=1当i=k,ti=0当i不等于k

综上,softmax的求导可为:yi−ti
3. 正则化
为了避免过拟合,无论是逻辑回归还是线性模型都采用加入正则化项,当加入L2范数时,得到的线性模型成为岭回归,采用L1范数时得到LASSO回归,无论是L1范数还是L2范数,都将有助于降低过拟合的风险,但同时,L1范数更容易获得稀疏解(即求得的参数中有更少的非零分量)可用于进行特征选择
为什么L1更容易获得稀疏解,如上图所示,假设输入变量为只有两个,即在y=ωx+b中ω只有两个,我们写出对应的Lasso回归和岭回归的表达式:
LASSO:
argminω∑i=1m(yi−ωTxi)2+λ∣ω∣
Ridge:
argminω∑i=1m(yi−ωTxi)2+λω2
由Lagrange乘数法,对于Lasso,即为求下面的条件极值:
argminωi=1∑m(yi−ωTxi)2
s.t.∣∣ω∣∣<=C
对于Ridge同理,于是我们将∣∣ω∣∣<=C,ω2<=C以及广义cost function的等值线绘制在坐标轴中如下
若最优解不在凸函数的边界取到,则一定在凸函数的内部取到,此时加不加正则化也没啥意义,但是实际情况中,最优解往往在正则化边界处渠道,此时,在所有的解中,L1范数更有可能与目标函数相交于坐标轴线上,L2范数不可能与目标函数交于坐标轴线上,使得产生的解不具有稀疏性
总的来说,一般在特征选择的时候选用L1范数,在要正则化的时候选择L2范数,其实L1也能正则化,但是实际情况为什么经常采用L2范数呢,我想可能跟L1范数不是处处可导有关
此外,在深度学习中的权重衰减也是指的L2正则化
4. FM,FFM,DeepFM
在做这些事情之前,首要做的就是One-Hot编码
LR&PLOY2
LR优点是简单高效,缺点也很明显,它太简单,视特征空间内特征之间彼此独立,没有任何交叉或者组合关系,这与实际不符合,因此PLOY2通过特征的二项式组合建模,PLOY2的函数如下
f(x)=w0+i=1∑nwixi+j1=1∑nj2=j1+1∑nwh(j1,j2)xj1xj2
PLOY2有一个明显的问题,就是在实际场景中,大部分特征都是稀疏的,即大部分特征值为0
FM与embedding
因此,FM就是解决稀疏数据下的特征组合问题
对于每个特征i来说,认为其有一个隐向量vi(k⋅1),其中k为超参数,则PLOY2中的wij=viT⋅vj,则FM的表达式为
y^(x)=w0+i=1∑nwixi+i=1∑nj=i+1∑n(vi⋅vj)xixj
注意:在强调一遍,这里面所涉及的特征,都是One-Hot编码后的特征
举例说明:
训练集如下:
数据集 |
Clicked? |
Publisher |
Advertiser |
训练集 |
1 |
NBC |
Nike |
训练集 |
0 |
EPSN |
Adidas |
测试集如下:
数据集 |
Clicked? |
Publisher |
Advertiser |
测试集 |
? |
NBC |
Adidas |
首先要做的就是先把Publisher和Advertiser的特征One-Hot编码,如下:
数据集 |
Clicked? |
NBC |
ESPN |
Nike |
Adidas |
训练集 |
1 |
1 |
0 |
1 |
0 |
训练集 |
0 |
0 |
1 |
0 |
1 |
则四个特征分别是NBC,ESPN,Nike,Adidas,对于第一个训练样本,FM参数变为VNBC⋅VNike,因为其他的都是0,只有xNBC⋅xNike=1,对于第二个训练样本,FM参数变为VEPSN⋅VAdidas,同理,因为只有ESPN和Adidas相乘不为0,根据训练集,上述训练集,我们训练得到VNBC,VEPSN,VAdidas,VNike,然后在测试集上,FM参数只有VNBC⋅VAdidas
则我们的任务就是,根据所有的训练集,求出所有特征的因变量vi,以及特征的系数wi和常数w0,共kn+n+1个变量。紧接着将训练得到的参数用于测试集,计算y
计算复杂度分析:
直接来看FM的复杂度为O(kn2),对FM的表达式进行优化,可将复杂度降至O(kn)

FM的性能度量方法
注意,FM只是针对于原来的f(x)=w0+∑i=1nwixi进行优化的,将FM应用于分类问题时,采用的依然是y=1+exp(−f(x))1,把其中的f(x)换为FM的表达式就好
对于回归问题
Loss=(y^(x)−y)2
对于分类问题
Loss=log(1+e−yy^(x))
embedding
继续来看fm,我们重新给定义,当特征没有被onehot时,我们称之为field,当onehot之后我们称之为feature,现在我们输入的样本假设有d个field,离散化成了n个feature,对于每个feature,在做特征组合的时候,都有一个隐向量vi(k⋅1),假设di的field离散化后有u个feature,则我们将这u个隐向量转置然后拼起来,可以构成一个u×k的矩阵,我们现在只考虑di的特征,当有m个样本经过的时候(注意,这是离散过后的特征)样本矩阵可以写成X(m×u),我们让他经过这个u×k的矩阵,就变为了m×k,这就是embedding过程
embedding的本质是实现稀疏特征从高维降低到低维的转变,也就是说在实际业务中u远大于k,embedding的意义:
- 稀疏矩阵在学习过程中会产生种种问题,特别是深度学习稀疏矩阵直接输入会造成部分权值不被更新,embedding起到了一个保证输入稠密的一个作用
- 另外在onehot的高维空间上,部分label之间的关系并没有很好的表整出来,比如说对于一句话来讲,我们对每个单词onehot然后放到高维空间里面,那么good和best的距离和good和bad的距离是一样的,不利于我们进行距离度量,而embedding将其映射到低维缓解了这个问题
注意,并不是只有离散特征有embedding方法,连续特征也有,不过连续特征的embedding就是他原来的特征,把每个值直接丢到新的空间维度就好
最后我们看一下fm的结构图

我们看到倒数第二层就是embedding层,最底层到第二层的黑线代表了f(x)=w0+∑i=1nwixi前面的部分,简单粗暴,红线就代表了把embedding之后的和别的做融合,就是fm结构∑i=1n∑j=i+1n(vi⋅vj)xixj
deepFM

deepfm就是把fm和dnn给融合在一起了,上面介绍了fm的结构,这是dnn的结构,可以看到这是一个三层dnn,一个embedding,两个隐层,dnn的目的就是为了学习高阶的组合特征,可以看到,从embedding到第一层hidden layer的时候,不仅特征间有交叉,特征内也有交叉,dnn和fm,一个低阶组合特征一个高阶组合特征,两个一起相当于完成了大部分特征工程的工作
我们看一下deepfm的架构吧
[外链图片转存失败(img-cHWxeJOo-1567221700049)(https://www.hrwhisper.me/wp-content/uploads/2018/07/deep-fm.png)]
其实deepfm并不是唯一的处理特征组合的模型,剩下的还有很多,wide&deep,pnn,fnn,回头再推荐系统的时候一并讲一下
FFM
在FM中,我们认为,各个特征组合组合的时候,隐变量是保持不变的,事实上并不全是,FFM就是考虑Field-FM,大致意思是认为,对于不同类型的特征,他们组合的时候隐向量是会变化的,太绕了举个例子:
数据集 |
Clicked? |
Publisher |
Advertiser |
Gender |
训练集 |
1 |
NBC |
Nike |
Men |
训练集 |
0 |
EPSN |
Adidas |
Women |
再加一个性别特征,OneHot一下
数据集 |
Clicked? |
NBC |
ESPN |
Nike |
Adidas |
Men |
Women |
训练集 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
训练集 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
在训练样本1中,FM所考虑的隐向量为:
VNBC⋅VNike+VNike⋅VMen+VNBC⋅VMen
而事实上,与Advertiser类别特征相乘的VNBC和与Gender类别相乘的VNBC不一定是相等的,FFM考虑了这种与不同类型(Field)特征组合的隐变量不相等问题
FFM所考虑的隐向量为:
P×AVNBC,A⋅wNike,P+A×GVNike,G⋅VMen,A+P×GVNBC,G⋅VMen,P
注意,FFM考虑的是隐向量在field之间的差异,field就是没有做onehot之前的特征,也就是说,VNBC,G无论是和VMen,P还是和VWomen,P相乘都取的是一个值。
FFM的表达式为
y(x)=w0+i=1∑dwixi+i=1∑nj=i+1∑n(wi,fj⋅wj,fi)xixj(3-1)
就是没有做onehot之前的特征,也就是说,VNBC,G无论是和VMen,P还是和VWomen,P相乘都取的是一个值。
FFM的表达式为
y(x)=w0+i=1∑dwixi+i=1∑nj=i+1∑n(wi,fj⋅wj,fi)xixj(3-1)
变量的个数:1+n+kn(d-1),n代表onehot后特征的个数,d代表onehot前特征的个数