当前位置: 首页 / 技术分享 / 正文
好程序员Python培训分享机器学习面试题一

2020-06-15

好程序员 Python培训 Python教程 Python面试题

  好程序员Python培训分享机器学习面试题一:1.有监督学习和无监督学习有什么区别?

Python2

  有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。(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,贝叶斯分类,单层感知机、线性回归

  常见的非线性分类器:决策树、RFGBDT、多层感知机

  SVM两种都有(看线性核还是高斯核)

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

  非线性分类器编程复杂,但是效果拟合能力强

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

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

  对于维度很高的特征,你是选择线性还是非线性分类器?

  理由同上

  对于维度极低的特征,你是选择线性还是非线性分类器?

  非线性分类器,因为低维空间可能很多特征都跑到一起了,导致线性不可分

  下面是吴恩达的见解:

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

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

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

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

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

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

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

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

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

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

  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

好程序员公众号

  • · 剖析行业发展趋势
  • · 汇聚企业项目源码

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2021-04-12(深圳)

    开班盛况

    开班时间:2021-05-17(北京)

    开班盛况
  • 大数据+人工智能 <高端班>

    开班时间:2021-03-22(杭州)

    开班盛况

    开班时间:2021-04-26(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2021-05-10(北京)

    开班盛况

    开班时间:2021-02-22(北京)

    开班盛况
  • Python人工智能+数据分析 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2020-09-21(上海)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2019-07-22(北京)

    开班盛况
IT培训IT培训
在线咨询
IT培训IT培训
试听
IT培训IT培训
入学教程
IT培训IT培训
立即报名
IT培训

Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号