今天开始陆陆续续更新机器学习的面试题,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,如果大家面试中遇到好的面试题也请分享,一起学习,一起进步!

一天1道机器学习面试题(一)
一天1道机器学习面试题(二)

1.K-近邻算法(k-Nearest Neighbors,KNN)
K-近邻是一种分类算法,其思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
算法的步骤为:
(1)计算测试数据与各个训练数据之间的距离;
(2)按照距离的递增关系进行排序;
(3)选取距离最小的K个点;
(4)确定前K个点所在类别的出现频率;
(5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

12.K均值聚类算法(K-means)
k-means算法是一种简单的迭代型聚类算法,采用距离作为相似性指标,从而发现给定数据集中的K个类,且每个类的中心是根据类中所有值的均值得到,每个类用聚类中心来描述。对于给定的一个包含n个d维数据点的数据集X以及要分得的类别K,选取欧式距离作为相似度指标,聚类目标是使得各类的聚类平方和最小,即最小化:
一天1道机器学习面试题(二)(不断更新中。。。)
结合最小二乘法和拉格朗日原理,聚类中心为对应类别中各数据点的平均值,同时为了使得算法收敛,在迭代过程中,应使最终的聚类中心尽可能的不变。
2.1.算法流程:
K-means是一个反复迭代的过程,算法分为四个步骤:
1) 选取数据空间中的K个对象作为初始中心,每个对象代表一个聚类中心;
2) 对于样本中的数据对象,根据它们与这些聚类中心的欧氏距离,按距离最近的准则将它们分到距离它们最近的聚类中心(最相似)所对应的类;
3) 更新聚类中心:将每个类别中所有对象所对应的均值作为该类别的聚类中心,计算目标函数的值;
4) 判断聚类中心和目标函数的值是否发生改变,若不变,则输出结果,若改变,则返回2)。
2.2.超参数k的选择
K作为该算法唯一的超参数,是一把双刃剑
优点:选定K,模型的训练就不需要干预了,很简单
缺点:K的影响很大,K选不好,模型就很差,导致性能不稳定
选取方法:
1.经验。。。
2.手肘法
选若干个k,比如2,3,4,5,6
分别跑一遍K-Means,稳定后,得到5个损失(上面的那个公式)
一般损失先下降快,后下降慢,存在一个拐点,如下图
K=4可能是一个不错的选择
因为曲线像手肘,所以叫手肘法。。。
3.ISODATA
该方法的K是动态变化的
如何变化?
该算法有分裂和合并操作
分裂:一类变两类
合并:两类变一类

1.选定初始K0,一般最后的K的范围大概是0.5K0~2K0。所以,即使K可以动态变化,K0的选择也得多少靠点谱
2.设定每类最少的样本数,如果少于最少样本数,这个类不能分裂
3.计算方差评定一个类中所有样本的分散程度,分散程度大于阈值,并且满足2中的条件,进行分裂
4.计算两个质心的距离,小于阈值,两个类合并
其余步骤和普通K-Means一样,只是每次聚类结束,要进行分裂和合并操作
2.3随机的质心不好对性能影响很大
解决方法:K-Means++
该方法和K-Means仅在初始选择质心的时候不同:
随机选取第1个质心
选第n+1个质心时,计算剩余样本点与前n个质心的距离
离前n个质心距离越远,该样本点被选为第n+1个质心的概率越大
3.凸优化问题
对于目标函数,我们限定是凸函数;对于优化变量的可行域(注意,还要包括目标函数定义域的约束),我们限定它是凸集。同时满足这两个限制条件的最优化问题称为凸优化问题,这类问题有一个非常好性质,那就是局部最优解一定是全局最优解。接下来我们先介绍凸集和凸函数的概念。
3.1.凸集
一天1道机器学习面试题(二)(不断更新中。。。)
则称该集合称为凸集。如果把这个集合画出来,其边界是凸的,没有凹进去的地方。直观来看,把该集合中的任意两点用直线连起来,直线上的点都属于该集合。
一天1道机器学习面试题(二)(不断更新中。。。)
3.2.凸函数
一天1道机器学习面试题(二)(不断更新中。。。)
一天1道机器学习面试题(二)(不断更新中。。。)
如果去掉上面的等号,则函数是严格凸的。对于多元函数,如果它是凸函数,则其Hessian矩阵为半正定矩阵。如果Hessian矩阵是正定的,则函数是严格凸函数。Hessian矩阵是由多元函数的二阶偏导数组成的矩阵。
根据多元函数极值判别法,假设多元函数在点M的梯度为0,即M是函数的驻点,则有:
1.如果Hessian矩阵正定,函数在该点有极小值
2.如果Hessian矩阵负定,函数在该点有极大值
3.如果Hessian矩阵不定,还需要看更高阶的导数
这可以看做是一元函数极值判别法对多元函数对推广
一天1道机器学习面试题(二)(不断更新中。。。)
是凸函数。
3.3.凸优化
凸优化问题可以形式化的写成:
一天1道机器学习面试题(二)(不断更新中。。。)
其中x为优化变量;f为凸目标函数;C是优化变量的可行域,是一个凸集。这个定义给了我们证明一个问题是凸优化问题的思路,即证明目标函数是凸函数(一般是证明它的Hessian矩阵半正定),可行域是凸集。
3.4.局部最优和全局最优
凸优化问题有一个重要的特性:所有局部最优解都是全局最优解。这个特性可以保证我们在求解时不会陷入局部最优解,即如果找到了问题的一个局部最优解,则它一定也是全局最优解,这极大的简化了问题的求解。之所以凸优化问题的定义要求目标函数是凸函数而且优化变量的可行域是凸集,是因为缺其中任何一个条件都不能保证局部最优解是全局最优解。
4.偏差和方差
一天1道机器学习面试题(二)(不断更新中。。。)

一天1道机器学习面试题(二)(不断更新中。。。)
一天1道机器学习面试题(二)(不断更新中。。。)
一天1道机器学习面试题(二)(不断更新中。。。)
朴素贝叶斯算法简单的假设了各个特征之间是无关的,是一个被严重简化了的模型。所以,对于这样一个简单模型,大部分场合都会bias部分大于variance部分,也就是高偏差,低方差
4.K-Means或KNN中,通常使用欧式距离来表示最近的数据点之间的距离,有时候也使用曼哈度距离,对比两者的区别。
欧式距离最常见的是两个或多个点之间的距离表示法,又称为欧几里得距离。也就是通常所说的L2范数,欧式距离的缺点是它将样本的不同属性之间的差别等同看待,这一点有时候不能满足实际要求。
曼哈顿距离,也就是欧式空间中的在直角坐标系上两个点所形成的线段对轴产生的投影的距离总和。也就是我们所说的L1距离。例如,坐标(x1,y1)的点P1与坐标(x2, y2)的点P2的曼哈顿距离计算公式为:
一天1道机器学习面试题(二)(不断更新中。。。)
5.生成模型和判别模型
前一篇文章7.3也有提到。
一天1道机器学习面试题(二)(不断更新中。。。)
6.参数模型和非参数模型
在统计学中,参数模型通常假设总体服从某个分布,这个分布可以由一些参数确定,如正态分布由均值和标准差确定,在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设或者说是数据分布假设自由,只知道其分布是存在的,所以就无法得到其分布的相关参数,只能通过非参数统计的方法进行推断。
所以说,参数模型和非参数模型中的“参数”并不是模型中的参数,而是数据分布的参数

参数模型:根据预先设计的规则,例如方差损失最小,进行学习,参数模型例子:回归(线性回归、逻辑回归)模型;最好可以看一下或者直接进行一下相关的推导;根据规则,拥有少部分数据就可以;
非参数模型:不需要事先假设规则,直接挖掘潜在数据中的规则;非参数模型例子:KNN,决策树,挖掘数据潜在的特征,所以比较灵活;当你拥有许多数据而先验知识很少时,非参数学习通常很有用,此时你不需要关注于参数的选取。
总结
1、通过对比参数模型和非参数模型的特点,可以得知参数模型对训练数据的大小要求不如非参数模型高,因为参数模型通过对拟合函数进行假设,所以只需要对参数进行拟合即可;而非参数模型由于需要从数据中发掘数据之间关系,所以对数据量要求较高。
2、通常说到的机器学习的黑盒特性,一般指的就是非参数机器学习模型。因为它不需要做出假设,并且需要拟合很多参数,所以它的解释性就降低了。所以相比而言,参数机器学习模型由于对数据做出了理想的假设,所以得到的模型更加鲁棒,所以解释性也就更高。
总结
1、通过对比参数模型和非参数模型的特点,可以得知参数模型对训练数据的大小要求不如非参数模型高,因为参数模型通过对拟合函数进行假设,所以只需要对参数进行拟合即可;而非参数模型由于需要从数据中发掘数据之间关系,所以对数据量要求较高。
2、通常说到的机器学习的黑盒特性,一般指的就是非参数机器学习模型。因为它不需要做出假设,并且需要拟合很多参数,所以它的解释性就降低了。所以相比而言,参数机器学习模型由于对数据做出了理想的假设,所以得到的模型更加鲁棒,所以解释性也就更高。
7.EM算法

相关文章: