特征工程

Q1 数据预处理主要包括什么

  1. 无量纲化

无量纲化主要解决数据的量纲不同的问题,使不同的数据转换到同一规格,常见的方法有标准化区间缩放法。标准化的假设前提是特征值服从正态分布。区间放缩法利用了边界值信息,将特征的取值区间缩放到某个特点的范围,列如[0,1]等。

(1) 标准化

理论上,标准化适用于服从正态分布的数据,目前很多工程都依赖大数据,所以在样本足够多的情况下,工程师往往直接使用标准化对数据进行无量纲化预处理,在深度学习中,将数据标准化能够保证有更好的收敛。如果不进行数据标准化,有些特征将会对损失函数影响很大,使得其他值比较小的特征重要性降低

(2)归一化/区间缩放法

归一化适用于数据量较小的工程。顾名思义就是利用两个最值进行缩放。公式为(x-min)/(max-min)

2.哑编码与独热编码

如果某一列数据是一些特征,比如国家名称,那就没有办法应用到回归或者分类里,所以需要对数据进行哑编码或者独热编码。

哑编码与独热编码的区别主要是哑编码祛除了一个状态位。

例如:假设在中国、德国、法国、美国四种可能的取值,独热编码就是用每个维度表达一个国家,比如中国为1,0,0,0。而哑编码只需要三个状态位,如其他都为0则中国必为1.

3.缺失值补充

缺失值最常用的就是均值、就近补齐、K最近距离填充等方法。特别需要注意的是,有的时候缺失值也是一种特征。

应当分为三种情况:

当缺失值过多时:应当舍弃这个特征。

当缺失值适中时:应当将填充值当成一种特征

当缺失值较少时:可以考虑进行填充

填充的常用策略:

  1. 用一个异常值填充并将缺失值作为一个特征处理
  2. 用均值或者条件均值填充,如果数据是不平衡的,那么应该使用条件均值填充,条件均值指的是与缺失值所属标签相同的所有数据的均值。
  3. 用相邻数据填充
  4. 利用插值算法
  5. 数据拟合,将缺失值当成一种预测来处理

Q2 特征选择主要包括什么

特征选择是非常关键的步骤,选入大量的特征不仅会降低模型效果,也会耗费大量的计算时间,而漏选的特征也会直接影响到最终的模型结果。一般情况下主要利用以下办法进行特征选择。

1.方差选择法

假如某列特征变化一直很平缓,所以说明这组特征对预测结果影响不大,所以应该计算出各个特征的方差选择方差大于自身阈值的特征。

2.相关系数,统计检验

相关系数或者统计检验都可以用来特征选择。

3.互信息法

互信息法也经常用来评价自变量对因变量的相关性。

4.基于机器学习的特征选择法

主要是针对特征和响应变量建立预测模型,例如用基于树的方法(决策树,随机森林,GDBT),或者扩展的线性模型。

Q3 特征降维主要包括什么

  1. 主成分分析法(PCA)

PCA是一个将数据变换到一个新的坐标系统中的线性变换,使得任何数据的投影的第一大方差在第一个坐标(第一主成分)上,第二大方差在第二个坐标(第二主成分)上,以此类推。

其作用只要是为了让映射后得到的向量具有最大的不相关性。就是说PCA追求的是再将位置后能够最大化保持数据的内在信息。

  1. 线性判别分析法(LDA)

LDA是一种有监督的降维方法,主要是将高维的模式样本投影到最佳鉴别空间。

其作用是投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即同类的数据点尽可能地接近,而不同类的数据点尽可能地分开。

LDA和PCA的区别是一个很重要的知识点,他们主要有以下区别。

​ (1)LDA是有监督的降维方法,而PCA是无监督的。

​ (2)LDA降维最多降到类别数k-1的维数,而PCA没有限制。

​ (3)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

  1. 局部线性嵌入(LLE)

    局部线性嵌入算法认为每个数据点可以由其近邻点的线性加权组合构造得到,能够使得降维后的数据较好地保持原有流行结构。

    在真实工业场景中,局部线性嵌入用的较少

    Q4 特征构造主要包括什么

    特征构造主要是针对具体的项目属性,数据特点来构造出可能的重要特征。特征构造是非常关键的步骤,对模型效果的提升帮助巨大。下面举三个例子:

    预测某商场未来的销售量,是不是周末就是很重要的特征。

    客户关系中,消费间隔时长,消费频率,消费金额就是很重要的指标。

    预测交通流量中,是不是早晚高峰时期、道路宽度等是非常重要的特征。

过拟合、欠拟合与正则化

Q1 过拟合与欠拟合的区别是什么,什么是正则化

欠拟合指的是模型不能够再训练集上获得足够低的训练误差,往往由于特征维度过少,导致拟合的函数无法满足训练集,导致误差较大。

过拟合指的是模型训练误差与测试误差之间差距过大;具体来说就是模型在训练集上训练过度,导致泛化能力过差。

所有为了减少测试误差的策略统称为正则化方法,不过代价可能是增大训练误差。

Q2 解决欠拟合的方法有哪些

降低欠拟合风险主要有以下3类方法。

1) 加入新的特征,对于深度学习来讲就可以利用因子分解机、子编码器等。

2) 增加模型复杂度,对于线性模型来说可以增加高次项,对于深度学习来讲可以增加网络层数、神经元个数。

3) 减小正则化项的系数,从而提高模型的学习能力。

Q3 防止过拟合的方法主要有哪些

1.正则化

正则化包含L1正则化、L2正则化、混合L1与L2正则化。

L1正则化目的是减少参数的绝对值总和,定义为:

L2正则化目的是减少参数平方的总和,定义为:

混合L1与L2正则化是希望能够调节L1正则化与L2正则化,定义为:

因为最优的参数值很大概率出现在坐标轴上,这样就会导致某一维的权重为0,产生稀疏权重矩阵。而L2正则化的最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。

所以由于L1正则化导致参数趋近于0,因此它常用于特征选择设置中。而机器学习中最常用的正则化方法是对权重施加L2范数约束

L1正则化与L2正则化还有个重要区别就是L1正则化可通过假设权重w的先验分布为拉普拉斯分布,由最大后验概率估计导出。L2正则化可通过假设权重w的先验分布为高斯分布,由最大后验概率估计导出。

2.Batch Normalization

Batch Normalization是一种深度学习中减少泛化误差的正则化方法,主要是通过缓解梯度下降加速网络的训练,防止过拟合,降低了参数初始化的要求。

由于训练数据与测试数据分布不同会降低模型的泛化能力。因此,应该在开始训练前对数据进行归一化处理。因为神经网络每层的参数不同,每一批数据的分布也会改变,从而导致每次迭代都会去拟合不同的数据分布,增大过拟合的风险。

Batch Normalization会针对每一批数据在输入前进行归一化处理,目的是为了使得输入数据均值为0,标准差为1。这样就能将数据限制在统一的分布下。

3.Dropout

Dropout是避免神经网络过拟合的技巧来实现的。Dropout并不会改变网络,他会对神经元做随机删减,从而使得网络复杂度降低,有效的防止过拟合。

具体表现为:每一次迭代都删除一部分隐层单元,直至训练结束。

运用Dropout相当于训练了非常多的仅有部分隐层单元的神经网络,每个网络都会给出一个结果,随着训练的进行,大部分网络都会给出正确的结果。

4.迭代截断

迭代截断主要是在迭代中记录准确值,当达到最佳准确率的时候就截断训练。

5.交叉验证

K-flod交叉验证是把训练样本分成k份,在验证时,依次选取每一份样本作为验证集,每次实验中,使用此过程在验证集合上取得最佳性能的迭代次数,并选择恰当的参数。