机器学习常见面试题整理

文章目录
  1. 1. 有监督学习和无监督学习的区别
  2. 2. 正则化
  3. 3. 过拟合
    1. 3.1. 产生的缘由
    2. 3.2. 解决方法
  4. 4. 泛化能力
  5. 5. 生成模型和判别模型
  6. 6. 线性分类器与非线性分类器的区别以及优劣
    1. 6.1. 特征比数据量还大时,选择什么样的分类器?
    2. 6.2. 对于维度很高的特征,你是选择线性仍是非线性分类器?
    3. 6.3. 对于维度极低的特征,你是选择线性仍是非线性分类器?
  7. 7. ill-condition病态问题
  8. 8. L1和L2正则的区别,如何选择L1和L2正则
  9. 9. 特征向量的归一化方法
  10. 10. 特征向量的异常值处理
  11. 11. 越小的参数说明模型越简单
  12. 12. svm中rbf核函数与高斯和函数的比较
  13. 13. KMeans初始类簇中心点的选取
    1. 13.1. 选择批次距离尽量远的K个点
    2. 13.2. 选用层次聚类或者Canopy算法进行初始聚类
  14. 14. ROC、AUC
    1. 14.1. ROC曲线
    2. 14.2. AUC
    3. 14.3. 为何要使用ROC和AUC
  15. 15. 测试集和训练集的区别
  16. 16. 优化Kmeans
  17. 17. 数据挖掘和机器学习的区别
  18. 18. 备注

有监督学习和无监督学习的区别

  • 有监督学习:对具备标记的训练样本进行学习,以尽量对训练样本集外的数据进行分类预测。(LR,SVM,BP,RF,GBRT)
  • 无监督学习:对未标记的样本进行训练学习,比发现这些样本中的结构知识。(KMeans,DL)

正则化

正则化是针对过拟合而提出的,觉得在求解模型最优的是通常优化最小的经验风险,如今在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,若是模型复杂度越高,结构化的经验风险会越大,如今的目标就变为告终构经验风险的最优化,能够防止模型训练过分复杂,有效的下降过拟合的风险。面试

奥卡姆剃刀原理,可以很好的解释已知数据而且十分简单才是最好的模型。算法

过拟合

若是一味的去提升训练数据的预测能力,所选模型的复杂度每每会很高,这种现象称为过拟合。所表现的就是模型训练时候的偏差很小,但在测试的时候偏差很大。编程

产生的缘由

  1. 由于参数太多,会致使咱们的模型复杂度上升,容易过拟合
  2. 权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有表明性的特征.

解决方法

  1. 交叉验证法
  2. 减小特征
  3. 正则化
  4. 权值衰减
  5. 验证数据

泛化能力

泛化能力是指模型对未知数据的预测能力网络

生成模型和判别模型

  1. 生成模型:由数据学习联合几率分布P(X,Y),而后求出条件几率分布P(Y|X)做为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。(朴素贝叶斯)
    生成模型能够还原联合几率分布p(X,Y),而且有较快的学习收敛速度,还能够用于隐变量的学习
  2. 判别模型:由数据直接学习决策函数Y=f(X)或者条件几率分布P(Y|X)做为预测的模型,即判别模型。(k近邻、决策树)
    直接面对预测,每每准确率较高,直接对数据在各类程度上的抽象,因此能够简化模型

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

若是模型是参数的线性函数,而且存在线性分类面,那么就是线性分类器,不然不是。
常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归
常见的非线性分类器:决策树、RF、GBDT、多层感知机机器学习

SVM两种都有(看线性核仍是高斯核)函数

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

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

线性分类器,由于维度高的时候,数据通常在维度空间里面会比较稀疏,颇有可能线性可分工具

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

理由同上学习

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

非线性分类器,由于低维空间可能不少特征都跑到一块儿了,致使线性不可分测试

ill-condition病态问题

训练完的模型测试样本稍做修改就会获得差异很大的结果,就是病态问题(这简直是不能用啊)

L1和L2正则的区别,如何选择L1和L2正则

他们都是能够防止过拟合,下降模型复杂度

  • L1是在loss function后面加上 模型参数的1范数(也就是|xi|)
  • L2是在loss function后面加上 模型参数的2范数(也就是sigma(xi^2)),注意L2范数的定义是sqrt(sigma(xi^2)),在正则项上没有添加sqrt根号是为了更加容易优化

  • L1 会产生稀疏的特征

  • L2 会产生更多地特征可是都会接近于0

L1会趋向于产生少许的特征,而其余的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。L1在特征选择时候很是有用,而L2就只是一种规则化而已。

特征向量的归一化方法

  1. 线性函数转换,表达式以下:y=(x-MinValue)/(MaxValue-MinValue)
  2. 对数函数转换,表达式以下:y=log10 (x)
  3. 反余切函数转换 ,表达式以下:y=arctan(x)*2/PI
  4. 减去均值,乘以方差:y=(x-means)/ variance

特征向量的异常值处理

  1. 用均值或者其余统计量代替

越小的参数说明模型越简单

过拟合的,拟合会通过曲面的每一个点,也就是说在较小的区间里面可能会有较大的曲率,这里的导数就是很大,线性模型里面的权值就是导数,因此越小的参数说明模型越简单。

追加:这个其实能够看VC维相关的东西感受更加合适

svm中rbf核函数与高斯和函数的比较

高斯核函数好像是RBF核的一种

KMeans初始类簇中心点的选取

选择批次距离尽量远的K个点

首先随机选取一个点做为初始点,而后选择距离与该点最远的那个点做为中心点,再选择距离与前两个点最远的店做为第三个中心店,以此类推,直至选取大k个

选用层次聚类或者Canopy算法进行初始聚类

ROC、AUC

ROC和AUC一般是用来评价一个二值分类器的好坏

ROC曲线

曲线坐标上:

  • X轴是FPR(表示假阳率-预测结果为positive,可是实际结果为negitive,FP/(N))
  • Y轴式TPR(表示真阳率-预测结果为positive,并且的确真实结果也为positive的,TP/P)

那么平面的上点(X,Y):

  • (0,1)表示全部的positive的样本都预测出来了,分类效果最好
  • (0,0)表示预测的结果所有为negitive
  • (1,0)表示预测的错过所有分错了,分类效果最差
  • (1,1)表示预测的结果所有为positive

    针对落在x=y上点,表示是采用随机猜想出来的结果

ROC曲线创建
通常默认预测完成以后会有一个几率输出p,这个几率越高,表示它对positive的几率越大。
如今假设咱们有一个threshold,若是p>threshold,那么该预测结果为positive,不然为negitive,按照这个思路,咱们多设置几个threshold,那么咱们就能够获得多组positive和negitive的结果了,也就是咱们能够获得多组FPR和TPR值了
将这些(FPR,TPR)点投射到坐标上再用线链接起来就是ROC曲线了

当threshold取1和0时,分别获得的就是(0,0)和(1,1)这两个点。(threshold=1,预测的样本所有为负样本,threshold=0,预测的样本所有为正样本)

AUC

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积不会大于1(通常状况下ROC会在x=y的上方,因此0.5<AUC<1).

AUC越大说明分类效果越好

为何要使用ROC和AUC

由于当测试集中的正负样本发生变化时,ROC曲线能基本保持不变,可是precision和recall可能就会有较大的波动。
http://www.douban.com/note/284051363/?type=like

测试集和训练集的区别

训练集用于创建模型,测试集评估模型的预测等能力

优化Kmeans

使用kd树或者ball tree(这个树不懂)
将全部的观测实例构建成一颗kd树,以前每一个聚类中心都是须要和每一个观测点作依次距离计算,如今这些聚类中心根据kd树只须要计算附近的一个局部区域便可

数据挖掘和机器学习的区别

机器学习是数据挖掘的一个重要工具,可是数据挖掘不只仅只有机器学习这一类方法,还有其余不少非机器学习的方法,好比图挖掘,频繁项挖掘等。感受数据挖掘是从目的而言的,可是机器学习是从方法而言的。

备注

题目主要来源于网络,答案主要来源于网络或者《统计学习方法》,还有本身一小部分的总结,若是错误之处敬请指出
若是想要了解关于常见模型的东东能够看这篇机器学习常见算法我的总结(面试用)文章

相关文章
相关标签/搜索