机器学习是一门理论性和实战性都比较强的技术学科。在应聘机器学习相关工作岗位时,我们常常会遇到各种各样的机器学习问题和知识点。为了帮助大家对这些知识点进行梳理和理解,以便能够更好地应对机器学习笔试包括面试。
今天的笔试题主要涉及的知识点包括:降维、PCA、特征选择、随机森林、GBDT、集成学习等。
Q1. 我们想要训练一个 ML 模型,样本数量有 100 万个,特征维度是 5000,面对如此大数据,如何有效地训练模型(多选)?
A. 对训练集随机采样,在随机采样的数据上建立模型
B. 尝试使用在线机器学习算法
C. 使用 PCA 算法减少特征维度
答案:ABC
解析:本题考查的是如何解决样本数量和特征维度过大的问题。
在有限的内存下,如何处理高特征纬度的训练样本是一项非常艰巨的任务。下面这些方法可以用来解决这一问题。
- 我们可以随机抽样数据集,包括样本数量和特征数量。这意味着,我们可以创建一个更小的数据集,比如说,有 1000 个特征和 300000 个样本进行训练。
-
使用在线学习(online learning)算法
-
使用主成分分析算法(PCA)挑选有效的特征,去除冗余特征。
关于在线学习与离线学习,离线学习是我们最为常见的一种机器学习算法模式,使用全部数据参与训练。训练完成,整个模型就确定了;而在线学习一般每次使用一个数据或是小批量数据进行训练,每次训练都会优化模型,模型处于不断优化更改状态。
PCA(principal Component Analysis),是一种使用最广泛的数据压缩算法。在PCA中,数据从原来的坐标系转换到新的坐标系,由数据本身决定。转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息。第一个新坐标轴选择的是原始数据中方差最大的方法,第二个新坐标轴选择的是与第一个新坐标轴正交且方差次大的方向。重复该过程,重复次数为原始数据的特征维数。
什么是冗余特征呢?比如汽车数据中,里面既有以“千米/每小时”度量特征,也有“英里/小时”的特征,显然这两个特征有一个是多余的。
Q2. 我们希望减少数据集中的特征数量。你可以采取以下哪一个步骤来减少特征(多选)?
A. 使用正向选择法(Forward Selection)
B. 使用反向消除法(Backward Elimination)
C. 逐步选择消除法(Stepwise)
D. 计算不同特征之间的相关系数,删去相关系数高的特征之一
答案:ABCD
解析:本题考查的是机器学习模型中特征选择问题。
正向选择(Forward Selection)是首先选择一个特征,每个特征都试一遍,选择对模型准确率提升最高的那个特征;然后再在这个特征基础上添加另外一个特征,方法类似,直到模型准确率不再提示为止。
反向消除(Backward Elimination)是首先包含了所有的特征,然后尝试删除每个特征,最终删掉对模型准确率提升最高的一个特征(因为删除这个特征,模型准确率反而增加了,说明是无用特征)。如此类推,直到删除特征并不能提升模型为止。
相对于 Forward Selection,Backward Elimination 的优点在于其允许一些低贡献值的特征能够进到模型中去(有时候低贡献值的特征能在组合中有更大的贡献值,而 Forward Selection 忽略了这种组合的可能性),因此Backward Elimination能够避免受一两个占主导地位的特征的干扰。
另外还有一种特征选择方法是 Stepwise,该方法结合上述两者的方法,新加入一个特征之后,再尝试删去一个特征,直至达到某个预设的标准。这种方法的缺点是,预设的标准不好定,而且容易陷入到过拟合当中。
除此之外,也可以使用基于相关性的特征选择,可以去除多重线性特征。例如上一题中“千米/每小时”和“英里/小时”是相关性很大的特征,可删其一。
Q3. 下面关于 Random Forest 和 Gradient Boosting Trees 说法正确的是?
A. Random Forest 的中间树不是相互独立的,而 Gradient Boosting Trees 的中间树是相互独立的
B. 两者都使用随机特征子集来创建中间树
C. 在 Gradient Boosting Trees 中可以生成并行树,因为它们是相互独立的
D. 无论任何数据,Gradient Boosting Trees 总是优于 Random Forest
答案:B
解析:本题考查的是随机森林和梯度提升树(GBDT)的基本概率和区别。
Random Forest 是基于 Bagging 的,而 Gradient Boosting Trees 是基于 Boosting 的。Bagging 和 Boosting 的区别在于:
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等。
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成。
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
因此,Gradient Boosting Trees 的中间树不是相互独立的,因为前一棵树的结果影响下一棵树。Random Forest 的中间树相互独立,因此可以并行生成这些树。
在这两种算法中,我们使用随机特征集来生成中间树。
Gradient Boosting Trees 并不总比 Random Forest 好,依赖于数据。
Q4. “对于 PCA 处理后的特征,其朴素贝叶斯特征相互独立的假设一定成立,因为所有主成分都是正交的,所以不相关”。这句话是否正确?
A. True
B. False
答案:B
解析:本题考查的是 PCA 和 朴素贝叶斯的基本概率和区别。
这句话有两处错误:一是 PCA 转换之后的特征不一定不相关;二是不相关并不等价于相互独立。
正交和不相关没有必然关系,只有当一个随机变量的统计平均等于零时,正交和不相关等价。
独立则必定不相关,而不相关却不一定互相独立,只有是高斯时独立和不相关才等价。
Q5. 下列关于 PCA 说法正确的是(多选)?
A. 在使用 PCA 之前,我们必须标准化数据
B. 应该选择具有最大方差的主成分
C. 应该选择具有最小方差的主成分
D. 可以使用 PCA 在低维空间中可视化数据
答案:ABD
解析:本题考查的是主成分分析(PCA)的基本概念和推导原理。
PCA 对数据中变量的尺度非常敏感,因此我们需要对各个变量进行标准化。方法是减去各自变量的均值,除以标准差。
xi−μσ\frac{x_i-\mu}{\sigma}σxi−μ
举个例子,假如某个变量单位从 km 改成 cm,大大增加了其方差,那么该变量可能就成为了主成分。这是我们不希望看大的。
B 是正确的,因为我们总是选择方差最大的主成分。可以这么来理解,方差越大,说明在该特征上分布越广泛,说明该特征月有用,影响越大。
PCA 有时在较低维度上绘制数据是非常有用。例如我们可以提取前 2 个主要组成部分,然后在二维平面上使用散点图可视化数据。
Q6. 下图中,主成分的最佳数目是多少?
A. 10
B. 20
C. 30
D. 无法确定
答案:C
解析:本题考查的是 PCA 的基本概念。
显然,当主成分数目为 30 的时候,积累的方差比例最大。
Q7. 数据科学家经常使用多个算法进行预测,并将多个机器学习算法的输出(称为“集成学习”)结合起来,以获得比所有个体模型都更好的更健壮的输出。则下列说法正确的是?
A. 基本模型之间相关性高
B. 基本模型之间相关性低
C. 集成方法中,使用加权平均代替投票方法
D. 基本模型都来自于同一算法
答案:B
解析:本题考查的是集成学习的基本原理。
集成学习,顾名思义,通过将多个单个学习器集成/组合在一起,使它们共同完成学习任务。
举个例子来说明,假如你有 T 个朋友,每个朋友向你预测推荐明天某支股票会涨还是会跌,那么你该选择哪个朋友的建议呢?第一种方法是从 T 个朋友中选择一个最受信任,对股票预测能力最强的人,直接听从他的建议就好。这是一种普遍的做法,对应的就是 validation 的思想,即选择犯错误最小的模型。第二种方法,如果每个朋友在股票预测方面都是比较厉害的,都有各自的专长,那么就同时考虑 T 个朋友的建议,将所有结果做个投票,一人一票,最终决定出对该支股票的预测。这种方法对应的是 uniformly 思想。第三种方法,如果每个朋友水平不一,有的比较厉害,投票比重应该更大一些,有的比较差,投票比重应该更小一些。那么,仍然对 T 个朋友进行投票,只是每个人的投票权重不同。这种方法对应的是 non-uniformly 的思想。第四种方法与第三种方法类似,但是权重不是固定的,根据不同的条件,给予不同的权重。比如如果是传统行业的股票,那么给这方面比较厉害的朋友较高的投票权重,如果是服务行业,那么就给这方面比较厉害的朋友较高的投票权重。以上所述的这四种方法都是将不同人不同意见融合起来的方式,这就是集成思想,即把多个基本模型结合起来,得到更好的预测效果。
通常来说,基本模型之间的相关性越低越好,因为每个模型有各自的特长,集成起来才更加强大。
Q8. 如何在监督式学习中使用聚类算法(多选)?
A. 首先,可以创建聚类,然后分别在不同的集群上应用监督式学习算法
B. 在应用监督式学习算法之前,可以将其类别 ID 作为特征空间中的一个额外的特征
C. 在应用监督式学习之前,不能创建聚类
D. 在应用监督式学习算法之前,不能将其类别 ID 作为特征空间中的一个额外的特征
答案:AB
解析:本题考查的是聚类算法与监督式学习。
我们可以为不同的集群构建独立的机器学习模型,并且可以提高预测精度。将每个类别的 ID 作为特征空间中的一个额外的特征可能会提高的精度结果。
Q9. 下面哪句话是正确的?
A. 机器学习模型的精准度越高,则模型的性能越好
B. 增加模型的复杂度,总能减小测试样本误差
C. 增加模型的复杂度,总能减小训练样本误差
D. 以上说法都不对
答案:C
解析:本题考查的是机器学习模型的评判指标。
机器学习模型的精准度(Precision)越高,模型性能不一定越好,还要看模型的召回率(Recall),特别是在正负样本分布不均的情况下。一般使用 F1 score 评判标准。
F1=2⋅P⋅RP+RF1=2\cdot\frac{P\cdot R}{P+R}F1=2⋅P+RP⋅R
增加模型复杂度,通常可能造成过拟合。过拟合的表现是训练样本误差减小,而测试样本误差增大。
Q10. 关于 GBDT 算法,下列说法正确的是(多选)?
A. 增加用于分割的最小样本数量,有助于避免过拟合
B. 增加用于分割的最小样本数量,容易造成过拟合
C. 减小每个基本树的样本比例,有助于减小方差
D. 减小每个基本树的样本比例,有助于减小偏差
答案:AC
解析:本题考查的是 GBDT 的基本概念。
节点中用于分割所需的最小样本数用来控制过拟合。过高的值可能导致欠拟合,因此,它应该使用交叉验证进行调整。
每个基本树选择的样本比例是通过随机抽样来完成的。小于1的值能够减小方差使模型具有鲁棒性。典型值 0.8 通常工作良好,但可以进一步精细调整。
GBDT 通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差基础上进行训练。对弱分类器的要求一般是足够简单,并且是低方差和高偏差的,因为训练的过程是通过降低偏差来不断提高最终分类器的精度。
参考文献: