逻辑回归需要注意正则化问题,\(L_1\)正则(又称LASSO)假设模型参数满足拉普拉斯分布,\(L_2\)正则(又称RIDGE)假设模型参数满足高斯分布。参见:变量的选择——Lasso&Ridge&ElasticNet,线性回归中的抗过拟
逻辑回归练习题,参见:10道题带你了解逻辑回归模型
逻辑回归是有监督机器学习算法,训练时需要输入变量X和目标变量Y。
逻辑回归是分类算法。
能否用神经网络设计一个逻辑回归算法?
答:可以,神经网络是一个通用的逼近算法,所以它可以实现逻辑回归。
逻辑回归中可以用哪种方法来调整数据?
答:逻辑回归使用最大似然估计来训练回归模型。
类似于线性回归的R-squared,判断逻辑回归表现的一个方法是AIC,那么AIC的值是越大越好还是越小越好?
答:AIC最小的逻辑回归模型最佳。
在训练逻辑回归模型之前,对特征进行标准化是必须的吗?
答:非必须,特征标准化的主要目的是实现模型的最优化。
哪种算法可以用于逻辑回归的变量选择?
答:LASSO,RIDGE等。
因子分解机(Factorization Machine, FM)逻辑回归无法学习到特征间的组合关系,而特征组合关系在推荐中是比较常见的。例如,同一个用户在不同时间或地点感兴趣的广告是不同的,在这里就需要对表征用户的特征,表征时间的特征,表征地点的特征进行组合,以获得较好的预测。利用模型做特征组合,可以使用支持向量机的核函数来实现特征之间的交叉,但是多项式核函数的问题在于二次参数过多,设特征维数为\(n\),则二次项的参数数目为\(\frac{n(n+1)}{2}\),增加模型复杂度并且获得的特征矩阵十分稀疏,降低模型表现。因子分解机及场感知因子分解机能够自动做特征组合,并且算法效率较高。
前置知识
向量点乘
向量点乘输出标量,运算的数学表示:\(<·,·>\)
\[
<v_i,v_j>=\sum_{f=1}^kv_{i,f}·v_{j,f}
\]
因子分解机原理
因子分解机要求二次项参数矩阵是低秩的,并且能够分解为低秩矩阵的乘积。所有二次项参数矩阵\(W\)可分解为\(W=V^TV\),\(V\)的第j列对应\(X\)的第j维特征为二次项参数矩阵贡献的向量,换言之,\(w_{ij}=<v_i,v_j>\)就是因子分解机的核心思想,其将巨大的二次项参数矩阵分解为较小的矩阵:
\[
\phi_{FM}(w,x)=w_0+\sum_{i=0}^nw_ix_i+\sum_{i=1}^n\sum_{j=i+1}^n<v_i,v_j>x_ix_j
\]
其中,n是样本维度(对离散特征进行onehot等操作后的特征维度);\(x_i\)表示第i个特征(如果是离散特征,那么onehot后只有一个维度值为1,其余维度为0,在这种情况下\(x_i\)的值通常是0或1;而对于一般的连续型特征,\(x_i\)是经过归一化或离散后的数值),注意到:在数据稀疏情况下,同时满足\(x_i\)和\(x_j\)都不为0的情况很少,如果不进行矩阵分解,\(x_ix_j\)的系数很难训练;参数\(w_0\in \mathbb{R},w\in \mathbb{R}^n,V\in \mathbb{R}^{n×k}\),\(v_i\)是i维特征的权重向量,该隐向量长度为k,\(k\in \mathbb{N}^+\)是因子分解机的超参数(一般设置在100以内,且\(k\ll n\)) ,\(v_i=(v_{i1},v_{i2},...,v_{ik})\),用内积结果\(<v_i,v_j>\)来表示\(x_ix_j\)的系数:
\[
V=\begin{pmatrix}
v_{11} & v_{12} & ... & v_{1k}\\
v_{21} & v_{22} & ... & v_{2k}\\
... & ... & ... & ...\\
v_{n1} & v_{n2} & ... & v_{nk}
\end{pmatrix}_{n×k}=
\begin{pmatrix}
v_1\\
v_2\\
...\\
v_n
\end{pmatrix}
\]
实际上,\(v_i\)可以理解为特征分量\(x_i\)的另一种表示形式,类似于词向量的表示形式。词向量中将一个单词转化为向量表示形式,单词是固定的,因此一个单词对应一个词向量;而在因子分解机中,将一个类别特征(onehot之前的特征)转化为一个向量,由于该类别特征可以有多个取值,并且每种取值对应一个向量,也即上述将类别特征进行onehot之后,每一个特征分量\(x_i\)会对应一个\(v_i\)。因此,因子分解机确实将类别特征转化为向量形式,只不过向量会根据特征的取值发生变化。
此时,二次项组合参数就可以被分解为:
\[
W=VV^T=\begin{pmatrix}
v_1\\
v_2\\
...\\
v_n
\end{pmatrix}\begin{pmatrix}
v_1^T
,v_2^T,
...,
v_n^T
\end{pmatrix}
\]
将组合参数进行分解的优势:
从原先要求的\(\frac{n(n-1)}{2}\)个组合参数变成了求矩阵\(V\),参数数量降低为\(nk\),其中k一般远小于n
削弱高阶参数间的独立性。k越大,对特征分量的表征能力越强,高阶参数间独立性越强,模型越精细;k越小,模型泛化能力越强