? Index
- 特征归一化
- 类别特征处理
- 高维组合的处理
- 文本表示模型
- Word2Vec
- 图像数据不足的处理
? 特征归一化
为了消除不同数据特征之间的量纲影响,我们需要对数据特征进行归一化处理,使得不同指标之间有一定的可比性。常用的归一化方法有:
- 线性函数归一化(Min-Max Scaling):对数据进行线性变换,使之映射到0~1之内,其公式为:
- 零均值归一化(Z-Score Normalization):对数据进行转换映射到均值为0,标准差为1的分布上。
那么,特征归一化的原因是什么呢?一般可以参考下面的随机梯度下降的例子:
其中,上图中X1的取值范围为[0, 10],X2的取值范围为[0, 3],当不做任何数据归一化处理的时候,在学习率相同的情况下,X1的更新速度会大于X2,需要较多次的迭代才会找到最优解,就如左图所示。相反如果归一化后,则会像右图一样,更加容易找到最优解。
所以,我们可以得出一种常见的结论,就是 通过梯度下降法求解的模型一般都是需要特征归一化的,如线性回归、逻辑回归、支持向量机、神经网络等等。
? 类别特征处理
类别变量,又叫Categorical Feature,比如性别、教育水平之类的,一般模型都是无法直接用这些变量的,都需要经过一些转换,一般常用的方法如下:
- 序号编码(Ordinal Encoding):通过用来处理有序变量,如成绩,可以分为高分、中等、低分,可以按照高分>中等>低分的顺序来进行编码。
- 独热编码(One-hot Encoding):通过用来处理类别间没有大小关系的特征,如血型,比如A、B、O、AB,通过独热编码可以变成一个4维稀疏向量,A(1,0,0,0)、B(0,1,0,0)、O(0,0,1,0)、AB(0,0,0,1)。但是,一般如果遇到了类别特别多的类别变量,如城市,可就要注意: 1)利用稀疏向量来作为输入,从而节省空间; 2)配合特征选择降低维度。因为高维度特征在K-means算法中会很难衡量距离,在逻辑回归中很容易出现过拟合现象。
- 二进制编码(Binary Encoding):二进制编码主要分两步,先用序号编码给每个类别赋予新的类别ID,然后对类别ID进行二进制编码,还是血型A、B、O、AB,分别赋予为1,2,3,4,对应的二进制为001、010、011、100,其相比于独热编码还是可以节省一些空间。
? 高维组合的处理
高维组合指的就是变量组合与衍生,如近6个月金融类产品的使用次数(时间 产品类别),当交叉维度特别大的时候,则几乎没法训练模型。所以很多时候我们都是需要向低维度去分解,比如mxn规模的参数,可以分别用k维的低维度向量表示(k<<m, k<<n)。
而且,并不是所有的特征组合都有意义,盲目地去组合会出现参数过多,过拟合的情况,所以我们需要一个方法去有效地找到组合特征,一般常用地有基于决策树的特征组合寻找方法,从根节点出发到叶子节点的每一条路径都是一种特征组合,那如何构建有效的决策树?一般用梯度提升决策树,就是每次都在之前构建的决策树的残差上构建下一棵决策树。
? 文本表示模型
文本在机器学习领域是一个十分常见的非结构化数据,如何表示文本数据是十分重要的研究领域,常见的概念有:
- 词袋模型(Bag of Words):指的是将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映了这个词语在原文章中的重要程度。 权重TF-IDF(Term Frequency-Inverse Document Frequency)的计算公式:
- IDF(t) 为逆文档频率,用来衡量单词t对表达语义所起的重要性,如果一个词在非常多的文章中都出现过,那么它可能是一个比较通用的词,那么贡献会较小,权重需要做惩罚。
- N-gram模型:将连续出现的n个词(n<=N)组成的词组(N-gram)作为一个单独的特征放到向量表示中去构成模型。另外,同一个词可能有多种词性变化,所以一般会对单词进行词干抽取(Word Stemming),统一为同一词干的形式。
- 主题模型(Topic Model):用于从文本库中发现有代表性的主题,并且能够计算出每篇文章的主题分布。
- 词嵌入模型(Word Embedding):词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低维空间(通常K = 50~300)上的一个稠密向量(Dense Vector)。
? Word2Vec
Word2Vec上Google在2013年提出的词嵌入模型,其实就是一种浅层的神经网络模型,有两种网络结构:CBOW(Continues Bag of Word) 和 Skip-gram,都可以表示为由输入层(Input)、映射层(Projection)和输出层(Output)组成的神经网络。
CBOW(Continues Bag of Word)
根据上下文出现的词语来预测当前词语的生成概率。
Skip-gram
根据当前词语来预测上下文中各个词语的生成概率。
输入层
每个词都由独热编码方式表示,即所有词均表示为一个N维向量,其中N为词汇表中单词的总数,在向量中,每个词都将与之对应的维度置为1,其余维度的值均设为0。
映射层
又被叫做隐含层,K个隐含单元的取值可以由N维输入向量以及连接输入和隐含单元之间的NxK维 权重矩阵计算得到,在CBOW中,还需要将各个输入词所计算出的隐含单位求和。
输出层
通过隐含层向量(K维),以及连接隐含层和输出层之间的KxN维的权重矩阵计算得到,输出层是一个N维向量,每维与词汇表中的一个单词相对应,最后对输出层向量应用Softmax激活函数,可以计算出每个单词的生成概率。
Softmax公式:(其中X代表N维的原始输出向量,Xn为在原始输出向量中,与单词Wn所对应维度的取值。
? 图像数据不足的处理
一个模型所能提供的信息一般由两个来源:
- 训练数据中所蕴含的信息
- 人们提供的先验信息
一般,当你的图像数据不足的时候,可能会出现的情况就是模型过拟合,一般过拟合的处理办法有两种:
- 基于模型的方法: 采用降低过拟合风险的措施,如简化模型、添加正则项、boosting、Dropout超参数等等;
- 基于数据的方法:主要包括数据扩充(Data Augmentation),即根据一些先验知识,在保持特定信息的前提下对原始数据进行适当变换,因此,对于图像,我们可以有下面的方法去进行变换。
- 一定程度内的随机旋转、平移、缩放、裁剪、填充、左右翻转;
- 对图像中的像素添加噪声,如椒盐噪声、高斯白噪声;
- 颜色变换;
- 改变图像的亮度、清晰度、对比度、锐度等等。