机器学习面经-kmeans、knn

一、简介

当涉及到聚类和分类问题时,K-Means(k均值)和KNN(K最近邻)是两种常用的机器学习算法。K-Means的目标是最小化所有数据样本到其所属簇中心的平方距离之和,即簇内误差平方和(SSE)。该算法适用于密集型数据和簇结构明显的情况,但对于不同大小、不同密度的簇效果可能不佳。KNN通常适用于小规模的数据集,而且对于特征空间的维度较高时效果可能较差。此外,KNN是一种"懒惰学习"算法,它在预测时需要存储全部的训练数据,并且计算复杂度较高。

二、面经

1、请简单介绍一下Kmeans的思想,它的优缺点分别是什么?

2、Kmeans时间、空间复杂度分别为多少?

3、Kmeans聚类如何选择初始点?

4、在你用Kmeans的时候一般是如何调优的?K值你是如何确定的?

5、Kmeans聚类,聚的是样本还是特征,特征的距离如何计算?

6、Kmeans和EM算法的关系?

7、除了Kmeans,你还知道哪些聚类算法?

8、请简单介绍啊一下KNN、以及它的优缺点?

9、KNN中的K值一般是怎么选的?

10、KNN需要数据归一化吗?

11、KNN的三要素是什么?

12、KNN中K值选择过大会有什么问题?

三、面经参考回答

1、请简单介绍一下Kmeans的思想,它的优缺点分别是什么?

参考回答:K-Means算法的基本思想很简单,事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。一般在算上实现上,我们通过这么几种方式来设置看是否停止:1.设置最大的迭代次数。2.每一个元素的状态不在改变。3.质心的变化 < e,变化小于一个值。

优点:原理简单,容易实现;

缺点:收敛较慢, 算法时间复杂度比较高 O(nkt),需要事先确定超参数K,对k值比较敏感,对噪声和离群点敏感,结果不一定是全局最优,只能保证局部最优。

2、Kmeans时间、空间复杂度分别为多少?

参考回答:时间复杂度:O(tKmn),其中t为迭代次数,K 为簇的数目,m 为记录数,n为维数空间复杂度:O((m+K)n),其中,K 为簇的数目,m 为记录数,n 为维数。

3、Kmeans聚类如何选择初始点?

参考回答:在实际应用中,由于Kmean一般作为数据预处理,或者用于辅助聚类贴标签。所以k一般不会设置很大。可以通过枚举,令k从2到一个固定值如10,在每个k值上重复运行数次kmeans(避免局部最优解),并计算当前k的平均轮廓系数,最后选取轮廓系数最大的值对应的k作为最终的集群数目。

4、在你用Kmeans的时候一般是如何调优的?K值你是如何确定的?

参考回答:调优主要是对数据归一化和离群点的处理。因为k-means是根据欧式距离来度量数据的划分,均值和方差大的数据会对结果有致命的影响。同时,少量的噪声也会对均值产生较大的影响,导致中心偏移。所以在聚类前一定要对数据做处理。

对于K值的选择,我一般是取几个比较小的k值,然后进行交叉验证。选择合适的k值。或者用k-means++ 的方法。k-means++方法,在一开始确定簇时,让所有簇中心坐标两两距离最远。k-means++算法:K-means++算法选择初始聚类中心的的基本思想就是:初始的聚类中心之间的相互距离

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白机器学习面试指南 文章被收录于专栏

林小白的机器学习指南,从本人面试的机器学习算法岗位出发,对机器学习“八股文”做详细的介绍、推导;

全部评论
Mark
点赞 回复 分享
发布于 2023-09-03 23:27 安徽
mark
点赞 回复 分享
发布于 2023-07-28 22:57 安徽
mark
点赞 回复 分享
发布于 2023-07-28 22:08 安徽
m
点赞 回复 分享
发布于 2023-07-28 02:24 北京
mark
点赞 回复 分享
发布于 2023-07-26 02:57 江苏

相关推荐

点赞 评论 收藏
分享
小厂面经,也是我的处女面(30min)1.自我介绍2.spring&nbsp;boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring&nbsp;task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
评论
10
40
分享

创作者周榜

更多
牛客网
牛客企业服务