一般常用机器学习面试题,看看你能答出来吗?
1、机器学习与数据挖掘的区别
答:机器学习是指在没有明确的程序指令的情况下,给予计算机学习能力,使它能自主的学习、设计和扩展相关算法。数据挖掘则是一种从数据里面提取知识或者未知的、人们感兴趣的规则。在这个过程中应用了机器学习算法。
2、有监督学习和无监督学习的区别
答:有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。如LR,SVM,BP,RF,GBDT;无监督学习:对未标记的样本进行训练学习,发现这些样本中的结构知识。如聚类、降维。
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、对于维度很高(特征比数据量还大时)的特征,选择什么样的分类器
答:线性分类器,因为维度高的时候,数据一般在维度空间里面会比较稀疏,很有可能线性可分。
6、对于维度极低的特征,你是选择线性还是非线性分类器
答:非线性分类器,低维空间可能很多特征都跑到一起了,导致线性不可分。
其他高人见解:
1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况
7、SVM、LR、决策树的对比
模型复杂度:SVM支持核函数,可处理线性非线性问题;LR模型简单,训练速度快,适合处理线性问题;决策树容易过拟合,需要进行剪枝
损失函数:SVM hinge loss; LR L2正则化; adaboost 指数损失
数据敏感度:SVM添加容忍度对outlier不敏感,只关心支持向量,且需要先做归一化; LR对远点敏感
数据量:数据量大就用LR,数据量小且特征少就用SVM非线性核
8、什么是偏差与方差?
答:泛化误差可以分解成偏差的平方加上方差加上噪声。
偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响;噪声表达了当前任务上任何学习算法所能达到的期望泛化误差下界,刻画了问题本身的难度。
偏差和方差一般称为bias和variance,一般训练程度越强,偏差越小,方差越大,泛化误差一般在中间有一个最小值,如果偏差较大,方差较小,此时一般称为欠拟合,而偏差较小,方差较大称为过拟合。
9、缺失值处理的策略
答:1. 缺失值较多,直接将该特征舍弃掉,否则可能反倒会带入较大的noise,对结果造成不良影响。
2. 缺失值较少,其余的特征缺失值都在10%以内,我们可以采取多种方式处理: 1) 把缺失值作为一个特征,假设用0表示;2) 用均值填充;3) 用随机森林等算法预测填充。
10、什么是ill-condition病态问题
答:训练完的模型,测试样本稍作修改就会得到差别很大的结果,就是病态问题,模型对未知数据的预测能力很差,即泛化误差大。