一天1道机器学习面试题(五)

今天开始陆陆续续更新机器学习的面试题,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,如果大家面试中遇到好的面试题也请分享,一起学习,一起进步!
每天都在更新中,记得收藏,每天进步一点点!!

一天1道机器学习面试题(一)
一天1道机器学习面试题(二)
一天1道机器学习面试题(三)
一天1道机器学习面试题(四)这部分主要更新集成学习的内容(RF,adaboost,GBDT,XGBoost等)

穿越---->深度学习面试!!

1.特征工程

1.1.什么是特征工程?

答:本质上来说,呈现给算法的数据应该能拥有基本数据的相关结构或属性。当你做特征工程时,其实是将数据属性转换为数据特征的过程,属性代表了数据的所有维度,在数据建模时,如果对原始数据的所有属性进行学习,并不能很好的找到数据的潜在趋势,而通过特征工程对你的数据进行预处理的话,你的算法模型能够减少受到噪声的干扰,这样能够更好的找出趋势。事实上,好的特征甚至能够帮你实现使用简单的模型达到很好的效果。

1.2.为什么要对数值类型的特征做归一化?方法有哪些?

答:为了消除数据特征之间量纲影响,需要对特征进行归一化处理,使得不同指标之间具有可比性。主要有以下两种方法:
1)线性函数归一化(Min-Max Scaling):将数据映射到[0,1]的范围,实现数据的等比缩放。
一天1道机器学习面试题(五)
2)零均值归一化(Z-score normalization):将原始数据映射到均值为0,标准差为1的分布上。
一天1道机器学习面试题(五)
**注:**通常通过梯度下降法求解的模型需要归一化,包括线性回归,逻辑回归,SVM,神经网络等。单对于决策树模型并不适用,因为信息增益跟基尼指数跟特征是否经过归一化是无关的。

1.3.为什么要处理类别特征?怎么处理?

答:除了决策树等少量模型能直接处理字符串形式的输入,对于LR,SVM等模型来说,类别特征必须经过处理转化成数值特征才能正常工作。方法主要有:
1)序号编码
2)独热编码
3)二进制编码

1.4.什么是组合特征?

答:为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高级特征。
例如,特征a有m个取值,特别b 有n个取值,将二者组合就有m*n个组成情况。这时需要学习的参数个数就是 m×n 个

1.5.如何处理高维组合特征?

面试问题:当每个特征都有千万级别,就无法学习 m×n 规模的参数了
解决方案:可以将每个特征分别用 k 维的低维向量表示,需要学习的参数变为 m×k+n×k 个,等价于矩阵分解

1.6.怎么有效地找到组合特征?

答:可以用基于决策树的方法,首先根据样本的数据和特征构造出一颗决策树。然后从根节点都叶节点的每一条路径,都可以当作一种组合方式。

1.7.特征工程分哪几步?

答:①数据预处理;②特征选择;③特征提取。

1.8.原始数据通常存在哪些问题如何解决?(数据预处理的问题)

答:①缺失值:删除缺失的样本,或者补值,根据统计学原理,连续数据取平均,离散数据取众数;
异常值
​ 怎么检测异常值:
​ 1.基于高斯分布的异常值检测:3σ原则也是属于高斯分布判断方法的一种,在这里异常值被定义为,其值 与平均值的偏差超过三倍标准差的值,在正态分布的假设下,区域u+3σ包含了99.7% 的数据,如果某个值距离分布的均值超过了3σ,那么这个值就可以被简单的标记为一个异常点:P(|x−μ|>3σ)≤0.003
2.四分位数
​ 3.更多的还有基于各类统计量来检测多元离群点,例如x^2检验、t检验等。
​ 4.基于主成分分析的矩阵分解方法,这种方法经过主成分分析分解,再进行重构,通过异常值在主成分分量上的偏差更大来判断是否异常。

​ 5.基于距离,利用聚类的思想,对数据进行聚类.,排除距离中心最远的N个点,一般的方法有,kmeans、knn、DBSCAN等。
​ 怎么处理异常值:
​ 1.删除含有异常值的记录,将异常值视为缺失值,交给缺失值处理方法来处理;
​ 2.用平均值或者众数来修正。
​ ③数据重复:去重,保证样本唯一性;
​ ④信息冗余:成绩,很多但是只关心及格没,直接二值化,大于60分及格为1不及格为0;
​ ⑤定性特征不能直接使用,哑编码或者one-hot编码,one-hot编码:有多少取值就多少状态,小学中学大学硕士博士10000,但是哑编码就是1000,让0000表示博士。
​ ⑥数据不平衡的问题

1.9.数据不平衡的问题如何解决?

答:①采样的方法,采样分为上采样(Oversampling)和下采样(Undersampling),上采样是把小众类复制多份,下采样是从大众类中剔除一些样本,或者说只从大众类中选取部分样本。上采样后的数据集中会重复出现一些样本,训练出来的模型会有一定的过拟合,解决办法,可以在每次生成新数据点时加入轻微的随机扰动;而下采样的缺点也比较明显,那就是最终的训练集丢失了数据,模型只学到了一部分。可能会导致欠拟合,解决办法:多次下采样(放回采样,这样产生的训练集才相互独立)产生多个不同的训练集,进而训练多个不同的分类器,利用模型融合,通过组合多个分类器的结果得到最终的结果。
​ ②数据合成方法是利用小众样本在特征空间的相似性来生成新样本,这类方法在小数据场景下有很多成功案例,比如医学图像分析等。
​ ③对于数据极端不平衡时,可以观察观察不同算法在同一份数据下的训练结果的precision和recall,这样做有两个好处,一是可以了解不同算法对于数据的敏感程度,二是可以明确采取哪种评价指标更合适。针对机器学习中的数据不平衡问题,建议更多PR(Precision-Recall曲线),而非ROC曲线,具体原因画图即可得知,如果采用ROC曲线来作为评价指标,很容易因为AUC值高而忽略实际对少量样本的效果其实并不理想的情况。
​ ④选择对数据倾斜相对不敏感的算法,如树模型。

1.10.特征选择和特征提取区别?

答:都是降维的方法。特征选择:不改变变量的含义,仅仅只是做出筛选,留下对目标影响较大的变量;特征提取:通过映射(变换)的方法,将高维的特征向量变换为低维特征向量

1.11.简单介绍特征选择?

答:当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:
特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除方差法外,本文介绍的其他方法均从相关性考虑。

根据特征选择的形式又可以将特征选择方法分为3种:
Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。如方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。
Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。
Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。使用带惩罚项L1的基模型,除了筛选出特征外,同时也进行了降维。L1惩罚项降维的原理在于保留多个对目标值具有同等相关性的特征中的一个,所以没选到的特征不代表不重要。故可结合L2惩罚项来优化。具体操作为:若一个特征在L1中的权值为1,选择在L2中权值差别不大且在L1中权值为0的特征构成同类集合,将这一集合中的特征平分L1中的权值;树模型中GBDT也可用来作为基模型进行特征选择。

1.12.简单介绍特征提取?

答:在特征向量所处的高维空间中,包含很多的冗余和噪声,希望通过降维的方法来寻找数据的内部特征,从而提升特征的表达能力,降低训练复杂度。常见的降维方法除了以上提到的基于L1惩罚项的模型以外,另外还有主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法

2.PCA

2.1.简述PCA的原理?

答:如果数据之中的某些维度之间存在较强的线性相关关系,那么样本在这两个维度上提供的信息有就会一定的重复,所以我们希望数据各个维度之间是不相关的 (也就是正交的)。此外,出于降低处理数据的计算量或去除噪声等目的,我们也希望能够将数据集中一些不那么重要 (方差小) 的维度剔除掉。
​ 就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。而方差最大的那个维度是主成分。PCA属于一种线性,非监督,全局的降维方法。

PCA的目标是用一组较少的不相关变量代替大量相关变量,同时尽可能保留初始变量的信息,这些推导所得的变量称为主成分,它们是观测变量的线性组合,它是k个观测变量的加权组合,对初始变量集的方差解释性最大。
第二主成分也是初始变量的线性组合,对方差的解释性排第二,同时与第一主成分正交(不相关)(为什么正交,参考不同特征值,特征向量的性质)。后面每一个主成分都最大化它对方差的解释程度,同时与之前所有的主成分都正交.我们都希望能用较少的主成分来解释全部变量。

2.2.PCA的步骤

答:1.设有m条n维数据;
2.将原始数据按列组成n行m列矩阵X;
3.将X的每一行(代表一个属性字段)进行中心化,零均值化,为了使投影后的均值为0;
4.求出协方差矩阵C=1/m·X·X^T;
5.求出协方差矩阵的特征值及对应的的特征向量,最大方差就是最大特征值,最佳投影方向就是最大特征值对应的特征向量;
6.将特征向量按照对应特征值大小从上到下按行排列成矩阵,取前K行组成矩阵P;
7.Y=PY即为降维到K维后的数据。

2.3.PCA的优缺点

答:PCA算法的主要优点有:
仅仅需要以方差衡量信息量,不受数据集以外的因素影响。
各主成分之间正交,可消除原始数据成分间的相互影响的因素。
计算方法简单,主要运算是特征值分解,易于实现。
PCA算法的主要缺点有:
主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

2.4.一些大厂真题

一天1道机器学习面试题(五)

3.简述线性判别分析LDA(Linear Discriminate Analysis)

LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同,PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话来概括,就是“投影后类内方差最小,类间方差最大”。我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能地接近,而不同类别的数据的类别中心之间的距离尽可能地大。

3.1原理

百面机器学习

3.2步骤

百面机器学习P88

3.3LDA和PCA区别

百面机器学习P88

4.LPP

最近看到一个降维的方法LPP,等有时间在学习整理一下