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

article/2025/9/9 10:13:41

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

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


文章目录

  • 机器学习面试题——聚类算法
    • @[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)没事常来看看,理解一下,准备给面试用的


http://chatgpt.dhexx.cn/article/D00KKIEg.shtml

相关文章

机器学习面试题目整理

0 调参技巧 清洗数据,数据预处理,数据增广是否使用预训练模型使用BN在过拟合后,使用正则化技巧如L1、L2、Dropout对于不均匀样本,使用重采样使用合适的优化器。第一,如果你关心快速收敛,使用自适应优化器&…

面试 | 22道机器学习常见面试题目

(1) 无监督和有监督算法的区别? 有监督学习:对具有概念标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数据进行标记(分类)预测。这里,所有的标记(分类&#xf…

最基本的25道深度学习面试问题和答案

近年来,对深度学习的需求不断增长,其应用程序被应用于各个商业部门。各公司现在都在寻找能够利用深度学习和机器学习技术的专业人士。在本文中,将整理深度学习面试中最常被问到的25个问题和答案。如果你最近正在参加深度学习相关的面试工作&a…

机器学习高频面试题(41道)

Q1: What’s the trade-off between bias and variance? 问题1: 什么是偏差(bias)、方差(variable)之间的均衡? Bias 是由于你使用的学习算法过度简单地拟合结果或者错误地拟合结果导致的错误。它反映的是模型在样本…

总结了200道经典的机器学习面试题(附参考答案)

刷题,是面试前的必备环节。本文总结了往年BAT机器学习面试题,干货满满,值得收藏。 想要入职大厂可谓是千军万马过独木桥。 为了通过层层考验,刷题肯定是必不可少的。本文根据网络在线发布的BAT机器学习面试1000题系列&#xff0…

微信小程序—域名配置(图文)

微信小程序—域名配置 1、微信公众平台登录 进入后选择‘开发’ 选择‘开发设置’ 域名配置,输入easy-mock即可(因为我用的地址就是easy-mock,如果用的是豆瓣接口就直接域名配置成豆瓣的就行) 2、打开右上角的详情 选择不校验…

微信小程序:小程序服务器域名配置合法域名

微信小程序开发过程中,微信小程序只要有网络请求就必定要用到服务器接口,这样的话就需要在微信小程序管理平台里面添加服务器的域名,而且添加的这个域名一定是合法有效的域名,不然就不会设置成功的。 微信小程序在生产环境下如果没有配置合法域名,是不能正常访问的,那就…

tomcat 配置域名

Tomcat 配置域名 在windows中首先找到conf下面的server.xml 把Connector 标签中的端口改成80 然后把添加一个Host name为域名appBase为路径 如下 Engine 标签也是 最后在C盘 windows\System32\drivers\etc 下面的hosts添加下面这行 127.0.0.1 www.test.com 重新启动tomcat …

vuepress(六)阿里云二级域名配置与添加SSL证书

文章目录 写在前面第一类:用来存放网站第二类:自定义 OSS对象存储 的图片路径 写在前面 这里是小飞侠Pan🥳,立志成为一名优秀的前端程序媛!!! 本篇博客收录于我的github前端笔记仓库中&#x…

前端nginx配置并且同一域名配置多个项目以及nginx跨域设置

前端nginx配置并且同一域名配置多个项目 前端nginx配置并且同一域名配置多个项目first of all下载配置nginx配置nginx开机自启动nginx -t 找不到nginx的修复nginx进行重启Nginx同一个域名配置多个项目nginx按不同的目录分发给不同的项目启用二级域名,不同的项目分配…

vhosts.conf域名配置

DocumentRoot "网站目录" ServerName 域名(比如www.baidu.com) ServerAlias 域名别名(www.baidu.com www.baidu.cn) Directory 得与DocumentRoot目录相同

uniapp:小程序体验版和预览,云函数不响应,小程序域名配置

uniapp槽点 uniapp还是很便利的,为大家免费提供了低代码平台,很多插件和实现方案。使用过程中也有很多想吐槽的,我是第一次接触跨平台,文档上有的地方很笼统,比如这域名配置,文档就没说我应该配置哪个域名…

云服务器配置和域名配置

阿里云服务器 之前在阿里云上买了域名和云服务器,挂放博客和常的小项目,买的最低配的,但是内存太小,另外买了一个硬盘。 我所使用的是windows系统的,方便快捷操作。 远程桌面连接 windows自带的远程桌面连接功能&…

linux安装nginx并配置ssl证书 HTTPS和域名配置

1.下载安装包 cd /usr/local/src/wget http://nginx.org/download/nginx-1.21.3.tar.gz2.解压。tar -xzf nginx-1.21.3.tar.gz 3.cd nginx-1.21.3 4.yum install openssl openssl-devel 5.安装ssl证书需要的模块。 ./configure --with-file-aio --with-threads --with-http_…

Windows配置域名

Windows配置域名 最近想在Windows 电脑玩玩 Apache2,想用域名来完成做代理,所以涉及Windows配置域名,来记录一下 Apache Linux 的安装查看:Apache2的安装与介绍 Apache Windows 的安装请查看:Apache2 Windows 安装 …

微信公众号网页授权域名和JS接口安全域名配置攻略

这篇博文跟大家分享下如何配置微信公众号网页授权域名和JS接口安全域名配置。 打开微信公众平台 https://mp.weixin.qq.com/ 登陆成功后进入微信公众平台后台管理,在最底部可以看到 开发—》接口权限 我们可以看到正如下图所示有两个非常常用的接口:微…

域名——host配置

httpd-vhosts.conf 配置 在D:\xampp\apache\conf\extra中打开httpd-vhosts.conf文件&#xff0c;找到文件末尾&#xff0c;添加 <VirtualHost *:80> DocumentRoot "D:\work\Lianxi" ServerName mydemo <Directory "D:\work\Lianxi"> Opti…

支付宝小程序H5域名配置

位置&#xff1a; 支付宝开放平台--【控制台】--【开发设置】--【开发设置】--【H5域名配置】 提示 1、下载校验文件是一个.html文件&#xff0c;放到前端项目根目录 2、点击这里&#xff0c;可能有bug,不用管&#xff0c; 3、把域名https://xxx.com添加点确定&#xff0c;可…

阿里云申请域名及域名配置https

1、阿里云域名申请 买到域名之后&#xff0c;要对域名进行实名认证&#xff08;上传身份证并拍照&#xff09;&#xff08;阿里云审核一天&#xff09; 2、域名工信部备案 1、阿里云域名备案&#xff0c;这个也要实名认证&#xff0c;其中阿里云员工审核并打电话&#xff08;…

微信小程序服务器域名怎么填,微信小程序合法域名配置方法

在微信小程序的开发过程中&#xff0c;当需要请求第三方网站数据时。各种教程就直接说调用wx.request接口即可。但是当初学者自己用的时候就会出现问题。比如我们这里请求聚合数据的API(里边有不少免费的数据申请就可以使用)。调用邮编查询的接口。 getPostInfo: function (nu,…