常见的机器学习面试问题

1.类别型特征

类别型特征(Categorical Feature)主要是指性别(男、女)、血型(A、B、 AB、O)等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形 式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。

  • 序号编码
  • 独热编码(one-hot)
  • 二进制编码

2.模型评估的方法

  • Holdout检验
  • 交叉检验(k-fold交叉验证、留一验证)
  • 自助法

3.模型评估指标

分类问题:

  • 准确率(Accuracy)
  • 精确率(Precision)、召回率(Recall)、P-R曲线(横轴是Recall,纵轴是Precision)
  • F1-score
  • ROC曲线(横轴是假阳性率  FPR=FP/N,纵轴是真阳性率  TPR=TP/P)、AUC

回归问题:

RMSE、MAE、MSE、MAPE、R2(拟合优度)

4.降低“过拟合”风险的方法

  • 获得更多的训练数据
  • 降低模型复杂度
  • 正则化方法
  • 集成学习方法

5.降低“欠拟合”风险的方法

  • 添加新特征
  • 增加模型复杂度
  • 减小正则化系数

6.超参数有哪些调优方法

  • 网格搜索
  • 随机搜索
  • 贝叶斯优化算法

7.集成学习

扫描二维码关注公众号,回复: 5145034 查看本文章
  • Bagging
  • Boosting

Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。比如Adaboost和GBDT算法。

Bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。其中很著名的算法之一是基于决策树基分类器的随机森林(Random Forest)。

Boosting方法是通过逐步聚焦于基分类器分错的样本,减小集成分类器的偏差。Bagging方法则是采取分而治之的策略,通过对训练样本多次采样,并分别训练出多个不同模型,然后做综合,来减小集成分类器的方差。其中,对n个独立不相关的模型的预测结果取平均,方差是原来单个模型的1/n。

8.有监督学习的损失函数

对二分类问题:

  • 0-1损失(其非凸、非光滑的特点,使得算法很难直接对该函数进行优化)
  • Hinge损失(Hinge损失函数是0-1损失函数相对紧的凸上界,且当fy≥1时,该函数不对其做任何惩罚。其在fy=1处不可导,因此不能用梯度下降法进行优化,而是用次梯度下降法(Subgradient Descent Method))
  • Logistic损失(是0-1损失函数的凸上界,且该函数处处光滑,因此可以用梯度下降法进行优化。但是,该损失函数对所有的样本点都有所惩罚,因此对异常值相对更敏感一些)
  • 交叉熵 (Cross Entropy)损失(也是0-1损失函数的光滑凸上界)

对回归问题:

  • 平方损失(是光滑函数,能够用梯度下降法进行优化,但对异常点比较敏感)
  • 绝对损失(相当于是在做中值回归,对异常点更鲁棒一些,但绝对损失函数在f=y处无法求导)
  • Huber损失(Huber损失函数在|f−y|较小时为平方损失,在|f−y|较大时为线性损失,处处可导,且对异常点鲁棒)

9.使用逻辑回归处理多分类问题,有哪些常见做法?

如果一个样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从于几何分布,使用多项逻辑回归(Softmax Regression)来进行分类:

当存在样本可能属于多个标签的情况时(共k个标签),我们可以训练k个二分类的逻辑回归分类器。第i个分类器用以区分每个样本是否可以归为第i类,训练该分类器时,需要把标签重新整理为“第i类标签”与“非第i类标签”两类。

10.常见的聚类算法

  • 基于划分:k-means(改进 -> k-means++、ISODATA )
  • 基于密度:DBSCAN
  • 基于图:谱聚类
  • 层次聚类

11.XGBoost与GBDT的联系和区别有哪些?

  • GBDT是机器学习算法,XGBoost是该算法的工程实现
  • 在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力
  • GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数
  • 传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器
  • 传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据进行采样
  • 传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺失值的处理策略

12.(集成学习中)常用的基分类器是什么?

最常用的基分类器是决策树,主要有以下3个方面的原因。

  • 决策树可以较为方便地将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重
  • 决策树的表达能力和泛化能力,可以通过调节树的层数来做折中
  • 数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类器随机性较大,这样的“不稳定学习器”更适合作为基分类器。此外,在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性, 很好地引入了随机性

除了决策树外,神经网络模型也适合作为基分类器,主要由于神经网络模型也比较“不稳定”,而且还可以通过调整神经元数量、连接方式、网络层数、初始权值等方式引入随机性。

13.三种决策树之间的差异

首先,ID3是采用信息增益作为评价标准,(分裂时)倾向于取值较多的特征(因为信息增益反映的是给定条件以后不确定性减少的程度,特征取值越多就意味着确定性更高,也就是条件熵越小,信息增益越大)。C4.5实际上是对ID3进行优化,通过引入信息增益比,一定程度上对取值比较多的特征进行惩罚,避免ID3出现过拟合的特性,提升决策树的泛化能力。

  • ID3—— 最大信息增益
  • C4.5——最大信息增益比
  • CART——最小基尼指数(Gini)

其次,从样本类型的角度,ID3只能处理离散型变量,而C4.5和CART都可以处理连续型变量。C4.5处理连续型变量时,通过对数据排序之后找到类别不同的分割线作为切分点,根据切分点把连续属性转换为布尔型,从而将连续型变量转换多个取值区间的离散型变量。而对于CART,由于其构建时每次都会对特征进行二值划分,因此可以很好地适用于连续性变量。

从应用角度,ID3和C4.5只能用于分类任务,而CART(Classification and Regression Tree,分类回归树)从名字就可以看出其不仅可以用于分类,也可以应用于回归任务(回归树使用最小平方误差准则)。

此外,从实现细节、优化过程等角度,这三种决策树还有一些不同。比如, ID3对样本特征缺失值比较敏感,而C4.5和CART可以对缺失值进行不同方式的处理;ID3和C4.5可以在每个结点上产生出多叉分支,且每个特征在层级之间不会复用,而CART每个结点只会产生两个分支,因此最后会形成一颗二叉树,且每个特征可以被重复使用;ID3和C4.5通过剪枝来权衡树的准确性与泛化能力,而CART直接利用全部数据发现所有可能的树结构进行对比。

14.在对模型进行过充分的离线评估之后,为什么还要进行在线A/B测试?如何进行线上A/B测试?

需要进行在线A/B测试的原因如下。

  • 离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果
  • 离线评估无法完全还原线上的工程环境。一般来讲,离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果是理想工程环境下的结果
  • 线上系统的某些商业指标在离线评估中无法计算。离线评估一般是针对模型本身进行评估,而与模型相关的其他指标,特别是商业指标,往往无法直接获得。比如,上线了新的推荐算法,离线评估往往关注的是ROC曲线、P-R曲线等的改进,而线上评估可以全面了解该推荐算法带来的用户点击率、留存时长、PV访问量等的变化。这些都要由A/B测试来进行全面的评估。

进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取的user_id需要是一个随机数,这样才能保证桶中的样本是无偏的。

15.逻辑回归相比于线性回归,有何异同?

逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是两者的最本质的区别。逻辑回归中的因变量为离散的,而线性回归中的因变量是连续的。并且在自变量x与超参数θ确定的情况下,逻辑回归可以看作广义线性模型(Generalized Linear Models)在因变量y服从二元分布时的一个特殊情况;而使用最小二乘法求解线性回归时,我们认为因变量y服从正态分布。

当然逻辑回归和线性回归也不乏相同之处,首先我们可以认为二者都使用了极大似然估计(MLE)来对训练样本进行建模。线性回归使用最小二乘法,实际上就是在自变量x与超参数θ确定,因变量y服从正态分布的假设下,使用极大似然估计的一 个化简;而逻辑回归中通过对似然函数的学习,得到最佳参数θ。另外,二者在求解超参数的过程中,都可以使用梯度下降的方法,这也是监督学习中一个常见的相似之处。

其中,逻辑回归中的似然函数为:

16.k-means算法的优缺点是什么?如何对其进行调优?

缺点:

  • 需要人工预先确定初始K值,且该值和真实的数据分布未必吻合
  • K均值只能收敛到局部最优,效果受初始聚类中心影响很大
  • 易受到噪点的影响
  • 样本点只能被划分到单一的类中
  • 无法很好地解决数据簇分布差别比较大的情况(比如一类是另一类样本数量的100倍)
  • 不太适用于离散分类

优点:

  • 对于大数据集,K均值聚类算法相对是可伸缩和高效的,它的计算复杂度是O(NKt)接近于线性,其中N是数据对象的数目,K是聚类的簇数,t是迭代的轮数
  • 尽管算法经常以局部最优结束,但一般情况下达到的局部最优已经可以满足聚类的需求

K均值算法的调优一般可以从以下几个角度出发。

  • 数据归一化和离群点处理(K均值聚类本质上是一种基于欧式距离度量的数据划分方法,均值和方差大的维度将对数据的聚类结果产生决定性的影响,所以未做归一化处理和统一单位的数据是无法直接参与运算和比较的。同时,离群点或者少量的噪声数据就会对均值产生较大的影响,导致中心偏移,因此使用K均值聚类算法之前通常需要对数据做预处理)
  • 合理选择K值(手肘法、Gap Statistic方法)
  • 采用核函数(这时算法又称为核K均值算法,是核聚类方法的一种)

改进的模型:K-means++算法、ISODATA算法

猜你喜欢

转载自blog.csdn.net/aa_JamesJones/article/details/86743835