在机器学习项目中,我们提取出特征之后,进行建模分类回归,可能会发现效果比较差,这很有可能是在既有地特征空间这些样本的可分性较差,比如我们使用线性模型,但样本在既有特征空间是线性不可分的。这是我们可以采取组合特征的方法,让样本可分性提升。例如我们要对一堆方框进行分类,原来的特征有[Height,Width],我们可以将Height和Width进行相乘组合得到面积S,那么现在特征向量变为[Width,Height,S],这样做就将一阶特征变为了二阶特征,提高了特征的非线性表达能力,学术语叫做对非线性规律进行编码,这样做使得我们在不改变模型的前提下便可学习到非线性信息,会有助于我们进行分类。除了特征两两相乘,还有其他的合成方法,见下文。
合成特征的方法
- 将一个特征与其本身或其他特征相乘(称为特征组合)
- 两个特征相除
- 对连续特征进行分桶,以分为多个区间分箱,然后进行离散形式的组合。
特征相乘
其中特征相乘有很多种形式,可以是特征自身与自身相乘,也可以是与其他若干个特征相乘。
特征分桶
特征分桶是根据特征值进行区间分割,然后离散化。比如年龄,
1——20岁 -> [1, 0, 0]
21——40岁 -> [0, 1, 0]
41——60岁 -> [0, 0, 1]
性别:
男 -> [1, 0]
女 -> [0, 1]
类似于独热编码,然后对特征进行组合,组合之后依然还是独热编码。通过这种两两组合,衍生出大量的特征,增强了表征能力和泛化能力。
如何处理高维组合特征
经过以上几种方法进行特征组合之后,我们会得到一个很高维的特征矩阵,直接处理会带来很大的计算负担,我们可以采取降维,矩阵分解或者特征筛选的方法得到具备绝大部分信息的几个特征进行训练。