聚类(Clustering)理论

news2024/12/28 4:32:03

一、无监督学习介绍

        在这小节中,我将开始介绍聚类算法,这是我们学习的第一个非监督学习算法,我们将要让计算机学习无标签数据而不是此前的标签数据。那么什么是非监督学习呢?在学习机器学习知识的开始我曾简单地介绍过非监督学习,然而我还是有必要将其与监督学习做一下比较。

        在一个典型的监督学习中我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,我们有一系列标签并且我们需要据此拟合一个假设函数。与此不同的是,在非监督学习中我们的数据没有附带任何标签,我们拿到的数据就是这样的:

        在这里我们有一系列点却没有标签,因此我们的训练集可以写成只有x^{(1)},x^{(2)},x^{(3)}...,x^{(m)},我们没有任何标签y,因此图上画的这些点没有标签信息。也就是说,在非监督学习中,我们需要将一系列无标签的训练数据输入到一个算法中,然后我们告诉这个算法为我们找找这个数据的内在结构。图上的数据看起来可以分成两个分开的点集(称为簇),一个能够找到我圈出的这些点集的算法,就被称为聚类算法。  

        这将是我介绍的第一个非监督学习算法,此后我们还将提到其他类型的非监督学习算法,它们可以为我们找到其他类型的结构或者其他的一些模式而不只是簇。我将先介绍聚类算法。此后,我将陆续介绍其他算法。那么聚类算法一般用来做什么呢?

        在早些时候我曾经列举过一些应用:①市场分割:也许你在数据库中存储了许多客户的信息,而你希望将他们分成不同的客户群,这样你可以对不同类型的客户分别销售产品或者分别提供更适合的服务。②社交网络分析:事实上有许多研究人员正在研究这样一些内容,他们关注一群人的社交网络,比如说:他们经常跟哪些人联系,而这些人又经常给哪些人发邮件,由此找到关系密切的人群。③组织计算机集群或者更好的管理数据中心,因为如果你知道数据中心中哪些计算机经常协作工作,那么你可以重新分配资源、重新布局网络,由此优化数据中心、优化数据通信。④了解星系的形成,从而探索一些天文学上的细节问题。

二、K-均值算法

        K-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组。同时K-均值是一个迭代算法,假设我们想要将数据聚类成N个组,其方法为:、

①首先选择K个随机的点,称为聚类中心(cluster centroids)

②对于数据集中的每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类

③计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置

④重复步骤②-③直至中心点不再变化

下面是一个聚类示例:

迭代一次

迭代三次

迭代十次

Repeat {

for i = 1 to m

c(i) := index (form 1 to K) of cluster centroid closest to x(i)

for k = 1 to K

μk := average (mean) of points assigned to cluster k

}

        算法分为两个步骤,第一个for循环是赋值步骤,即:对于每一个样例i,计算其应该属于的类;第二个for循环是聚类中心的移动,即:对于每一个类k,重新计算该类的质心。

        K-均值算法也可以很便利地用于将数据分为许多不同组,即使在没有非常明显区分的组群的情况下也可以。下图所示的数据集包含身高和体重两项特征构成的,利用K-均值算法将数据分为三类,用于帮助确定将要生产的T-恤衫的三种尺寸。

 三、优化目标

        K-均值最小化问题是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此 K-均值的代价函数(又称畸变函数 Distortion function)为:

其中{​{\mu }_{​{​{c}^{(i)}}}}代表与{​{x}^{(i)}}最近的聚类中心点,我们的的优化目标是找出使得代价函数最小的 c^{(1)},c^{(2)},...,c^{(m)}u^{(1)},u^{(2)},...,u^{(k)}

        回顾刚才给出的K-均值迭代算法,我们知道:第一个循环是用于减小c^{(i)}引起的代价,而第二个循环则是用于减小u^{(i)}引起的代价,迭代的过程一定会是每一次迭代都在减小代价函数,不然便是出现了错误。

四、随机初始化

在运行K-均值算法之前,我们首先要随机初始化所有的聚类中心点,下面介绍怎样做:

  1. 我们应该选择K<m,即聚类中心点的个数要小于所有训练集实例的数量

  2. 随机选择K个训练实例,然后令K个聚类中心分别与这K个训练实例相等

K-均值的一个问题在于它有可能会停留在一个局部最小值处,而这取决于初始化的情况。

为了解决这个问题我们通常需要多次运行K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行K-均值的结果,选择代价函数最小的结果,这种方法在K较小的时候(2-10)还是可行的,但是如果K较大,这么做也可能不会明显地改善。 

五、选择聚类数

        其实并没有所谓最好的选择聚类数的方法,通常是需要根据不同的问题人工进行选择的。最好的做法是:选择的时候思考我们运用K-均值算法聚类的动机是什么,然后选择能最好服务于该目的聚类数。当我们在讨论选择聚类数目的方法时,有一个方法叫作“肘部法则”。关于“肘部法则”,我们所需要做的是改变K值,也就是聚类类别数目的总数。我们用一个聚类来运行K均值聚类方法,这就意味着所有的数据都会分到一个聚类里,然后计算成本函数或者计算畸变函数J。

        我们可能会得到一条类似于上图左边这样的曲线,像一个人的肘部,这就是“肘部法则”所做的,你会发现这种模式下它的畸变值会迅速下降,从1到2、从2到3之后,你会在3的时候达到一个肘点。在此之后,畸变值就下降的非常慢,看起来就像使用3个聚类来进行聚类是正确的,那么我们就选K=3。但是如果出现了右边这样的情况,你会发现曲线一直在很快地下降,感觉4,5,6,7这几个点都行,那么肘部法则这时候就变得不那么适用了。

        因此最好的方法是:选择的时候思考我们运用K-均值算法聚类的动机是什么,然后选择能最好服务于该目的聚类数。例如,我们的 T-恤制造例子中,我们要将用户按照身材聚类,我们可以分成3个尺寸:S,M,L,也可以分成5个尺寸XS,S,M,L,XL,这样的选择是建立在回答“聚类后我们制造的T-恤是否能较好地适合我们的客户”这个问题的基础上作出的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1422892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Algorithms 4】算法(第4版)学习笔记 02 - 1.4 算法分析

文章目录 前言参考目录学习笔记1&#xff1a;科学方法2&#xff1a;观察举例&#xff1a;三数之和3&#xff1a;近似4&#xff1a;增长数量级4.1&#xff1a;二分查找 demo4.2&#xff1a;二分查找代码实现4.3&#xff1a;二分查找比较次数的证明&#xff08;比较次数最多为lgN…

贪吃蛇的简易实现

技术要点 贪吃蛇的简易实现会运用到语⾔函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等,接下来首先简单介绍一下会运用到的东西。 Win32 API介绍 Windows 这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外, 它同时也是⼀个很⼤的服务中⼼…

嵌入式工程师day15(链表)

内存管理 一.内存管理: 1.malloc void *malloc(size_t size); 功能: 申请堆区空间 参数: size:申请堆区空间的大小 返回值: 返回获得的空间的首地址 失败返回NULL 2.free void free(void *ptr); 功能: 释放…

机器学习-3降低损失(Reducing Loss)

机器学习-3降低损失(Reducing Loss) 学习内容来自&#xff1a;谷歌ai学习 https://developers.google.cn/machine-learning/crash-course/framing/check-your-understanding?hlzh-cn 本文作为学习记录1.降低损失&#xff1a;迭代方法 迭代学习 下图展示了机器学习算法用于训…

idea Statistic使用

问题描述&#xff1a;本地idea版本为2018.3.5&#xff0c;安装Statistic插件后没有出现Statistic图标 原因如下&#xff1a;插件版本太新了&#xff0c;需要历史版本 解决办法&#xff1a; IDEA安装代码统计插件Statistic后左下角图标出不来(亲测)_idea statistic不展示-CSD…

从入门到精通 MATLAB:这些学习网站是不错的选择!

介绍&#xff1a;MATLAB是一种高级的数学计算软件&#xff0c;专门用于算法开发、数据可视化、数据分析以及数值计算。它是MathWorks公司推出的产品&#xff0c;自1984年推向市场以来&#xff0c;已经成为科学计算和工程设计领域的重要工具。以下是MATLAB的主要特点&#xff1a…

【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]

阅读导航 引言一、设计模式概念&#xff08;了解&#xff09;二、单例模式1. 饿汉模式&#xff08;1&#xff09;概念&#xff08;2&#xff09;模拟实现&#xff08;3&#xff09;优缺点&#xff08;4&#xff09;适用场景 2. 懒汉模式&#xff08;1&#xff09;概念&#xff…

【C++进阶08】哈希的应用(位图and布隆过滤器)

一、位图 1.1 位图的概念 面试题 给40亿个不重复的无符号整数&#xff0c;没排过序 给一个无符号整数&#xff0c;如何快速判断一个数是否在 这40亿个数中。【腾讯】 能想到的解决思路&#xff1a; 遍历&#xff0c;时间复杂度O(N)排序(O(NlogN)) 利用二分查找: logN放到哈…

计算机毕业设计 | SpringBoot+vue 教务管理系统(附源码)

1&#xff0c;项目背景 教育需求增长 随着社会的发展&#xff0c;对于教育质量的要求也在不断提高。传统的手工操作和纸质记录已经不能满足现代教学的需求。因此&#xff0c;一个自动化、数字化的教务管理系统成为了必然的选择。 信息化趋势 现代科技的飞速发展使得信息化成为…

【算法】登山(线性DP,最长上升)

题目 五一到了&#xff0c;ACM队组织大家去登山观光&#xff0c;队员们发现山上一共有N个景点&#xff0c;并且决定按照顺序来浏览这些景点&#xff0c;即每次所浏览景点的编号都要大于前一个浏览景点的编号。 同时队员们还有另一个登山习惯&#xff0c;就是不连续浏览海拔相…

如何保证MySQL数据一致性

在当今大数据时代&#xff0c;数据库系统扮演着至关重要的角色&#xff0c;而MySQL作为一种流行的关系型数据库管理系统&#xff0c;在数据一致性方面拥有着丰富的机制和技术。下面简单的探讨MySQL是如何保证数据一致性的。 事务与ACID特性 要了解MySQL如何保证数据一致性&am…

excel中去掉单元格中两个数字之间的空格

excel中去掉单元格中两个数字之间的空格 使用公式&#xff1a;SUBSTITUTE(A1," “,”") 解释&#xff1a;将A1单元格中的空格查找出来并去掉。

香蕉派BPI-M7 瑞芯微RK3588 人工智能开源硬件开发板公开发售

香蕉派(Banana Pi) BPI-M7瑞芯微K3588开源硬件单板计算机公开销售&#xff0c;支持WiFi 6和BT5.2&#xff0c;硬件有3个版本:8G Ram64G eMMC, 16G Ram128 eMMC和32G Ram128 eMMC 香蕉派BPI-M7采用睿芯最新旗舰RK3588八核64位处理器&#xff0c;最高频率为2.4GHz, 6 TOPS NPU&…

网络安全全栈培训笔记(59-服务攻防-中间件安全CVE复现lSApacheTomcataNginx)

第59天 服务攻防-中间件安全&CVE复现&lS&Apache&Tomcata&Nginx 知识点&#xff1a; 中间件及框架列表&#xff1a; lIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins, GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Sprng,Flask,…

MicrosoftEdge浏览器打开网页出现“此网站被人举报不安全”问题时解决办法

1&#xff1a;有时候不知怎么回事用电脑自带的微软浏览器进行搜索会出现以下的问题 这可能是由于我们的浏览器安全审查过于严格引起的 Windows10正式版系统下&#xff0c;使用Edge浏览器浏览网页时候&#xff0c;发现整个页面突然变成了红色&#xff0c;显示“已有人举报此网站…

【项目管理】立项管理

一、前言 对于甲方的立项&#xff1a;需求调研二编写项目申请书一可行性研究&#xff08;机会、初步、详细&#xff09;一项目论证一项目评估一评审获得批准一发布招标文件&#xff01;对于乙方的立项&#xff1a;看到招标文件一进行项目识别一可行性研究&#xff08;机会、初…

MATLAB - 控制小车上的倒立摆

系列文章目录 前言 一、小车 - 摆杆 小车 - 摆杆模型如图 1 所示&#xff0c;使用 Simscape™ Multibody™ 在 Simulink 中建模。 图 1&#xff1a;小车上的倒立摆 图 2&#xff1a;Simscape 多体模型 该系统通过对小车施加可变力 进行控制。控制器需要在将小车移动到新位置或…

【OpenCV】在Linux上使用OpenCvSharp

前言 OpenCV是一个基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;它具有C&#xff0c;Python&#xff0c;Java和MATLAB接口&#xff0c;并支持Windows&#xff0c;Linux&#xff0c;Android和Mac OS。OpenCvSharp是一个Ope…

Python中类的相关术语(附带案例)

目录 1、面向对象 2、类 3、实例 4、初始化方法 5、魔法方法 6、字符串方法 7、self 8、数据、属性、操作、行为 9、父类、基类、超类 or 子类、派生类 10、多态 11、重载多态 and 重写多态 12、名称解释 1、面向对象 在Python中&#xff0c;面向对象编程&…

由《幻兽帕鲁》私服漏洞引发的攻击面思考

《幻兽帕鲁》私服意外丢档 当了一天的帕鲁&#xff0c;回家开机抓帕鲁的时候发现服务器无法连接。运维工具看了下系统负载发现 CPU 已经跑满。 故障排查 登录服务器进行排查发现存在可疑的 docker 进程。 经过一番艰苦的溯源&#xff0c;终于在命令行历史中发现了端倪 攻击…