百面机器学习
1. 特征工程
在机器学习中,数据和特征是“米”,模型和算法是“巧妇”。
特征工程,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。
实际工 作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高的特征以刻画求解的问题和预测模型之间的关系。
1.1. 特征归一化/正则化(Normalization)
消除数据特征之间的量纲影响,使得不同指标之间具有可比性。使各指标处于同一个数值量级,以便进行分析。
为什么要对数值类型的特征做归一化?常见的归一化有哪些方式?
对数值类型的特征做归一化可以将所有的特征统一到一个大致相同的数值区间内,常用的方法主要有以下两种:
- 线性函数归一化(Min-Max Scaling)
对原始数据映射到
- 零值归一化(Z-Score Normalization)
将原始数据映射到均值为0、标准差为1的分布上。
不同的特征如果取值范围不同,那么在学习速率相同的情况下,会出现更新速度不同的现象,需要迭代多次才能找到较优解。一般,需要通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但是,对于决策树模型则并不适用。比如C4.5,决策树在进行节点分裂时,主要依据数据集关于特征信息的增益比,这和特征是否经过归一化无关。因为归一化不会改变样本在特征上的信息增益。
1.2. 类别型特征(Categorical Feature)
主要指性别(男、女),血型(A、B、AB、O)等只在有限选项内取值的特征。 原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,一般类别特征必须转换成数值型特征才能正确工作。
主要的方式包括:
- 序号编码(Ordinal Encoding)
- 独热变化(One-hot Encoding)
- 二进制编码(Binary Encoding)
在对数据进行预处理时,应该怎样处理类别型特征?
- 序号编码
通常用于处理类别间具有大小关系的数据。按照大小关系对类别特征赋予一个数值ID,转换后依然保留大小关系。
- 独热编码
通常用于处理类别间不由有大小关系的特征。需要注意的是:
- 使用稀疏向量来节省空间。
- 配合特征选择来降低维度。
高维空间下两点之间的距离很难得到有效地衡量,在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易过拟合。通常只有部分维度对分类、预测有帮助。
- 二进制编码
利用二进制对ID 进行哈希映射,且维度少于独热编码。
- 其他编码方式
- Helmert Constrast
- Sum Constrast
- Polynomial Constrast
- Backward Difference Constrast
1.3. 高维组合特征的处理
为了提高复杂关系的拟合能力,在特征工程中,经常会把一阶离散特征两两组合,构 成高阶组合特征。
的维度等于 ,这对于高维参数几乎无法学习,这种情况下,一种方法是,将用户和物品分别用维的低维向量表示,这样 ,等价于矩阵分解。