机器学习方向企业面试题(一)

2021/4/12 10:25:49

本文主要是介绍机器学习方向企业面试题(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

      Python的机器学习方向是近年来不少大厂非常注重的方向之一,这也让不少同学都开始转行学习机器学习领域,这里小千为大家整理了一下大厂在机器学习方向的面试题,大家在面试前看一下说不准就能压到宝~~

1

      1.有监督学习和无监督学习有什么区别?

      有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。(LR,SVM,BP,RF,GBDT)

      无监督学习:对未标记的样本进行训练学习,比发现这些样本中的结构知识。(KMeans,DL)

      2.什么是正则化?

      正则化是针对过拟合而提出的,以为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。奥卡姆剃刀原理,能够很好的解释已知数据并且十分简单才是好的模型。

      3.什么是生成模型和判别模型?

      生成模型:由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。(朴素贝叶斯、Kmeans)

      生成模型可以还原联合概率分布p(X,Y),并且有较快的学习收敛速度,还可以用于隐变量的学习

      判别模型:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。(k近邻、决策树、SVM)

      直接面对预测,往往准确率较高,直接对数据在各种程度上的抽象,所以可以简化模型

      4.线性分类器与非线性分类器的区别以及优劣

      如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是。

      常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归;常见的非线性分类器:决策树、RF、GBDT、多层感知机;SVM两种都有(看线性核还是高斯核)

      线性分类器速度快、编程方便,但是可能拟合效果不会很好;非线性分类器编程复杂,但是效果拟合能力强;

      5.特征比数据量还大时,选择什么样的分类器?

      线性分类器,因为维度高的时候,数据一般在维度空间里面会比较稀疏,很有可能线性可分

      对于维度极低的特征,你是选择线性还是非线性分类器?非线性分类器,因为低维空间可能很多特征都跑到一起了,导致线性不可分

      下面是吴恩达的见解:

      1) 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM

      2.)如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel

      3.)如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

      6. 为什么一些机器学习模型需要对数据进行归一化?

      归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。

      1)归一化后加快了梯度下降求最优解的速度。等高线变得显得圆滑,在梯度下降进行求解时能较快的收敛。如果不做归一化,梯度下降过程容易走之字,很难收敛甚至不能收敛

      2)把有量纲表达式变为无量纲表达式, 有可能提高精度。一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)

      3) 逻辑回归等模型先验假设数据服从正态分布。

      7.哪些机器学习算法不需要做归一化处理?

      概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、rf。而像adaboost、gbdt、xgboost、svm、lr、KNN、KMeans之类的最优化问题就需要归一化。

      8.标准化与归一化的区别

      简单来说,标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。

      9.随机森林如何处理缺失值

      方法一(na.roughfix)简单粗暴,对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,用中位数补。

      方法二(rfImpute)这个方法计算量大,至于比方法一好坏?不好判断。先用na.roughfix补上缺失值,然后构建森林并计算proximity matrix,再回头看缺失值,如果是分类变量,则用没有缺失的观测实例的proximity中的权重进行投票。如果是连续型变量,则用proximity矩阵进行加权平均的方法补缺失值。然后迭代4-6次。

      10. 如何进行特征选择?

      特征选择是一个重要的数据预处理过程,主要有两个原因:一是减少特征数量、降维,使模型泛化能力更强,减少过拟合;二是增强对特征和特征值之间的理解

      常见的特征选择方式:

      1) 去除方差较小的特征

      2.)正则化。1正则化能够生成稀疏的模型。L2正则化的表现更加稳定,由于有用的特征往往对应系数非零。

      3)随机森林,对于分类问题,通常采用基尼不纯度或者信息增益,对于回归问题,通常采用的是方差或者最小二乘拟合。一般不需要feature engineering、调参等繁琐的步骤。它的两个主要问题,1是重要的特征有可能得分很低(关联特征问题),2是这种方法对特征变量类别多的特征越有利(偏向问题)。

      4)稳定性选择。是一种基于二次抽样和选择算法相结合较新的方法,选择算法可以是回归、SVM或其他类似的方法。它的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断的重复,最终汇总特征选择结果,比如可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。理想情况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分将会接近于0。


本文来自千锋教育,转载请注明出处



这篇关于机器学习方向企业面试题(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程