机器学习第十一课--K-Means聚类
一.聚类的概念
K-Means算法是最经典的聚类算法,几乎所有的聚类分析场景,你都可以使用K-Means,而且在营销场景上,它就是"King",所以不管从事数据分析师甚至是AI工程师,不知道K-Means是”不可原谅“的一件事情。在面试中,面试官也经常问关于K-Means的问题。虽然算法简单,但也有一些需要深入理解的点,这些都会在本章节所涉及到。
二.K-Means的迭代过程
在进入K-Means算法的细节之前,我们先了解一下它整个的计算过程,理解起来很简单。整个过程是迭代式的算法,每次迭代过程包含如下两步操作:
- 根据给定的中心点,计算出每一个样本的所属的类别(cluster),这个过程结束之后每一个样本都会有自己所属的类别。
- 之后把每一个类别所属的所有样本提取出来,计算平均值并作为新的中心点。
上述过程会不断循环,直到算法停止为止。



先第一步,固定uk也就是中点,去对样本做标记,标记完用标记后的样本求均值
在第一节里我们已经讲过k-Means的实现细节,而且在实现细节上也有分两步骤循环迭代的过程,其实那个过程正好对应现在讲的优化方案:固定中心点,求出每一个样本所属的最佳中心点的过程为算法里的第一步; 固定每个样本的类别,重新计算中心点的过程为算法里的第二步。
三.不同初始化对参数的影响
那这个说明什么问题呢?问题的本质在于我们每次得到的不是全局最优解,而是局部最优解!类似的现象也会发生在神经网络当中,不同的初始化结果会带来不一样的结果。所以当我们使用神经网络的时候会通过一些技巧去更好地初始化参数的。因为,对于这类的模型,好的初始化值会带来更好的最终结果的,也相当于得到了更好的局部最优解。那为什么k-means只能得到局部最优解呢? 其核心是非凸函数。 如果一个目标函数是非凸函数,那我们其实不能保证或者没有办法得到全局最优解的!如果想深入理解这些理论,建议大家去学习一下凸优化理论,所有的细节都会在凸优化领域涉及到的。
四.层次聚类
在上一节为止,我们讨论了如何使用K-Means算法来做聚类。总体来讲,算法通过迭代的方式最后找出聚类的结果。在这里,我们来学习一下另外一种聚类方法叫作层次聚类,通过层次聚类我们可以对原有样本数据做层次上的划分。相反,K-Means算法本身是扁平化的,不具备任何层次的概念,而且使用K-Means的是需要提前指定K值的, 但很多时候我们并不能提前知道到底有分成多少个clusters。
层次聚类,另一方面,不需要提前指定K,而是在学习过程中动态地去选定一个合适的K值。
对于不规则的样本,K-Means算法的表现也会比较差。接下来,我们说一下层次关系。如上所述, K-Means算法在聚类时是不能捕获层次关系的。但层次关系有些时候还是挺有用的,比如通过观察人和人之间的关系来挖掘哪些是事件的发起者、组织是如何运作的。层次聚类算法的好处就是通过算法自动给数据做分层,数据之间的层次关系一目了然,当然这也取决于数据和算法的准确性了。通过层次聚类算法最终我们得到的是一个叫作Dendrogram的图,就是最后的结果。
4.1从下到上的层次聚类
我们来学习一下如何使用自下而上的方式来做层次聚类,这是两种层次聚类算法中最为常见的一种。它的核心思想是:一开始每一个点是一个cluster, 然后把类似的cluster慢慢做合并,到了最后就只剩一个cluster了,这个时候即可以停下来。等做完所有步骤之后,我们就可以从现有的结果中选择合理的聚类结果了。比如我们设定一个阈值,然后基于这个阈值就可以得到相应的clusters了。自下而上层次聚类过程的一个核心是:相似度的计算,因为涉及到了不同cluster之间的合并。下面给大家介绍三种常见的距离计算的方法:

第一种情况是两个cluster的合并是基于最短距离来完成的,第二种情况是根据最长的距离,最后一种情况是通过平均距离来做合并的。
max还是根据最短的来合并,但是距离根据最大距离来算
4.2 从上到下的层次聚类
在这里,我们看另外一种层次聚类算法:自上而下的方法。这个方法恰恰跟自下而上的方法相反。一开始我们只有一个大的cluster, 由所有的样本组成,之后逐步把每一个cluster切分成更小的,直到每一个cluster只包含一个样本为止,这也意味着整个流程已完成。这个过程跟上节课里讲过的恰恰相反,每次需要考虑的是如何把一个大的cluster切分成两个clusters,所以这里的切分标准格外重要。但相比自下而上的方法,自上而下的聚类算法用的并不是那么多,大致了解一下就可以了。
在这里,我来介绍一个比较经典的自上而下的方法。 这个方案基于大家所熟悉的图算法,叫作最小生成树(minimum spanning tree)。

感觉连错了
对于最小生成树,有几个比较常见的算法,分别是Prime和Kruskal算法。具体细节不在这里做详细阐述,感兴趣的朋友们可以自行去查看这两种算法。理解了MST之后,我们就可以开始谈论自上而下的方法了。其实之后的操作非常简单,请看下面的一段视频。

把最大的砍掉。
相关文章:
机器学习第十一课--K-Means聚类
一.聚类的概念 K-Means算法是最经典的聚类算法,几乎所有的聚类分析场景,你都可以使用K-Means,而且在营销场景上,它就是"King",所以不管从事数据分析师甚至是AI工程师,不知道K-Means是”不可原谅…...
Java on Azure Tooling 8月更新|以应用程序为中心的视图支持及 Azure 应用服务部署状态改进
作者:Jialuo Gan - Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,欢迎阅读 Java on Azure 工具的八月更新。在本次更新中,我们将推出新的以应用程序为中心的视图支持,帮助开发人员在一个项…...
论文笔记:ST2Vec: Spatio-Temporal Trajectory SimilarityLearning in Road Networks
2022 KDD 1 intro 现有的轨迹相似性学习方案强调空间相似性而忽视了时空轨迹的时间维度,这使得它们在有时间感知的场景中效率低下 如上图,在拼车过程中,T1表示司机计划的行程,T2和T3是两个想要搭车的人。T1和T2在空间上更接近&am…...
upload-labs靶场未知后缀名解析漏洞
upload-labs靶场未知后缀名解析漏洞 版本影响: phpstudy 版本:5.2.17 1 环境搭建 1.1 在线靶场下载,解压到phpstudy的www目录下,即可使用 https://github.com/c0ny1/upload-labs1.2 已启动:访问端口9000&…...
VisualStudio配置opencv
下载opencv 链接:https://opencv.org/releases/ 我下载的是4.7.0,选择windows下载。 下载成功后打开exe文件,选择路径安装。 配置环境变量 安装成功后找到安装目录,复制bin目录路径。 我的是放在了D盘 D:\Opencv4.7.0\opencv…...
如何通过git指令加入管理者仓库并提交分支(Github Gitee)
文章目录 创建GitHub、Gitee账户安装git下载gitgit基础配置 管理者创建gitee仓库新建仓库配置公钥 管理者管理仓库开发者通过git指令提交git提交错误原因: 创建GitHub、Gitee账户 GitHub: https://github.com/ Gitee : https://gitee.com/ …...
LuatOS-SOC接口文档(air780E)-- fastlz - FastLZ压缩
示例 -- 与miniz库的差异 -- 内存需求量小很多, miniz库接近200k, fastlz只需要32k原始数据大小 -- 压缩比, miniz的压缩比要好于fastlz-- 准备好数据 local bigdata "123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw" -- 压缩之 local cdata …...
MySQL表的增删改查(进阶)
一 、数据库约束 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。 确保某列(或两个列多个列的结合)有唯一标识, 有…...
Greenplum实用工具-gpfdist
注:本文翻译自https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/utility_guide-ref-gpfdist.html 向Greenplum数据库段提供数据文件或从数据库段写入数据文件。 语法 gpfdist [-d <directory>] [-p <http_port>] [-P <last_http…...
axios和fetch的区别
axios和fetch都是用于发起HTTP请求的工具,但是它们有一些区别: 语法和用法:axios是一个基于Promise的HTTP客户端,具有更简洁和直观的语法,可以方便地发送GET、POST、PUT等各种请求,并提供了更多的请求配置选…...
HTML那些重要的知识点
文章目录 ⭐️写在前面的话⭐️一、HTML1.1 锚点链接跳转到当前页面的指定位置跳转到其他页面的指定位置 1.2 自定义列表1.3 表格的跨行跨列1.4 视频和音频内容1.5 页面结构规范1.6 ifram内联框架1.7 表单1.7.1 form标签1.7.2 原生表单部件1.7.3 下拉框1.7.4 文本域1.7.5 文件域…...
《优化接口设计的思路》系列:第四篇—接口的权限控制
系列文章导航 《优化接口设计的思路》系列:第一篇—接口参数的一些弯弯绕绕 《优化接口设计的思路》系列:第二篇—接口用户上下文的设计与实现 《优化接口设计的思路》系列:第三篇—留下用户调用接口的痕迹 《优化接口设计的思路》系列&#…...
BI系统上的报表怎么导出来?附方法步骤
在BI系统上做好的数据可视化分析报表,怎么导出来给别人看?方法有二,分别是1使用报表分享功能,2使用报表导出功能。下面就以奥威BI系统为例,简明扼要地介绍这两个功能。 1、报表分享功能 作用: 让其他同事…...
电脑WIFI突然消失
文章目录 1. 现象2. 解决办法1:重新启用无线网卡设置3. 解决办法2:更新无线网卡驱动4. 解决办法3:释放静电5. 解决办法4:拆机并重新插拔无线网卡 1. 现象 如下图:电脑在使用过程中WIFI消失 设备管理器中的无线网卡驱…...
http的get与post
get方法: 这个网址可以获取配置信息(我把部分位置字符改了,现在打不开了,不然会被追责) http://softapi.s103.cn/addons/Kmdsoft/Index/config?productwxdk&partner_id111122&osWindows&os_version11&am…...
MySQL 8 和 MySQL 5.7 在自增计数上的区别
MySQL 8 和 MySQL 5.7 在自增计数上的区别 作者:Arunjith Aravindan 本文来源:Percona 博客,爱可生开源社区翻译。 本文约 900 字,预计阅读需要 2 分钟。 Auto-Increment 自增(Auto-Increment)计数功能可以…...
Linux系统之links和elinks命令的基本使用
Linux系统之links和elinks命令的基本使用 一、links与elinks命令介绍1. links命令简介2. elinks命令简介 二、links与elinks命令区别三、links命令选项解释四、links命令的基本使用1. links安装2. 查看links版本3. 图形模式打开网址4. 直接使用links命令5. 打印url版本到标准格…...
【00】FISCO BCOS区块链简介
官方文档:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/introduction.html FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源。 F…...
NPDP产品经理认证怎么报名?考试难度大吗?
PMDA(Product Development and Management Association)是美国产品开发与管理协会,在中国由中国人才交流基金会培训中心举办NPDP(New Product Development Professional)考试,该考试是产品经理国际资格认证…...
免杀技术,你需要学习哪些内容
免杀技术,你需要学习哪些内容? 什么是免杀? 免杀是指通过各种技术手段使恶意软件或病毒能够逃避杀毒软件的检测和阻止,成功地感染目标系统。免杀技术是黑客和恶意软件开发者常用的手段之一,用于隐藏恶意代码并绕过安…...
【免费下载】 PyTorch框架入门PPT下载
PyTorch框架入门PPT下载 【下载地址】PyTorch框架入门PPT下载 PyTorch框架入门PPT下载 项目地址: https://gitcode.com/open-source-toolkit/a64b8 资源介绍 本仓库提供了一个名为“PyTorch框架入门PPT”的资源文件下载。该PPT文件旨在帮助初学者快速入门PyTorch框架&a…...
ElementPlus el-tabs样式踩坑全记录:从‘这怎么改’到‘原来如此’的心路历程
ElementPlus el-tabs样式深度定制实战:从困惑到精通的全过程解析 第一次在产品需求文档里看到"标签页要设计得与众不同"时,我完全没意识到这个看似简单的需求会让我在ElementPlus的样式迷宫里转了三天的圈。作为团队里负责后台管理系统重构的前…...
利用Taotoken模型广场为AIGC应用选择性价比最高的模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken模型广场为AIGC应用选择性价比最高的模型 为AIGC应用选择合适的大语言模型,是平衡生成效果与开发成本的关…...
STM32F4智能灯光控制系统实战:LVGL界面、传感器与MQTT物联网开发
1. 项目概述与核心价值最近在整理手头的嵌入式项目,翻出来一个基于STM32F4的智能灯光控制系统,感觉挺有代表性的。这个项目麻雀虽小,五脏俱全,它把单片机控制、传感器数据采集、GUI界面开发(LVGL)、物联网通…...
从隔壁实验室到网易食堂:一个非985研究生的Python爬虫实习转正全记录
从实验室到网易食堂:一位普通研究生的Python爬虫逆袭之路 记得第一次听说隔壁实验室的Lucky拿到网易实习offer时,我们整个实验室都沸腾了。不是因为网易有多难进——事实上每年都有名校生进入各大厂——而是因为Lucky和我们一样,来自一所普通…...
<数据集>yolo 易拉罐识别<目标检测>
数据集下载链接https://download.csdn.net/download/qq_53332949/92882375数据集格式:VOCYOLO格式 图片数量:3253张 标注数量(xml文件个数):3253 标注数量(txt文件个数):3253 标注类别数:1 标注类别名称ÿ…...
从Django后台到Celery Worker:一个完整用户注册邮件异步发送的部署实录
从Django后台到Celery Worker:一个完整用户注册邮件异步发送的部署实录 在Web应用开发中,用户注册流程是每个系统必备的基础功能。当新用户完成注册表单提交后,系统通常需要发送欢迎邮件或激活链接。如果直接在请求响应周期内执行邮件发送&am…...
为什么越来越多人放弃了传统日记本?因为他们发现了雷小兔写期刊
在这个信息爆炸的时代,我们每个人的心中都装满了故事、想法和情感。但往往,这些珍贵的内容在日常的忙碌中逐渐褪色,最终消散在时间的长河里。你是否也曾有过这样的遗憾——明明想记录下某个瞬间,却苦于没有合适的方式去表达&#…...
全网最全短临降水预报方向科研辅导
...
3分钟终极解决方案:一键将XAPK文件高效转换为通用APK
3分钟终极解决方案:一键将XAPK文件高效转换为通用APK 【免费下载链接】xapk-to-apk A simple standalone python script that converts .xapk file into a normal universal .apk file 项目地址: https://gitcode.com/gh_mirrors/xa/xapk-to-apk 还在为安卓设…...
