一、特征归一化
1.1 目的
- 消除数据特征之间的量纲影响,使得不同指标之间有可比性(使得个指标处于同一数量级)
-
1.2 归一化方法
1.2.1 线性函数归一化(Min-Max Scaling)
对原始数据进行线性变换,使得结果映射到[0,1]的范围,实现对原始数据表的等比缩放。
归一化格式如下:
其中X为原始数据,,
分别为数据最大值和最小值
1.2.2 零均值归一化(Z-Score Normalization)
将原始数据映射到均值为0,标准差为1的分布上。假设原始特征的均值为
,标准差为
,那么归一化格式定义为:
1.3 总结
在实际应用中,通过梯度下降法求解的模型通常需要归一化,包括线性回归,逻辑回归,支持向量机,神经网络等模型。
但不适用于决策树模型,因为决策树进行结点分裂时主要依据数据集D关于特征x的信息增益比,而信息增益比根特征是否归一化无关,因为归一化不会改变样本在特征上的信息增益。二、类别型特征
类别型特征(Categorical Feature)主要指性别(男,女),血腥(A,B,AB,O)等只有在有限选项内取值的特征。类别型特征原始输入通常是字符串形式,除了决策树等少数模型能处理字符串形式的输入,对于逻辑回归,支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。
2.1 序号编码
序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为低,中,高三挡,并且存在“高>中>低”的排序关系。
序号编码会按照大小关系对类别性特征赋予一个数值ID,例如高表示为3、中表示为2,低表示为1,转换后依然保留了大小关系。2.2 独热编码
独热编码通常用于处理类备件不具有大小关系的特征。例如血型,一共有四个取值(A,B,AB,O),独热编码会把血型变成一个4维稀疏向量,A型:(1,0,0,0),B型:(0,1,0,0),AB型:(0,0,1,0),O型:(0,0,0,1)
当类别较多时,注意一下问题: 使用稀疏向量来节省空间。假设v = [ 0 , 0 , 0 , 1 , 0 , 0 , 1 ] 稀疏向量表示为( 7 , [ 3 , 6 ] , [ 1 , 1 ] ),7代表长度,[3,6]代表非零元素下标,[1,1]代表非零元素的值。
- 配合特征选择来降低维度,高维度特征会带来一下问题:
- 先用序号编码给每个类别赋予一个类别ID
- 对类别ID进行对应的二进制编码
如血型(A,B,AB,O),先用序号给每个类别一个ID,A:1,B:2,AB:3,O:4,再将ID用二进制表示:
| 类别 | ID | 二进制表示 |
|---|---|---|
| A | 1 | 0 0 1 |
| B | 2 | 0 1 0 |
| AB | 3 | 0 1 1 |
| O | 4 | 1 0 0 |
二进制编码本质上是利用二进制对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了存储空间。
三.高维组合特征的处理
为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。
例如广告点击预估问题,原始数据由语言和类型两种离散特征组成,为了提高拟合能力,语言和类型可以组成二阶特征。
离散特征:
| 是否点击 | 语言 | 类型 |
|---|---|---|
| 0 | 中文 | 电影 |
| 1 | 英文 | 电影 |
| 1 | 中文 | 电视剧 |
| 0 | 英文 | 电视剧 |
组合特征:
| 是否点击 | 语言=中文 类型=电影 |
语言=英文 类型=电影 |
语言=中文 类型=电视剧 |
语言=英文 类型=电视剧 |
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 0 | 1 |
随着原始特征维数的增多,组合特征的维数会快速增长。
处理高维的组合特征一个有效的方式为:将原始特征使用低维向量表示(矩阵分解的思路)
四、组合特征
上面介绍了将离散特征两两组合来提高复杂关系的拟合能力,也介绍了降维的方法来减少参数量。但是当原始数据特征特别多的时候,就需要我们辨别一下哪些特征组合是有意义的。其中一种方式是基于决策树的特征组合寻找方法。
五、文本表示模型
文本是非结构化的数据,表示文本数据是机器学习领域的一个重点研究方向。常用方式有:
5.1 词袋模型
将文本以单词为单位切分开,每一维代表一个单词,文本就表示成了一个长向量。每一维有一个对应权重,表示这个词在文章中的重要程度,常用TF-IDF来计算权重:表示单词t在文档d中出现的频率。
是逆文档频率,衡量单词t对表达语义的重要性,表示如下:
可以理解为,如果t在很多文章中都出现了,那它可能是比较通用的词汇,对区分语义贡献较小,对其权重进行惩罚。
5.2 N-gram模型
词袋模型将每个单词进行划分,但对于”natural language processing”这样的词汇拆分开来与我们期望获取的语义信息大相径庭。所以采取将连续出现的n个词组成的词组作为一个单独的特征放在向量表示中,就构成了N-gram模型
由于同一词有词性变化,却具有相似的含义,在实际应用中,一般会对单词进行词干抽取(Word Stemming)处理,即将不同词性的单词统一称为同一词干的形式
5.3 主题模型
从文本库中发现有代表性的主题(得到每个主题上面词的分布特性),并且计算出每篇文章的主题分布
5.4 词嵌入与深度学习模型
词嵌入是将词向量化的模型的统称,核心思想是每个词都映射成低维空间(通常K=50~300)上的一个稠密向量。K维空间中的每一维可以看作一个隐含的主题。假设一篇文章有N个词,每个词映射成了K维向量,用矩阵N*K来表示这篇文章太过于底层,很难得到满意的效果。所以利用深度学习模型来提取高层特征。卷积神经网络和循环神经网络在文本表示中取得了很好的效果。
卷积神经网络和循环神经网络能够更好的对文本进行建模,抽取一些高层的语义特征。减少了网络中的待学习参数,提高了训练速度,并且降低了过拟合的风险
六、Word2Vec(待看)
谷歌2013年提出的Word2Vec是目前最常用的词嵌入模型之一。Word2Vec实际是一种浅层的神经网络,它具有两种网络结构,分别是CBOW(continues Bag of Words)和Skip-gram
七、图像数据不足时的处理方法
一种模型所能提供的信息一般来源于两个方面:
- 训练数据中的数据
- 模型生成过程中(构造,训练,推理),人们提供的先验数据
在图像分类中,训练数据不足会带来过拟合的问题(过拟合即模型在训练样本上的效果不错,但是在测试集上的泛化效果不佳)
解决办法:
- 基于模型的方法:
- 简化模型
- 添加约束项以缩小假设空间(如L1/L2正则项)
- 集成学习
- Dropout
- 基于数据的方法:
- 数据扩充(数据增强,根据一些先验知识,在保持特定信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果),图像中的方法包括:
- 一定程度内的随机旋转,平移,缩放,裁剪,填充,左右翻转
- 对像素添加噪声,比如椒盐噪声,高斯白噪声
- 颜色变换
- 改变亮度、清晰度、对比度、锐度等
- 除了在图像空间进行变换,还可以先提取图像特征,在特征空间进行变换。也可以使用生成模型生成一些样本。
- 迁移学习,在大规模数据集上 预训练好通用的模型,针对目标任务的小数据集上进行微调(fine-tune)。
