机器学习面试题——聚类算法

提示:互联网大厂经常考的传统机器学习算法


文章目录

  • 机器学习面试题——聚类算法
    • @[TOC](文章目录)
  • 题目
  • k-means介绍一下,K-means的过程
  • k-means优缺点
  • k-means的簇(k簇)怎么选,K-means如何选取K值
  • k-means如何调优,kmeans聚类如何选择初始点?
  • 知道哪些聚类模型,聚类算法知道哪些
  • kmeans聚类,聚的是特征还是样本?特征的距离如何计算?
  • Kmeans算法和EM算法的关系
  • 写Kmeans代码
  • 总结

题目

机器学习面试题汇总与解析——聚类

k-means介绍一下
k-means优缺点
k-means的簇怎么选
k-means如何调优
知道哪些聚类模型
K-means的过程
K-means如何选取K值
kmeans聚类如何选择初始点
kmeans聚类,聚的是特征还是样本?特征的距离如何计算?
聚类算法知道哪些
Kmeans算法和EM算法的关系
写Kmeans代码


k-means介绍一下,K-means的过程

K-Means算法的思想很简单:
(1)事先确定常数K,即最终的聚类类别数
(2)首先随机选定每个类的初始点为质心,并通过计算每一个样本x与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中(最近的类)
(3)接着,更新每个类的质心(即为类中心)
(4)重复(1)–(3)这样的过程,直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。


由于每次都要计算所有的样本与每一个质心之间的相似度,
故在大规模的数据集上,K-Means算法的收敛速度比较慢

k-means优缺点

优点:原理简单,实现容易
缺点:收敛较 =算法时间复杂度比较高 O(nkt)、不能发现非凸形状的簇、需要事先确定超参数K、对噪声和离群点敏感、结果不一定是全局最优,只能保证局部最优

k-means的簇(k簇)怎么选,K-means如何选取K值

**手肘法:**当误差手肘处拐变,然后不咋巨变,那拐点就是k
比如下图k=3,手肘处的k

k-means如何调优,kmeans聚类如何选择初始点?

(0)初始点随机分布
(1)数据归一化和离群点的处理:
上面也说了k-means是根据欧式距离来度量数据的划分,**均值和方差大的数据会对结果有致命的影响。**同时,少量的噪声也会对均值产生较大的影响,导致中心偏移。所以在聚类前一定要对数据做处理。
(2)**选择合适的k值:**k-means++方法,在一开始确定簇时,让所有簇中心坐标两两距离最远

知道哪些聚类模型,聚类算法知道哪些

聚类方法其实有很多,但k-means是最简单、最常考的一种。
(1)K-Means聚类(上面1说过了)
(2)均值漂移聚类
(3)具噪声基于密度的空间聚类算法
(4)高斯混合模型的期望最大化聚类
(5)凝聚层次聚类

(2)均值漂移聚类

Mean-Shift聚类是基于滑动窗口的算法,试图找到数据点的密集区域。
这是一种基于质心的算法,意味着其目标是定位每个簇的中心点,
通过将滑动窗口的均值点作为候选点来迭代更新中心点。
在后处理阶段将消除近似重复的窗口,最终形成一组中心点及其相应的簇。
——与K-means聚类相比,Mean-Shift的最大优势就是可以自动发现簇的数量而不需要人工选择
簇的中心向最大密度点聚合的事实也是非常令人满意的,因为它可被非常直观地理解并很自然地契合数据驱动。





(3)具噪声基于密度的空间聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,类似于Mean-Shift,但具有一些显著的优点。


(4)高斯混合模型的期望最大化聚类

K-Means的主要缺点之一是其简单地使用了平均值作为簇的中心
高斯混合模型(GMMs)相比于K-Means来说有更多的灵活性
对于GMMs,我们假设数据点是服从高斯分布的(对于用均值进行聚类,这一假设是个相对较弱的限制)。
这样,我们有两个参数来描述簇的形状:均值和标准差
以二维为例,这意味着簇可以采用任何类型的椭圆形(因为我们在x和y方向都有标准偏差)。 因此,每个簇都有一个高斯分布。


(5)凝聚层次聚类
分层聚类算法实际上分为两类:自上而下或自下而上。
自下而上算法首先将每个数据点视为单个簇,然后不断合并(或聚合)成对的簇,直到所有簇合并成一个包含所有数据点的簇。因此自下而上的层次聚类被称为分层凝聚聚类或HAC。该簇的层次结构被表示为树(或树状图)。树的根是包含所有样本的唯一的簇,叶是仅有一个样本的簇。在进入算法步骤之前,请查看下面的图解。

分层聚类不要求我们指定聚类的数量,因为我们在构建一棵树,我们甚至可以选择哪个数量的簇看起来最好。
另外,该算法对距离度量的选择不敏感,它们的效果都趋于相同,而对其他聚类算法而言,距离度量的选择则是至关重要的。

分层聚类方法的一个特别好的应用是源数据具有层次结构并且用户想要恢复其层次结构,其他聚类算法则无法做到这一点。
这种层次聚类是以较低的效率为代价实现的,与K-Means和GMM的线性复杂性不同,它具有O**(n3)的时间复杂度。**

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

聚的是特征:聚类的核心思想是将具有相似特征的事物给聚在一起,也就是说聚类算法最终只能告诉我们哪些样本属于同一个类别,而不能告诉我们每个样本具体属于什么类别(分类样这不是聚类干的)。
特征的距离计算方法一般是方差

Kmeans算法和EM算法的关系

对应关系:
K-means是一种迭代算法,每次迭代涉及到两个连续的步骤,分别对应rnk(距离)的最优化和μk(均值)的最优化,也对应着EM算法的E步(求期望)和M步(求极大)两步

EM算法是这样:
假设我们想估计知道A和B两个参数,在开始状态下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。
可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。

写Kmeans代码

其伪代码如下:


创建k个点作为初始的质心点(随机选择
当任意一个点的簇分配结果发生改变时
对数据集中的每一个数据点(i)
对每一个质心(c)
计算质心与数据点的距离
将数据点分配到距离最近的簇(i)
对每一个簇,计算簇中所有点的均值,并将均值作为质心



总结

提示:重要经验:

1)聚类在大厂的笔试,面试可能都会经常考,至少目前笔试经常考!!
2)没事常来看看,理解一下,准备给面试用的

机器学习面试题——聚类算法相关推荐

  1. 基于Spark的机器学习实践 (九) - 聚类算法

    0 相关源码 1 k-平均算法(k-means clustering)概述 1.1 回顾无监督学习 ◆ 分类.回归都属于监督学习 ◆ 无监督学习是不需要用户去指定标签的 ◆ 而我们看到的分类.回归算法 ...

  2. 机器学习中的聚类算法有哪几种?

    目前,聚类算法被广泛应用于用户画像.广告推荐.新闻推送和图像分割等等.聚类算法是机器学习中一种"数据探索"的分析方法,它帮助我们在大量的数据中探索和发现数据的结构.那么机器学习中的 ...

  3. 机器学习实战——密度聚类算法

    机器学习实战--密度聚类算法 1 密度聚类 2 sklearn中的实现 1 密度聚类 密度聚类假设聚类结构能够通过样本分布的密集程度确定,通常情形下,密度聚类算法从样本密度的角度来考察样本之间的可连接 ...

  4. 机器学习实战——层次聚类算法

    机器学习实战--层次聚类算法 1 层次聚类概述 2 sklearn中的实现 1 层次聚类概述 层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构. 数据集的划分可采用"自底向上& ...

  5. 机器学习入门:聚类算法-5

    机器学习入门:聚类算法 1.实验描述 本实验先简单介绍了一下各聚类算法,然后利用鸢尾花数据集分别针对KMeans聚类.谱聚类.DBSCAN聚类建模,并训练模型:利用模型做预测,并使用相应的指标对模型进 ...

  6. 机器学习中的聚类算法(1):k-means算法

    一文详解激光点云的物体聚类:https://mp.weixin.qq.com/s/FmMJn2qjtylUMRGrD5telw 引言: Q:什么是聚类算法? 现在我们在做的深度学习当中,比如图像的识别 ...

  7. 机器学习:k-means聚类算法+算法优化

    第六章:机器学习course02:k-means聚类算法 标签(空格分隔): 10-机器学习 $---by:Rianusr$ ##1 课题导入 ###1.1 k-means常见的应用场景 ![imag ...

  8. 机器学习中的聚类算法

    1. 概述 根据所拥有的数据,可以使用三种不同的机器学习方法,包括监督学习.半监督学习和无监督学习. 在监督学习中,根据已标记数据,因此可以确定输出是关于输入的某种(隐函数)的正确值.通过半监督学习, ...

  9. 【机器学习】常用聚类算法 整理

    sparkML 常用聚类算法 http://spark.apache.org/docs/latest/mllib-clustering.html 如下为 机器学习聚类算法的理论知识: 在机器学习中,无 ...

最新文章

  1. 入门 Python GUI 开发的第一个坑
  2. 判断两个多边形相交的面积_聊聊3D模型组件—顶点,边,多边形
  3. LeetCode Maximal Rectangle(dp)
  4. 外部接口需求怎么写_软件需求规约怎么写
  5. java中多态的例子_java中的多态案例
  6. mysql not in 性能_SQL中Execpt和not in 性能区别
  7. CSS3实现卡片翻转动画
  8. redis服务器环境下mysql实现lnmp架构缓存
  9. Java项目集成永中文档在线预览
  10. 手机上万里挑一的CAD看图软件,好用到颠覆你的世界观!
  11. 鸿蒙操作系统详细流程,鸿蒙系统的启动流程
  12. http的长连接和短连接(史上最通俗!)以及应用场景
  13. python代码画樱花教程-python画樱花树代码 具体代码介绍
  14. c语言变量名拼音,C语言的32个关键字(读音、用法、注释)转来的,给刚接触C的...
  15. 把笔记本变为无线路由器使用(win7无需软件)
  16. 鸿蒙系统应用(HarmonyOS)2
  17. DDPG中的Ornstein-Uhlenbeck过程怎么理解
  18. 高效工具-局域网服务器访问公网
  19. 剧本杀游戏app开发
  20. 解决九号老C(C30/C40/C60/C80)电动车坐垫感应失灵的问题

热门文章

  1. 3Dlut表相关知识
  2. DirectX3d 9 实现3d lut滤镜效果
  3. 《测绘综合能力》——房产测绘
  4. Zbrush必记快捷键汇总「必须收藏」
  5. 亚马逊卖家必备的欧盟和英国新能效政策-跨境创业找众光
  6. VB网络编程(webbrowser应用及Inet抓包封包)
  7. 2016中国员工工资涨幅全球最高,菜鸟在线想知道你怎么看?
  8. 运动耳机哪款稳固性最好、最新的运动蓝牙耳机排行榜
  9. 以管理员身份运行cmd有哪几种方法
  10. windows10用u盘安装LINUX,Windows 10下U盘安装 Ubuntu 17.10