机器学习算法工程师面试集锦(更新中)

机器学习算法工程师面试集锦(更新中)

  • 面试问题汇总
    • 常用的损失函数
    • 介绍交叉验证
    • 特征选择方法
    • 机器学习项目的一般步骤
    • 经验风险最小化与结构风险最小化
    • 训练决策树时的参数是什么
    • 在决策树的节点处分割标准是什么
    • 决策树的剪枝策略
    • 基尼系数的公式
    • 熵的公式是什么
    • 决策树如何决定在哪个特征处分割
    • 随机森林的优点有哪些
    • 为什么要模型融合,模型融合方法有哪些
    • 介绍一下boosting
    • Bagging 和 Boosting区别
    • gradient boosting如何工作
    • GBDT和XGBoost区别
    • 关于AdaBoost算法,你了解多少?它如何工作?
    • SVM中用到了哪些核?SVM中的优化技术有哪些?
    • SVM和LR的区别
    • SVM如何学习超平面?用数学方法详细解释一下。
    • 介绍一下无监督学习,算法有哪些?
    • 聚类方法有哪几种?
    • 在K-Means聚类算法中,如何定义K?
    • 讲一下PCA
    • 讲一下LDA
    • Isolation Forest——异常检测(没问过,但我把它总结在这里)
    • ReLU函数的性质(相比sigmoid)
  • 参考资料

面试问题汇总

问题来自于牛客,公众号,以及自己的亲身体验。

常用的损失函数

  • 0-1损失函数
  • 平方损失函数
    L(Y,f(X))=(Y-f(X))^2
  • 绝对损失函数
    L(Y,f(X))=|Y-f(X)|
  • 对数损失函数
    L(Y,P(Y|X))=-log P(Y-|X)

介绍交叉验证

  • 简单交叉验证
  • K折交叉验证
  • 留一交叉验证

特征选择方法

  • 递归特征消除RFE(网上有很多RFE资料)
  • 基于学习模型的特征排序
  • 去掉取值变化小的特征

机器学习项目的一般步骤

  • 问题抽象
  • 数据获取
  • 特征工程(数据清洗,预处理,采样)
  • 模型训练、调优
  • 模型验证、误差分析
  • 模型融合
  • 模型上线

经验风险最小化与结构风险最小化

  • 经验风险最小化
    统计学中的极大似然估计(Maximum Likelihood Estimation MLE)就是经验风险最小化的一个典型的例子。当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化与极大似然估计等价。虽然在样本数量足够大的情况下,经验风险最小化求解出来的模型能够取得不错的预测效果,但是当训练数据集也就是样本容量比较小时,基于经验风险最小化训练出来的模型往往容易过拟合
    机器学习算法工程师面试集锦(更新中)_第1张图片
  • 结构风险最小化
    与经验风险最小化对应的叫做结构风险最小化。结构风险最小化是为了防止过拟合而提出来的一种策略,它与正则化等价。结构风险在经验风险的基础上加上表示模型复杂度的正则化项或者罚项。其定义如下:
    在这里插入图片描述

训练决策树时的参数是什么

class sklearn.tree.DecisionTreeClassifier(criterion=‘gini’, splitter=‘best’, max_depth=None, min_samples_split=2,min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None,min_impurity_split=1e-07, class_weight=None, presort=False)
重要的参数
criterion:规定了该决策树所采用的的最佳分割属性的判决方法,有两种:“gini”,“entropy”。
max_depth:限定了决策树的最大深度,对于防止过拟合非常有用。
min_samples_leaf:限定了叶子节点包含的最小样本数,这个属性对于防止数据碎片问题很有作用。
min_weight_fraction_leaf: 这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。 默认是0,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了。
min_samples_split:部节点再划分所需最小样本数。这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。我之前的一个项目例子,有大概10万样本,建立决策树时,我选择了min_samples_split=10。可以作为参考。
参考博客

在决策树的节点处分割标准是什么

确定最优划分特征的方法是整个决策树的关键部分。最优划分特征的选择基于一个目标:使得分裂后各个节点数据的“纯度”最高。即尽量使得通过该特征进行分类后的分支节点所包含的样本属于同一类别。选择一个合适的特征作为判断节点,可以快速的分类,减少决策树的深度。

决策树的剪枝策略

预剪枝:当分裂点对应的增益值不再增加时停止分裂。优点是计算时间上能保证最优
后剪枝:生成决策树后,递归的进行剪枝,剪去那些增益为负的叶子结点。优点是保证决策树最优,缺点是比预剪枝计算复杂度高

基尼系数的公式

熵的公式是什么

决策树如何决定在哪个特征处分割

根据信息增益决策划分节点时特征选择方法是:对训练数据集D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。

  1. 信息增益用在ID3决策树中,信息增益是依据熵的变化值来决定的值。
  2. 以信息增益作为划分数据集的特征,存在偏向于选择去取值较多的特征的问题,这时候可以使用信息增益比对这一问题进行修正。C4.5决策树正是基于信息增益比进行特征的选择进行结点的分割。
  3. CART树分为回归树和分类树,CART分类树结点选择特征进行分裂时选择特征的方法就是基尼指数。

随机森林的优点有哪些

参考博客

  • 表现性能好,与其他算法相比有着很大优势。
  • 随机森林能处理很高维度的数据(也就是很多特征的数据),并且不用做特征选择。
  • 在训练完之后,随机森林能给出哪些特征比较重要。
  • 训练速度快,容易做成并行化方法(训练时,树与树之间是相互独立的)。
  • 在训练过程中,能够检测到feature之间的影响。
  • 对于不平衡数据集来说,随机森林可以平衡误差。当存在分类不平衡的情况时,随机森林能提供平衡数据集误差的有效方法。
  • 如果有很大一部分的特征遗失,用RF算法仍然可以维持准确度。
  • 随机森林算法有很强的抗干扰能力(具体体现在6,7点)。所以当数据存在大量的数据缺失,用RF也是不错的。
  • 随机森林抗过拟合能力比较强(虽然理论上说随机森林不会产生过拟合现象,但是在现实中噪声是不能忽略的,增加树虽然能够减小过拟合,但没有办法完全消除过拟合,无论怎么增加树都不行,再说树的数目也不可能无限增加的。)
  • 随机森林能够解决分类与回归两种类型的问题,并在这两方面都有相当好的估计表现。(虽然RF能做回归问题,但通常都用RF来解决分类问题)。
  • 在创建随机森林时候,对generlization error(泛化误差)使用的是无偏估计模型,泛化能力强。

为什么要模型融合,模型融合方法有哪些

原因:
方法:Voting,Bagging,Boosting,Stacking

介绍一下boosting

Boosting算法是一种把若干个分类器整合为一个分类器的方法

Bagging 和 Boosting区别

  • 样本选择
  • 权重
  • 预测函数
  • 并行计算
    参考博客

gradient boosting如何工作

Gradient Boosting 在迭代的时候选择梯度下降的方向来保证最后的结果最好。

损失函数用来描述模型的“靠谱”程度,假设模型没有过拟合,损失函数越大,模型的错误率越高.

如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度方向上下降。

GBDT和XGBoost区别

关于AdaBoost算法,你了解多少?它如何工作?

  1. 给定训练样本集S,其中X和Y分别对应于正例样本和负例样本; T为训练的最大循环次数;
  2. 初始化样本权重为1/n ,即为训练样本的初始概率分布;
  3. 第一次迭代:
    (1) 训练样本的概率分布相当下,训练弱分类器;
    (2) 计算弱分类器的错误率;
    (3) 选取合适阈值,使得误差最小;
    (4) 更新样本权重;

经T次循环后,得到T个弱分类器,按更新的权重叠加,最终得到的强分类器。

SVM中用到了哪些核?SVM中的优化技术有哪些?

机器学习算法工程师面试集锦(更新中)_第2张图片

SVM和LR的区别

参考博客1、 参考知乎2

SVM如何学习超平面?用数学方法详细解释一下。

步骤1:读取想分类的数据集D
步骤2:找到两个平行超平面,可以划分数据并且两平面之间没有数据点。
步骤3:两个超平面之间的距离最大化

介绍一下无监督学习,算法有哪些?

K均值聚类(K-means clustering)
高斯混合模型(GMM)
自组织映射神经网络(SOM)

聚类方法有哪几种?

原型聚类、密度聚类以及层次聚类

在K-Means聚类算法中,如何定义K?

(1) 随机选取k个中心点;
(2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为该类;
(3) 更新中心点为每类的均值;
(4) j<-j+1 ,重复(2)(3)迭代更新,直至误差小到某个值或者到达一定的迭代步数,误差不变.
空间复杂度o(N)
时间复杂度o(IKN)
其中N为样本点个数,K为中心点个数,I为迭代次数
K值确定
法1:(轮廓系数)在实际应用中,由于Kmean一般作为数据预处理,或者用于辅助分聚类贴标签。所以k一般不会设置很大。可以通过枚举,令k从2到一个固定值如10,在每个k值上重复运行数次kmeans(避免局部最优解),并计算当前k的平均轮廓系数,最后选取轮廓系数最大的值对应的k作为最终的集群数目。
法2:(Calinski-Harabasz准则)
其中SSB是类间方差, ,m为所有点的中心点,mi为某类的中心点;
SSW是类内方差,;
(N-k)/(k-1)是复杂度;
比率越大,数据分离度越大.
法3:肘部法则
也称手肘法。尝试不同的k值,横轴为k,纵轴为误差平方和定义的损失函数,该法认为拐点就是k的最佳值。
法4:Gap Statistic
不需肉眼判断,找到最大的Gap Statistic对应的k
参考博客

讲一下PCA

PCA是比较常见的线性降维方法,通过线性投影将高维数据映射到低维数据中,所期望的是在投影的维度上,新特征自身的方差尽量大,方差越大特征越有效,尽量使产生的新特征间的相关性越小。具体操作为对所有的样本进行中心化操作,计算样本的协方差矩阵,然后对协方差矩阵做特征值分解,取最大的n个特征值对应的特征向量构造投影矩阵。

讲一下LDA

LDA 的全称是 Linear Discriminant Analysis (线性判别分析),它是一种有监督学习方法。LDA 的原理是:将带上类标的实例数据,通过投影的方法,投影到维度更低的空间中,使得投影后的点,会形成按类别区分开。同一个类别的实例,在投影后的空间中将会更接近.

Isolation Forest——异常检测(没问过,但我把它总结在这里)

ReLU函数的性质(相比sigmoid)

  • (计算角度)采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效
  • (生物角度)ReLU 函数被认为有生物上的解释性,比如单侧抑制、 宽兴奋边界(即兴奋程度也可以非常高)
  • (稀疏性)Sigmoid 型激活函数会导致一个非稀疏的神经网络,而ReLU却具有很好的稀疏性,大约50%的神经元会处于激活状态。
  • (优化方面)相比于Sigmoid型函数的两端饱和, ReLU函数为左饱和函数,且在x > 0时导数为1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。

参考资料

部分答案来源

你可能感兴趣的:(机器学习,面试与秋招)