聚类算法(K-Means和DBSCAN)

本文详细介绍了聚类算法中的两种重要方法——K-Means和DBSCAN。K-Means是一种基于原型的聚类算法,通过迭代寻找数据的K个聚类中心,而DBSCAN则是一种基于密度的聚类算法,能有效处理非球形边界的数据。文章阐述了两种算法的核心概念、参数调整和在sklearn库中的实现,强调了K-Means中n_clusters的选择和DBSCAN的Eps和MinPts参数的重要性。通过实例展示了K-Means和DBSCAN在处理相同数据集时的不同效果,表明DBSCAN在捕获数据自然结构上的优势。
摘要由CSDN通过智能技术生成

聚类算法(K-Means和DBSCAN)

目录

一、无监督学习与聚类算法

1、旨在理解数据自然机构的聚类

2、用于数据处理的聚类

二、核心概念

1、聚类分析

2、簇

三、基于原型的技术:K-Means

1、基于原型的簇

2、K-means的基本定义

3、算法执行细节

四、使用sklearn实现K-Means

1、重要参数:n_clusters

2、聚类算法的模型评估指标:轮廓系数

3、案例:基础轮廓系数来选择n_clusters

4、重要参数init &random_state&n_init

5、重要参数max_iter &tol

五、基于密度的聚类算法:DBSCAN

1、DBSCAN基本原理

2、DBSCAN算法执行过程

3、sklearn实践

一、无监督学习与聚类算法

决策树、线性和逻辑回归都是比较常用的机器学习算法,他们虽然有着不同的功能,但却都属于 “有监督学习” 的一部分,即是说,模型在训练的时候,即需要特征矩阵X,也需要真实标签y。机器学习当中,还有相当一部分算法属于 “无监督学习” ,无监督的算法在训练的时候只需要特征矩阵X,不需要标签。无监督学习的代表算法有聚类算法、降维算法。

在这里插入图片描述

聚类算法是无监督类机器学习算法中最常用的一类,其目的是将数据划分成有意义或有用的组(也被称为簇)。这种划分可以基于我们的业务需求或建模需求来完成,也可以单纯地帮助我们探索数据的自然结构和分布。如果目标是划分成有意义的组,则簇应当捕获数据的自然结构。然而,在某种意义下,聚类分析只是解决其他问题(如数据汇总)的起点。无论是旨在理理解还是应用,聚类分析都在广泛的领域扮演着重要角色。这些领域包括:心理理学和其他社会科学、生物学、统计学、模式识别、信息检索、机器学习和数据挖掘。

1、旨在理解数据自然机构的聚类

在对世界的分析和描述中,类,或在概念上有意义的具有公共特性的对象组,扮演着重要的角色。的确,人类擅长将对象划分成组(聚类),并将特定的对象指派到这些组(分类)。例如,即使很小的孩子也能很快地将图片上的对象标记为建筑物、车辆、人、动物、植物等。就理解数据而言,簇是潜在的类,而聚类分析是研究自动发现这些类的的技术。比如生物学、信息搜索、气候、商业、心理学和医学等。

2、用于数据处理的聚类

聚类分析提供由个别数据对象到数据对象所指派的簇的抽象。此外,一些聚类技术使用簇原型(即同一个簇中用于代表其他对象的数据对象,例如质心等)来刻画簇特征。这些簇原型可以用作大量量数据分析和数据处理理技术的基础。因此,就聚类用于数据处理层面而言,聚类分析是研究发现最有代表性的簇原型的技术。

①数据降维
许多数据分析技术,如回归和PCA,都具有 O ( m 2 ) O(m^2) O(m2) 或更高的时间或空间复杂度(其中是对象的个数)。因此对于大型数据集,这些技术不切实际。然而,可以将算法用于仅包含簇原型的数据集,即每一列只保留留其原型,而不是整个数据集。依赖分析类型、原型个数和原型代表数据的精度,行汇总结果可以与使用所有数据得到的结果相媲美。
②数据离散压缩
簇原型可以用于数据列压缩。例如,创建一个包含所有簇原型的表,即每个原型赋予一个整数值,作为它在表中的位置(索引)。每个对象用于它所在的簇相关联的原型的索引表示。这类压缩称作向量量化(vector quantization),并常用于图像、声音和视频数据。无论是用于数据降维还是离散压缩,都将损失一定的数据信息量,而能够使用聚类进行信息浓缩的数据的特点是:
(1)许多数据对象之间高度相似
(2)某些信息丢失是可以接受的
(3)希望大幅度压缩数据量
③有效地发现最近邻
很多机器学习算法都是基于距离的模型,即找出最近邻可能需要计算所有点对点之间的距离,如之前介绍的KNN。通常我们可以使用簇原型减少发现对象最近邻所需要计算的距离的数目。直观地说,如果两个簇原型相距很远,则对应簇中的对象不可能互为近邻。这样,为了找出一个对象的最近邻,只需要计算到邻近簇中对象的距离,其中两个簇的邻近性用其原型之间的距离度量,从而大幅降低KNN类算法的计算量。

二、核心概念

1、聚类分析

聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组。其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不不相关的)。组内的相似性(同质性)越大,组间差别越大,聚类就越好。

2、簇

简单来说,簇就是分类结果的类,但实际上簇并没有明确的定义,并且簇的划分没有客观标准,

聚类分析与其他将数据对象分组的技术相关。例如,聚类可以看作一种分类,它用类(簇)标号创建对象的标记。然而,只能从数据导出这些标号。相比之下,KNN则是监督分类(supervisedclassfication),即使用由类标号已知的对象开发的模型,对新的、无标记的对象赋予类标号。为此,有时称聚类分析为非监督分类(unsupervised classification)。在数据挖掘中,不附加任何条件使用术语分类时,通常是指监督分类。

三、基于原型的技术:K-Means

1、基于原型的簇

此时簇是对象的集合,并且其中每个对象到定义该簇的原型的距离比到其他簇的原型的距离更更近(或更加相似)。对于具有连续属性的数据,簇的原型通常是质心,即簇中所有点的平均值。当质心没有意义时(例如当数据具有分类属性时),原型通常是中心点,即簇中最有代表性的点。对于许多数据类型,原型可以视为最靠近中心的点;在这种情况下,通常把基于原型的簇看作基于中心的簇(center-basedcluster)。毫无疑问,这种簇趋向于呈球状。下图是一个基于中心簇的例子。

在这里插入图片描述

2、K-means的基本定义

K均值算法,首先,选择K个初始质心,其中K是我们指定的参数,即所期望的簇的个数。每个点指派到最近的质心,而指派到一个质心的点集为一个簇。然后,根据指派到簇的点,更新每个簇的质心。重复指派和更新步骤,直到簇不发生变化,或等价地,直到质心不发生变化。

Means的核⼼心任务就是根据我们设定好的K,找出K个最优的质⼼心,并将离这些质⼼心最近的数据分别分配到这些质⼼心代表的簇中去。具体过程可以总结如下:

创建k个点作为初始质心(通常是随机选择)
当任意一个点的簇分配结果发生改变时:
对数据集中的每个点:
对每个质心:
计算质心与数据点之间的距离
将数据点分配到据其最近的簇
对每个簇,计算簇中所有点的均值并将均值作为新的质心
直到簇不再发生变化或者达到最大迭代次数

那什么情况下,质心的位置会不再变化呢?当我们找到一个质⼼心,在每次迭代中被分配到这个质心上的样本都是一致的,即每次新生成的簇都是一致的,所有的样本点都不会再从一个簇转移到另一个簇,质心就不会变化了。

3、算法执行细节

我们认为,被分在同一个簇中的数据是有相似性的,而不同簇中的数据是不同的,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求制定不同的商业或者科技策略。聚类算法的目的就是追求“簇内差异小,簇外差异大”。而这个“差异“,由样本点到其所在簇的质心的距离来衡量。

对于一个簇来说,所有样本点到质心的距离之和越小,我们就认为这个簇中的样本越相似,簇内差异就越小。而距离的衡量方法有多种,令 x x x表示簇中的一个样本点, u u u表示该簇中的质心,n表示每个样本点中的特征数目,i表示组成点的每个特征,则该样本点到质心的距离可以由以下距离来度量。

3.1、距离衡量方法

常见距离衡量方法即对应公式如下所示:

①数据距离

对于数据之间的距离而言,在欧式空间中我们常常使用欧几里得距离,也就是我们常说的距离平方和开平方,其基本计算公式如下:
d ( x , μ ) = ∑ i = 1 n ( x i − μ i ) 2 d(x,\mu )=\sqrt{\sum_{i=1}^{n}(x_i-\mu _i)^{2}} d(x,μ)=i=1n(xiμi)2

还有曼哈顿距离,也被称作街道距离,该距离的计算方法相当于是欧式距离的1次方表示形式,其基本计算公式如下:
d ( x , μ ) = ∑ i = 1 n ( ∣ x i − μ ∣ ) d(x,\mu )=\sum_{i=1}^{n}(\left | x_i-\mu \right |) d(x,μ)=i=1n(xiμ)
当然,不管是欧式距离还是曼哈顿距离,都可视为闵可夫斯基距离的一种特例例,该距离计算公式如下:
d ( x , μ ) = ∑ i = 1 n ( ∣ x i − μ ∣ ) n n d(x,\mu )=\sqrt[n]{\sum_{i=1}^{n}(\left | x_i-\mu \right |)^{n}} d(x,μ)=n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值