ITPub博客

首页 > 应用开发 > Python > 好程序员Python培训分享机器学习面试题一

好程序员Python培训分享机器学习面试题一

原创 Python 作者:好程序员 时间:2020-06-15 15:34:42 0 删除 编辑

   好程序员Python 培训分享机器学习面试题一: 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 的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。规则为 l2 的归一化公式如下:

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

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

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

   10. 如何进行特征选择?

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

   常见的特征选择方式:

   1. 去除方差较小的特征

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

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

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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913864/viewspace-2698439/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    149985