文章目录
百面机器学习Ⅰ 特征工程
1.特征归一化
为什么需要对数值类型的特征做归一化?
可以将所有的特征都统一到一个大致相同的数值区间内,消除数据特征之间的量纲影响,使得不同指标之间具有可比性。
特征归一化常用方法?
线性函数归一化(Min-Max Scaling):它对原始数据进行线性变换,使结果映射到[0, 1]的范围,实现对原始数据的等比缩放。
X
n
o
r
m
=
X
−
X
min
X
max
−
X
min
X_{norm}=\frac{X-X_{\min}}{X_{\max}-X_{\min}}
Xnorm=Xmax−XminX−Xmin
零均值归一化(Z-Score Normalization):它会将原始数据映射到均值为0、标准差为1的分布上。
X
n
o
r
m
=
X
−
X
min
X
max
−
X
min
X_{norm}=\frac{X-X_{\min}}{X_{\max}-X_{\min}}
Xnorm=Xmax−XminX−Xmin
什么时候需要特征归一化
通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型(归一化容易更快地通过梯度下降找到最优解)。
但对于决策树模型则并不适用,决策树在进行节点分裂时主要依据数据集D关于特征x的信息增益(比),归一化并不会改变样本在特征x上的信息增益。
2.类别型特征
在对数据进行预处理时,应该怎样处理类别型特征?
- 序号编码
序号编码通常用于处理类别间具有大小关系的数据。例如成绩分为低、中、高三档,高表示为3、中表示为2、低表示为1,转换后依然保留了大小关系。
- 独热编码
独热编码通常用于处理类别间不具有大小关系的特征。例如血型,一共有4个取值(A、B、AB、O),A型血表示为(1, 0, 0, 0),B型血表示为(0, 1, 0, 0),AB型表示为(0, 0, 1, 0),O型血表示为(0, 0, 0, 1)注意:
(1)使用稀疏向量来节省空间。
(2)配合特征选择来降低维度。
高维度特征会带来几方面的问题。一是在K近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题;三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。
- 二进制编码
先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。二进制编码本质上是利用二进制对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了存储空间。
3.高维组合特征的处理
什么是组合特征?
为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。
如何处理高维组合特征?
假设用户数量m 和物品数量n为组合特征,
X
n
o
r
m
=
X
−
X
min
X
max
−
X
min
X_{norm}=\frac{X-X_{\min}}{X_{\max}-X_{\min}}
Xnorm=Xmax−XminX−Xmin
那么学习的参数就是m×n,然而m和n 可能是千万级别的数量级。在这种情况下一种有效的方法就是对m,和n分别用k维的低纬向量来表示。那么学习的参数将从m×n,变成k×m+n×k.这等价于矩阵分解.
4.组合特征
怎样有效地找到组合特征?
可以用基于决策树的方法,从根节点都叶节点的每一条路径,都可以当作一种组合方式。
5.文本表示模型
有哪些文本表示模型?它们各有什么优缺点?
- 词袋模型(BOW,bag of words)
将整段文本以词为单位切分开,忽略每个词出现的顺序,每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映了这个词在原文章中的重要程度。常用TF-IDF来计算权重
词频(Term Frequency,TF):指的是某一个给定的词语在该文档中出现的频率。词w在文档d中出现的次数为count(w, d),文档d中总词数为size(d)。对词数进行归一化,以防止它偏向长的文件。
t
f
(
w
,
d
)
=
c
o
u
n
t
(
w
,
d
)
/
s
i
z
e
(
d
)
tf\left( w,d \right) =count\left( w,d \right) /size\left( d \right)
tf(w,d)=count(w,d)/size(d)
逆向文件频率(Inverse Document Frequency,IDF):是一个词语普遍重要性的度量。文档总数n,词w所出现文件数docs(w, D)
i
d
f
=
log
(
n
d
o
c
s
(
w
,
D
)
+
1
)
idf=\log \left( \frac{n}{docs\left( w,D \right) +1} \right)
idf=log(docs(w,D)+1n)
TF-IDF:某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语(“的”、“我”、“吗”等),保留重要的词语。文档d和由关键词w[1]…w[k]组成的查询串q。
t
f
−
i
d
f
(
q
,
d
)
=
∑
i
=
1
k
t
f
−
i
d
f
(
w
[
i
]
,
d
)
=
∑
i
=
1
n
t
f
(
w
[
i
]
,
d
)
⋅
i
d
f
(
w
[
i
]
)
tf-idf\left( q,d \right) =\sum_{i=1}^k{tf-idf\left( w\left[ i \right] ,d \right) =\sum_{i=1}^n{tf\left( w\left[ i \right] ,d \right) \cdot idf\left( w\left[ i \right] \right)}}
tf−idf(q,d)=i=1∑ktf−idf(w[i],d)=i=1∑ntf(w[i],d)⋅idf(w[i])
- n-gram模型
将文章进行单词级别的划分有时候并不是一种好的做法,比如natural language processing(自然语言处理)一词,如果将3个词拆分开来,所表达的含义大相径庭。通常,将连续出现的n个词(n≤N)组成的词组作为一个单独的特征放到向量表示中去。
Bi-gram :p(S)=p(w1w2⋯wn)=p(w1)p(w2∣w1)⋯p(wn∣wn−1)
Tri-gram:p(S)=p(w1w2⋯wn)=p(w1)p(w2∣w1)⋯p(wn∣wn−1wn−2)
具体可参考博客
https://blog.youkuaiyun.com/songbinxu/article/details/80209197
另外,同一个词可能有多种词性变化,却具有相似的含义。在实际应用中,一般会对单词进行词干抽取(Word Stemming)处理,即将不同词性的单词统一成为同一词干的形式。
- 主题模型
主题模型用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特性),并且能够计算出每篇文章的主题分布,具体细节参见第6章第5节。
- 词嵌入
词嵌入核心思想是将每个词都映射成低维空间(通常K=50~300维)上的一个稠密向量(Dense Vector)。这样模型不仅会得到更丰富的有关词语的信息,而且输入的维数还下降了。–Word2Vec是目前最常用的词嵌入模型之一,详见下节
- 深度学习模型
在实际应用中,如果仅仅把词嵌入矩阵作为原文本的表示特征输入到机器学习模型中,通常很难得到令人满意的结果。需要在此基础之上加工出更高层的特征。深度学习模型自动地进行特征工程的,模型中的每个隐层都可以认为对应着不同抽象层次的特征。与全连接的网络结构相比CNN和RNN一方面很好地抓住了文本的特性,另一方面又减少了网络中待学习的参数,提高了训练速度,并且降低了过拟合的风险。
6.Word2Vec
Word2Vec实际是一种浅层的神经网络模型
Word2Vec是如何工作的?

这部分参考
高永峰_GYF https://www.jianshu.com/p/e0f277b6a1b3
-
CBOW(Continuous Bag of Words)连续词袋模型 ,利用某个词语的上下文预测这个词语
输入层有8个神经元,输入8个词向量(one-hot),输出层有词汇表大小个神经元,输出是所有词的softmax概率(训练的目标是期望训练样本特定词对应的softmax概率最大),隐藏层的神经元个数k自己指定。通过DNN的反向传播算法,求出模型参数,同时得到所有的词对应的k维词向量(两层之间的权重矩阵)。当我们有新的需求时,我们可以通过一次DNN前向传播算法并通过softmax激活函数找到概率最大的词对应的神经元。 -
Skip-Gram,使用“出现的词”来预测“上下文文中词”
输入层有1个神经元,输入是特定词,输出层有词汇表大小个神经元, 输出是softmax概率排前8的8个词。隐藏层的神经元个数自己指定。
通过DNN的反向传播算法,我们可以求出DNN模型的参数,同时得到所有的词对应的词向量。这样当我们有新的需求,要求出某1个词对应的最可能的8个上下文词时,我们可以通过一次DNN前向传播算法得到概率大小排前8的softmax概率对应的神经元所对应的词。
Word2Vec和LDA有什么区别与联系?
线性判别分析(Linear Discriminate Analysis, LDA)是一种经典的降维方法,给定训练集样例,设法将样例投影到一条直线上,使得同类样例的投影尽可能接近,异类样例的投影点尽可能远。
LDA是利用文档中单词的共现关系来对单词按主题聚类,也可以理解为对“文档-单词”矩阵进行分解,得到“文档-主题”和“主题-单词”两个概率分布。Word2Vec其实是对“上下文-单词”矩阵进行学习,其中上下文由周围的几个单词组成,由此得到的词向量表示更多地融入了上下文共现的特征。也就是说,如果两个单词所对应的Word2Vec向量相似度较高,那么它们很可能经常在同样的上下文中出现。
主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干个条件概率连乘的形式,其中包含需要推测隐含变量(即主题)。词嵌入模型一般表达为神经网络的形式,似然函数定义在网络输出之上。需要通过学习网络的权重以得到单词的稠密向量表示。
7.图像数据不足时的处理方法
一个模型所能提供的信息来源于:
(1)训练数据中蕴含的信息;
(2)在模型的形成过程中(构造、学习、推理等),人们提供的先验信息。
在图像分类任务中,训练数据不足会带来什么问题?
过拟合
如何缓解数据量不足带来的问题?
(1)基于模型的方法,主要是采用降低过拟合风险的措施,包括简化模型(如将非线性模型简化为线性模型)、添加约束项以缩小假设空间(如L1/L2正则项)、集成学习、Dropout超参数等;
(2)基于数据的方法,主要通过数据扩充(Data Augmentation),即根据一些先验知识,在保持特定信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果:
■ 一定程度内的随机旋转、平移、缩放、裁剪、填充、左右翻转等
■ 对图像中的像素添加噪声扰动,比如椒盐噪声、高斯白噪声等。
■ 颜色变换。例如,在图像的RGB颜色空间上进行主成分分析,得到3个主成分的特征向量p1,p2,p3及其对应的特征值 λ1,λ2,λ3,然后在每个像素的RGB值上添加增量[p1,p2,p3]•[α1λ1,α2λ2,α3λ3]T,其中 α1,α2,α3是均值为0、方差较小的高斯分布随机数。
■ 改变图像的亮度、清晰度、对比度、锐度等。
(3)除了直接在图像空间进行变换,还可以先对图像进行特征提取,然后在图像的特征空间内进行变换,利用一些通用的数据扩充或上采样技术,例如SMOTE(Synthetic Minority Over-sampling Technique)算法。
对每个少数类样本a,从它的k近邻中随机选一个样本b,然后在两点之间的连线上随机选一点c作为新合成的少数类样本,c=a+rand(0,1)∗|a−b|
(4)使用生成模型也可以合成一些新样本,例如生成式对抗网络模型。
(5)借助已有的其他模型或数据来进行迁移学习在。在大规模数据集上预训练好的通用模型+针对目标任务的小数据集上进行微调(fine-tune)