当前位置:首页 » 操作系统 » 核聚类算法

核聚类算法

发布时间: 2023-02-10 00:24:13

A. dbscan聚类算法是什么

DBSCAN是基于密度空间的聚类算法,与KMeans算法不同,它不需要确定聚类的数量,而是基于数据推测聚类的数目,它能够针对任意形状产生聚类。

DBSCAN使用的方法很简单,它任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。

DBSCAN算法需要首先确定两个参数:

1、epsilon:在一个点周围邻近区域的半径。

2、minPts:邻近区域内至少包含点的个数。

通常根据以上两个参数,结合epsilon-neighborhood的特征,可以把样本中的点分成核点、边缘点、离群点三类。

B. 核k均值聚类算法 核为什么时与kmeans等价

一,K-Means聚类算法原理 k-means 算法接受参数 k ;然后将事先输入的n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较校聚类相似度是利用各聚类中对象的均值所获得一个“中心对 象”。

C. 聚类算法概述及比较

其本质是:寻找联系紧密的事物进行区分,将数据划分为有意义或有用的簇

目标是:同簇内的数据对象的相似性尽可能大,不同簇间的数据对象的差异性尽可能大。

核心是:相似度计算

回顾一下:无监督学习(Unsupervised learning):是否有监督(supervised),就看输入数据是否有标签(label)。输入数据有标签,则为有监督学习,没标签则为无监督学习。

具体包含:

K-means DIANA OPTICS Spectral STING COBWeb
K-medoids BIRCH DBSCAN CLIQUE CLASSIT
CLARANS Chameleon FDC WAVE-CLUSTER SOM

新发展的方法:

基于约束 基于模糊 基于粒度 量子聚类 核聚类 谱聚类
COD (Clustering
with Ob2structed
Distance) FCM SVDD/SVC 图论中的谱图

划分法(Partitioning methods):

层次法(Hierarchical Clustering):

基于密度的聚类(density-based methods):

基于图的聚类(Graph-based methods):

基于网格的方法(grid-based methods):

基于模型的方法(model-based methods):

map详细: http://scikit-learn.org/stable/tutorial/machine_learning_map/

D. 聚类算法

1. 概述

K-means聚类算法也称k均值聚类算法,是集简单和经典于一身的基于距离的聚类算法。它采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为类簇是由距离靠近的对象组成的,因此把得到 紧凑且独立的簇作为最终目标。

2. 算法核心思想

K-means聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。

3. 算法实现步骤

1、首先确定一个k值,即我们希望将数据集经过聚类得到k个集合。

2、从数据集中随机选择k个数据点作为质心。

3、对数据集中每一个点,计算其与每一个质心的距离(如欧式距离),离哪个质心近,就划分到那个质心所属的集合。

4、把所有数据归好集合后,一共有k个集合。然后重新计算每个集合的质心。

5、如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终止。

6、如果新质心和原质心距离变化很大,需要迭代3~5步骤。

4. 算法步骤图解

上图a表达了初始的数据集,假设k=2。在图b中,我们随机选择了两个k类所对应的类别质心,即图中的红色质心和蓝色质心,然后分别求样本中所有点到这两个质心的距离,并标记每个样本的类别为和该样本距离最小的质心的类别,如图c所示,经过计算样本和红色质心和蓝色质心的距离,我们得到了所有样本点的第一轮迭代后的类别。此时我们对我们当前标记为红色和蓝色的点分别求其新的质心,如图d所示,新的红色质心和蓝色质心的位置已经发生了变动。图e和图f重复了我们在图c和图d的过程,即将所有点的类别标记为距离最近的质心的类别并求新的质心。最终我们得到的两个类别如图f。

K-means术语:

簇:所有数据的点集合,簇中的对象是相似的。

质心:簇中所有点的中心(计算所有点的中心而来)

5. K-means算法优缺点

优点:

1、原理比较简单,实现也是很容易,收敛速度快。

2、当结果簇是密集的,而簇与簇之间区别明显时, 它的效果较好。

3、主要需要调参的参数仅仅是簇数k。

缺点:

1、K值需要预先给定,很多情况下K值的估计是非常困难的。

2、K-Means算法对初始选取的质心点是敏感的,不同的随机种子点得到的聚类结果完全不同 ,对结果影响很大。

3、对噪音和异常点比较的敏感。用来检测异常值。

4、采用迭代方法,可能只能得到局部的最优解,而无法得到全局的最优解。

E. 学会用聚类算法进行数据挖掘需要怎样的数学基础

会用聚类算法进行数据挖掘需要线性代数, 变分演算,距离度量,距离矩阵等的数学知识基础。

在数据科学中,我们可以通过聚类分析观察使用聚类算法后获得一些有价值的信息,其中会涉及许多数学理论与实际计算。
主要有以下几类算法:
K-Means(k-平均或k-均值)是普遍知名度最高的一种聚类算法,在许多有关数据科学和机器学习的课程中经常出现。
Mean shift算法,又称均值漂移算法,这是一种基于核密度估计的爬山算法,适用于聚类、图像分割、跟踪等
DBSCAN是一种基于密度的聚类算法,它不需要输入要划分的聚类个数,对聚类的形状没有偏倚。
层次聚类会将每个数据点视为单个聚类,然后连续合并成对的聚类,直到所有聚类合并成包含所有数据点的单个聚类。

关于数据挖掘的相关学习,推荐CDA数据师的相关课程,课程内容兼顾培养解决数据挖掘流程问题的横向能力以及解决数据挖掘算法问题的纵向能力。要求学生具备从数据治理根源出发的思维,通过数字化工作方法来探查业务问题,通过近因分析、宏观根因分析等手段,再选择业务流程优化工具还是算法工具,而非“遇到问题调算法包”。点击预约免费试听课。

F. 聚类算法(上)06

这篇文章的整体排版主要是根据个人的博客来哒,如果感兴趣的话可以去我的自己搭建的个人博客看这篇 文章 。

聚类算法很多,所以和讲回归算法一样,分成了上下,上中主要讲了传统的K-Means算法以及其相应的优化算法入K-Means++,K-Means||和Canopy等。下中主要讲了另外两种的思路的聚类算法,即层次聚类和密度聚类。

聚类算就是怼大量未知标注的数据集,按照数据 内部存在的数据特征 将数据集 划分为多个不同的类别 ,使类别内的数据比较相似,类别之间的数据相似度比较小,属于 无监督学习

从定义就可以看出,聚类算法的关键在于计算样本之间的 相似度 ,也称为 样本间的距离

说到聚类算法,那肯定核心就是计算距离的公式了,目前常用的有以下几种。
闵可夫斯基距离(Minkowski) :公式2.1

KL距离(相对熵)
思考下条件熵的定义,简单的来说就是在放生一件事情的时候,发生另一件事的概率。公式如下公式2.7.
注:这里书的概率不是实指概率,而是熵表达的含义。这个公式其实就是条件熵的公式。

杰卡德相似系数(Jaccard)
这个很好理解,它的核心就是使用两个集合的交集和并集的比率来代表两者的相似度,也就是说重合的越多越相似。公式如下,公式2.8.

Pearson相关系数
这个就是考研数学中的相关系数,表达就是两者之间的想关系,所以直接拿来用就好了,公式如下公式2.9。

给定一个有M个对象的数据集,构建一个具有k个簇的模型,其中k<=M。满足 以下条件:

基本思想:
对于给定的类别数目k,首先给定初始划分,通过迭代改变样本和簇的隶属关系,使的每次处理后得到的划分方式比上一次的好,即 总的数据集之间的距离和变小了

K-means的核心算法如下:

再循环中的第二步,我们移动了中心点的位置,把中心点移到了隶属于该中心点类别的所有样本的中间,并使用样本的均值作为位置。这样子看似是拍脑袋想的移动策略,其实是可以推导出来的。正如聚类算法思想所指出的,我们要让所有的点到自己的分类的中心点的欧几里得距离最小,所以我们设置目标放称为公式4.1,公式中的1/2是为了之后求导运算方便。我们为了让目标函数尽可能的小,所以使用了之前一直在使用的思考方式,对其使用梯度下降算法,求导后得到公式4.2,之后令其等于0,就得到了公式4.3。


最后这个看似不错的算法,其实有着不小的缺点,那就是 初值敏感 。我们来仔细想一想,如果两个不小心随机生成的初值落到了一个类别中,两者的距离还特别近,这中情况下就很难正确分类了。除此之外,由于移动策略中使用的是均值,也就是说如果集合中含有非常大的误差点的话,这样子会是中心点的设置偏离正确点很远,所以很多时候我们改用 中值来更新中心点 ,这就是我们说的K-Mediods聚类,即K中值聚类。

总结下K-means算法
优点:

由于K-Means对初始中心点非常敏感,我们这里就尝试着通过二分法弱化初始中心点。这种算法的具体步骤如下:

我们在这个算法中提到了SSE,这个可以是簇内所有样本点,到其中心点的距离的总和,代表着簇内的点是不是高度相关。计算公式如下公式4.4。

可以看出在这种算法下,很好的避开了,两个中心点都在一起的情况。

K-Means++做的改善,是直接对初始点的生成位置的选择进行优化的,他的初始点生成策略如下:

Canopy属于一种“粗略地”聚类算法,简单的来说就是,不那么追求自动获得最优解,而是引入了一种人为规定的先验值进行聚类,具体步骤如下:

注:Canopy算法得到的最终结果的值,聚簇之间是可能存在重叠的,但是不会存在 某个对象不属于任何聚簇的情况
显然,这种算法虽然快,但是很难生成满足我们应用的模型,所以通常我们将它作为解决K-Means初值敏感的方案,他们合在一起就是Canopy+K-Means算法。
顺序就是先使用Canopy算法获得K个聚类中心,然后用这K个聚类中心作为K-Means算法。这样子就很好的解决了K-Means初值敏感的问题。

Mini Batch K-Means算法是K-Means算法的一种优化变种,采用小规模的数据子集,来减少计算时间。其中采用小规模的数据子集指的是每次训练使用的数据集是在训练算法的时候随机抽取的数据子集。Mini Batch K-Means算法可以减少K-Means算法的收敛时间,而且产生的结果效果只是略差于标准K-Means算法。
它的算法步骤如下:

聚类算法的衡量标准有很多,包括均一性、完整性、V-measure、调整兰德系数(ARI ,Adjusted Rnd Index)、调整互信息(AMI,Adjusted Mutual Information)以及轮廓系数等等。

均一性:一个簇中只包含一个类别的样本,则满足均一性。其实也可以认为就是正确率,即每个聚簇中正确分类的样本数占该聚簇总样本数的比例和。其公式如下公式5.1。

完整性:同类别样本被归类到相同簇中,则满足完整性。每个聚簇中正确分类的样本数占该类型的总样本数比例的和,通俗的来说就是,我们已分类类别中,分类正确的个数。
其公式如下,公式5.2:

在实际的情况中,均一性和完整性是往往不能兼得的,就好像抓特务时的矛盾一样,到底是保证每个抓的人都是特务,还是宁可错抓也不放过一个特务,之间的取舍很难把握。所以再一次贯彻,鱼和熊掌不可兼得,我们就加权,于是得到的就是V-measure,其公式如下公式5.3:

兰德系数(RI,Rand index) ,我用中文看了不少讲兰德系数的博客,其中的文字说明几乎都是相同的,对个人的理解帮助不是特别大,于是用英文查的。最终理解了这个系数的参数的意思,想看英文说明的,个人觉得还挺好懂的参考 这里 。以下是我个人的讲解。

首先,将原数据集中的元素进行两两配对形成一个新的数据集,我们称之为S数据集。这时候,我们将原数据集,根据两种不同的策略分别划分成r份和s份,并对这两个数据集命名为X和Y。在这里我们可以看出,X和Y的元素是相同的,只是他们的划分方式不同。
接下来我们来思考,S数据集中,每个元素中的两个样本,在X和Y中只有两种可能,就是两个样本都在一个子集中,或者不在一个子集中,那么对于S中的一个元素,只有四种可能性。

接下来引入, 调整兰德系数(ARI,Adjusted Rnd Index) ,ARI取值范围 ,值越大,表示聚类结果和真实情况越吻合。从广义的角度来将,ARI是衡量两个数据分布的吻合程度的,公式5.5如下:

调整互信息,整体的流程很像ARI,AMI则是对MI进行调整。而MI是使用信息熵来描述的。那么互信息表示了什么呢,首先先看下 维基网络的定义 :

之前我们说到的衡量指标都是有标签的,这里的轮廓系数则是不包含标签的评价指标。

G. 常见的几种聚类方法

作为无监督学习的一个重要方法,聚类的思想就是把属性相似的样本归到一类。对于每一个数据点,我们可以把它归到一个特定的类,同时每个类之间的所有数据点在某种程度上有着共性,比如空间位置接近等特性。多用于数据挖掘、数据分析等一些领域。

下面简单介绍一下几种比较常见的聚类算法。

K-means聚类方法大家应该都听说过,在各种机器学习书籍教程中也是无监督学习部分非常经典的例子。其核心主要为两个部分:其一是K,K在这里代表着类的数目,我们要把数据聚为多少类。其二是means,表示在每一次计算聚类中心的时候采取的是计算平均值。

我们假设样本总数为n,K-means聚类法可以简单表示为一下几个步骤:

1. 在样本中随机选取K个点,作为每一类的中心点。

2. 计算剩下 n-K 个样本点到每个聚类中心的距离(距离有很多种,假设这里采用欧式距离)。对于每一个样本点,将它归到和他距离最近的聚类中心所属的类。

3. 重新计算每个聚类中心的位置:步骤 2 中得到的结果是 n 个点都有自己所属的类,将每一个类内的所有点取平均值(这里假设是二维空间,即对 x 和 y 坐标分别取平均),计算出新的聚类中心。

4. 重复步骤 2 和 3 的操作,直到所有的聚类中心不再改变。

分析一下,算法本身的思想并不难。但是K值如何选择就见仁见智了,这里可以引入类内距离 J,每一类都会对应一个 J 值,其计算就是把类内所有点之间的距离累加起来。我们肯定希望 J 越小越好,因为小的类内间距代表这一类样本的相似程度更高(离得更近)。

如果 K 很小,则聚类可能不彻底,即隔着很远的两波点也被聚为一类,会使 J 变得很大;相反的,过大的 K 虽然会降低类内间距 J ,但有时候分得过细会对数据的泛化性造成损害,没有必要弄这么多类。因此 K 的选择应该是具体问题具体分析。

还有一个问题就是初始聚类中心的选择。不当的初始化会给算法的收敛带来更多的计算开销。试想一下,如果一开始把离得很近的 K 个点都设为聚类中心,那么算法的迭代次数会更多一些。

HAC也是一种比较经典的聚类方法,其主要思想是先把每一个样本点归为一类,再通过计算类间的距离,来对最相似或者距离最近的类进行归并,合成位一个新的类。反复循环,直到满足特定的迭代条件即可。

HAC的核心思想主要分为如下几个步骤:

1. 将每个样本点都视作一类,一共有n个类。

2. 计算所有类之间两两的类间距离(类间距离计算方式多种多样,可以取最近、最远、找重心等等,这里不做详述),然后把距离最近的两个类进行合并,组成一个新的更大的类。

3. 重复步骤 2 中的操作,直到达到特定的迭代条件(例如当前类的数目是初始时的 10% ,即 90% 的类都得到了合并;最小的类间距离大于预先设定的阈值等等),算法结束。

和K-means算法中的 K 值选取一样,HAC中如何选择迭代的终止条件也是一个比较复杂的问题,需要根据一定的经验,并且具体问题具体分析。

这种方法的核心思想是先计算出聚类中心,再把所有的样本点按照就近原则,归到离自身最近的聚类中心所对应的类。最大最小是指在所有的最小距离中选取最大的。其主要的算法步骤如下:

1. 随机选择一个点,作为第一个类的聚类中心 Z1。

2. 选择与步骤 1 中距离最远的样本点,作为第二个类的聚类中心 Z2。

3. 逐个计算每个点到所有聚类中心的距离,并把所有的最短的距离记录下来。

4. 在这些最短距离中挑选最大的值,如果这个最大值大于 ,其中 ,那么将这个最大距离所对应的另一个样本点作为新的聚类中心;否则整个算法结束。

5. 重复步骤 3 和 4 的操作,直到 4 中不再出现新的聚类中心。

6. 将所有的样本归到与他自身最近的聚类中心。

参考:

https://www.jianshu.com/p/4f032dccdcef

https://www.jianshu.com/p/bbac132b15a5

https://blog.csdn.net/u011511601/article/details/81951939

H. 常用的聚类方法有哪几种

聚类分析的算法可以分为划分法、层次法、基于密度的方法、基于网格的方法、基于模型的方法。

1、划分法,给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K<N。

2、层次法,这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。

3、基于密度的方法,基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。

4、图论聚类方法解决的第一步是建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边(或弧)对应于最小处理单元数据之间的相似性度量。

5、基于网格的方法,这种方法首先将数据空间划分成为有限个单元的网格结构,所有的处理都是以单个的单元为对象的。

6、基于模型的方法,基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。

(8)核聚类算法扩展阅读:

在商业上,聚类可以帮助市场分析人员从消费者数据库中区分出不同的消费群体来,并且概括出每一类消费者的消费模式或者说习惯。

它作为数据挖掘中的一个模块,可以作为一个单独的工具以发现数据库中分布的一些深层的信息,并且概括出每一类的特点,或者把注意力放在某一个特定的类上以作进一步的分析;并且,聚类分析也可以作为数据挖掘算法中其他分析算法的一个预处理步骤。

许多聚类算法在小于 200 个数据对象的小数据集合上工作得很好;但是,一个大规模数据库可能包含几百万个对象,在这样的大数据集合样本上进行聚类可能会导致有偏的结果。

许多聚类算法在聚类分析中要求用户输入一定的参数,例如希望产生的簇的数目。聚类结果对于输入参数十分敏感。参数通常很难确定,特别是对于包含高维对象的数据集来说。这样不仅加重了用户的负担,也使得聚类的质量难以控制。

I. 聚类算法--KMeans

    与分类、序列标注等任务不同,聚类是在事先并不知道任何样本标签的情况下,通过数据之间的内在关系把样本划分为若干类别,使得同类别样本之间的相似度高,不同类别之间的样本相似度低(即增大类内聚,减少类间距)。    

    聚类属于非监督学习,K均值聚类是最基础常用的聚类算法。它的基本思想是,通过迭代寻找K个簇(Cluster)的一种划分方案,使得聚类结果对应的损失函数最小。其中,损失函数可以定义为各个样本距离所属簇中心点的误差平方和。

其中 代表第i个样本, 是 所属的簇,  代表簇对应的中心点,M是样本总数。

相关概念:

    K值: 要得到的簇的个数。

    质心: 每个簇的均值向量。即向量各维取平均即可。

    距离量度: 常用欧几里得距离和余弦相似度(先标准化)。

    KMeans的主要思想是:在给定K值和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。

    KMeans的核心目标是将给定的数据集划分成K个簇(K是超餐),并给出每个样本数据对应的中心点。具体步骤非常简单:

    (1)首先确定一个K值,即我们希望将数据集经过聚类得到k个集合。

    (2)从数据集中随机选择K个数据点作为质心。

    (3)对数据集中每一个点,计算其与每一个质心的距离(如欧式距离),离哪个质心近,就划分到哪个质心所属的集合。

    (4)把所有数据归好集合后,一共有K个集合。然后重新计算每个集合的质心。

    (5)如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终止。

    (6)如果新质心和原质心距离变化很大,需要迭代3-5步骤。

KMeans最核心的部分是先固定中心点,调整每个样本所属的类别来减少J;再固定每个样本的类别,调整中心点继续减小J。两个过程交替循环,J单调递减直到极小值,中心点和样本划分的类别同时收敛。

KMeans的优点 :

 高效可伸缩,计算复杂度为O(NKt)接近于线性(N是数据量,K是聚类总数,t是迭代轮数)。

 收敛速度快,原理相对通俗易懂,可解释性强。

当结果簇是密集的,而簇与簇之间区别是明显时,他的效果较好。主要需要调参的参数仅仅是簇数K。

缺点 :

 受初始值和异常点影响,聚类结果可能不是全局最优而是局部最优。K-Means算法对初始选取的质心点是敏感的,不同的随机种子点得到的聚类结果完全不同,对结果影响很大。

 K是超参数,一般需要按经验选择。

 对噪音和异常点比较的敏感,用来检测异常值。

 只能发现球状的簇。在K-Means中,我们用单个点对cluster进行建模,这实际上假设各个cluster的数据是呈高维球型分布的,但是在生活中出现这种情况的概率并不算高。例如,每一个cluster是一个一个的长条状的,K-Means的则根本识别不出来这种类别( 这种情况可以用GMM )。实际上,K-Means是在做凸优化,因此处理不了非凸的分布。

根据以上特点,我们可以从下面几个角度对算法做调优。

(1)数据预处理:归一化和异常点过滤

    KMeans本质是一种基于欧式距离度量的数据划分方法,均值和方差大的维度将对数据的聚类结果产生决定性影响 。所以在聚类前对数据( 具体的说是每一个维度的特征 )做归一化和单位统一至关重要。此外,异常值会对均值计算产生较大影响,导致 中心偏移 ,这些噪声点最好能提前过滤。

(2)合理选择K值

    K值的选择一般基于实验和多次实验结果。例如采用 手肘法 ,尝试不同K值并将对应的损失函数画成折线。手肘法认为图上的 拐点就是K的最佳值 (k=3)。

为了将寻找最佳K值的过程自动化,研究人员提出了Gap Statistic方法。不需要人们用肉眼判断,只需要找到最大的Gap Statistic对应的K即可。

       损失函数记为  ,当分为K类时,Gap Statistic定义为:  。 是 的期望 ,一般由蒙特卡洛模拟产生。我们在样本所在的区域内按照均匀分布随机地产生和原始样本数一样多的随机样本,并对这个随机样本做KMeans,得到一个 ,重复多次就可以计算出 的近似值。

       的物理含义是随机样本的损失与实际样本的损失之差。Gap越大说明聚类的效果越好 。一种极端情况是,随着K的变化 几乎维持一条直线保持不变。说明这些样本间没有明显的类别关系,数据分布几乎和均匀分布一致,近似随机。此时做聚类没有意义。

(3)改进初始值的选择

    之前我们采用随机选择K个中心的做法,可能导致不同的中心点距离很近,就需要更多的迭代次数才能收敛。如果在选择初始中心点时能 让不同的中心尽可能远离 ,效果往往更好。这类算法中,以K-Means++算法最具影响力。

(4)采用核函数

    主要思想是通过一个非线性映射,将输入空间中的数据点映射到高维的特征空间中,并在新的空间进行聚类。非线性映射增加了数据点线性可分的概率(与SVM中使用核函数思想类似)对于非凸的数据分布可以达到更为准确的聚类结果。

 (1)初始的K个质心怎么选?

    最常用的方法是随机选,初始质心的选取对最终聚类结果有影响,因此算法一定要多执行几次,哪个结果更合理,就用哪个结果。当然也有一些优化的方法,第一种是选择彼此距离最远的点,具体来说就是先选第一个点,然后选离第一个点最远的当第二个点,然后选第三个点,第三个点到第一、第二两点的距离之和最小,以此类推。第二种是先根据其他聚类算法(如层次聚类)得到聚类结果,从结果中每个分类选一个点

(2)关于离群值?

    离群值就是远离整体的,非常异常、非常特殊的数据点,在聚类之前应该将这些"极大""极小"之类的离群数据都去掉,否则会对于聚类的结果有影响。但是,离散值往往自身就很有分析的价值,可以把离群值单独作为一类来分析。

(3)单位要一致!

(4)标准化

    数据中X整体都比较小,比如都是1到10之间的数,Y很大,比如都是1000以上的数,那么在计算距离的时候Y起到的作用就比X大很多,X对于距离的影响几乎可以忽略,这也有问题。因此,如果K-Means聚类中选择欧几里得距离计算距离,数据集又出现了上面所述的情况,就一定要进行数据的标准化(normalization),即将数据按比例缩放,使之落入一个小的特定区间。

    K-Means是无监督学习的聚类算法,没有样本输出;而KNN是监督学习的分类算法,有对应的类别输出 。KNN基本不需要训练,对测试集里面的点,只需要找到在训练集中最近的K个点,用这最近的K个点的类别来决定测试点的类别。而K-Means则有明显的训练过程,找到K个类别的最佳质心,从而决定样本的簇类别。当然,两者也有一些相似点,两个算法都包含一个过程,即找出和某一个点最近的点。 两周都利用了最近邻的思想 。

J. K均值算法

代价函数可以定义为各个样本距离所属簇中心点的误差平方和

K均值算法有一些缺点,例如受初值和离群点的影响每次的结果不稳定、结果 通常不是全局最优而是局部最优解、无法很好地解决数据簇分布差别比较大的情 况(比如一类是另一类样本数量的100倍)、不太适用于离散分类等。但是瑕不掩 瑜,K均值聚类的优点也是很明显和突出的,主要体现在:对于大数据集,K均值 聚类算法相对是可伸缩和高效的,它的计算复杂度是O(NKt)接近于线性,其中N是 数据对象的数目,K是聚类的簇数,t是迭代的轮数。尽管算法经常以局部最优结 束,但一般情况下达到的局部最优已经可以满足聚类的需求。
其实书中也少讲了缺点,那就是关于k的选择,当维度很高的时候,你很难判断选择k多少比较合适。
不过书中在算法调优中说了。所谓的调优其是也是变相的说那些缺点。

K均值算法的调优一般可以从以下几个角度出发。

(1)数据归一化和离群点处理。
K均值聚类本质上是一种基于欧式距离度量的数据划分方法,均值和方差大的 维度将对数据的聚类结果产生决定性的影响,所以未做归一化处理和统一单位的 数据是无法直接参与运算和比较的。同时,离群点或者少量的噪声数据就会对均 值产生较大的影响,导致中心偏移,因此使用K均值聚类算法之前通常需要对数据 做预处理。

(2)合理选择K值。
K值的选择是K均值聚类最大的问题之一,这也是K均值聚类算法的主要缺 点。实际上,我们希望能够找到一些可行的办法来弥补这一缺点,或者说找到K值 的合理估计方法。但是,K值的选择一般基于经验和多次实验结果。例如采用手肘 法,我们可以尝试不同的K值,并将不同K值所对应的损失函数画成折线,横轴 为K的取值,纵轴为误差平方和所定义的损失函数,如图5.3所示

由图可见,K值越大,距离和越小;并且,当K=3时,存在一个拐点,就像人 的肘部一样;当K (1,3)时,曲线急速下降;当K>3时,曲线趋于平稳。手肘法认 为拐点就是K的最佳值。
手肘法是一个经验方法,缺点就是不够自动化,因此研究员们又提出了一些 更先进的方法,其中包括比较有名的Gap Statistic方法[5]。Gap Statistic方法的优点 是,不再需要肉眼判断,而只需要找到最大的Gap statistic所对应的K即可,因此该 方法也适用于批量化作业。在这里我们继续使用上面的损失函数,当分为K簇时, 对应的损失函数记为Dk。Gap Statistic定义为
Gap(K)=E(logDk)−logDk

内按照均匀分布随机地产生和原始样本数一样多的随机样本,并对这个随机样本
做K均值,得到一个Dk;重复多次就可以计算出E(logDk)的近似值。那么Gap(K)有
什么物理含义呢?它可以视为随机样本的损失与实际样本的损失之差。试想实际 样本对应的最佳簇数为K,那么实际样本的损失应该相对较小,随机样本损失与实 际样本损失之差也相应地达到最小值,从而Gap(K)取得最大值所对应的K值就是最 佳的簇数。根据式(5.4)计算K =1,2,...,9所对应的Gap Statistic

(3)采用核函数。
采用核函数是另一种可以尝试的改进方向。传统的欧式距离度量方式,使得K 均值算法本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者 高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时, 可能需要引入核函数来优化,这时算法又称为核K均值算法,是核聚类方法的一种 [6]。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到 高位的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线 性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到 更为准确的聚类结果。

K均值算法的主要缺点如下。
(1)需要人工预先确定初始K值,且该值和真实的数据分布未必吻合。
(2)K均值只能收敛到局部最优,效果受到初始值很大。
(3)易受到噪点的影响。
(4)样本点只能被划分到单一的类中。

■ K-means++算法
K均值的改进算法中,对初始值选择的改进是很重要的一部分。而这类算法 中,最具影响力的当属K-means++算法。原始K均值算法最开始随机选取数据集中 K个点作为聚类中心,而K-means++按照如下的思想选取K个聚类中心。假设已经 选取了n个初始聚类中心(0<n<K),则在选取第n+1个聚类中心时,距离当前n个 聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。在选取第一个聚类中 心(n=1)时同样通过随机的方法。可以说这也符合我们的直觉,聚类中心当然是 互相离得越远越好。当选择完初始点后,K-means++后续的执行和经典K均值算法 相同,这也是对初始值选择进行改进的方法等共同点。

■ ISODATA算法
当K值的大小不确定时,可以使用ISODATA算法。ISODATA的全称是迭代自 组织数据分析法。在K均值算法中,聚类个数K的值需要预先人为地确定,并且在 整个算法过程中无法更改。而当遇到高维度、海量的数据集时,人们往往很难准 确地估计出K的大小。ISODATA算法就是针对这个问题进行了改进,它的思想也 很直观。当属于某个类别的样本数过少时,把该类别去除;当属于某个类别的样 本数过多、分散程度较大时,把该类别分为两个子类别。ISODATA算法在K均值 算法的基础之上增加了两个操作,一是分裂操作,对应着增加聚类中心数;二是 合并操作,对应着减少聚类中心数。ISODATA算法是一个比较常见的算法,其缺 点是需要指定的参数比较多,不仅仅需要一个参考的聚类数量Ko,还需要制定3个
阈值。下面介绍ISODATA算法的各个输入参数。
(1)预期的聚类中心数目Ko。在ISODATA运行过程中聚类中心数可以变 化,Ko是一个用户指定的参考值,该算法的聚类中心数目变动范围也由其决定。 具体地,最终输出的聚类中心数目常见范围是从Ko的一半,到两倍Ko。
(2)每个类所要求的最少样本数目Nmin。如果分裂后会导致某个子类别所包 含样本数目小于该阈值,就不会对该类别进行分裂操作。
(3)最大方差Sigma。用于控制某个类别中样本的分散程度。当样本的分散 程度超过这个阈值时,且分裂后满足(1),进行分裂操作。
(4)两个聚类中心之间所允许最小距离Dmin。如果两个类靠得非常近(即这 两个类别对应聚类中心之间的距离非常小),小于该阈值时,则对这两个类进行
合并操作。
如果希望样本不划分到单一的类中,可以使用模糊C均值或者高斯混合模型, 高斯混合模型会在下一节中详细讲述。

K均值聚类的迭代算法实际上是一种最大期望算法 (Expectation-Maximization algorithm),简称EM算法。EM算法解决的是在概率模 型中含有无法观测的隐含变量情况下的参数估计问题。
EM算法只保证收敛到局部最优解

热点内容
r解压文件 发布:2025-07-23 18:01:01 浏览:503
安溪哪里有卖礼金密码箱 发布:2025-07-23 17:32:36 浏览:528
同等配置蓝鸟同轩逸哪个好 发布:2025-07-23 17:31:27 浏览:545
云服务器图片加载速度慢 发布:2025-07-23 17:08:16 浏览:171
网址导航源码带后台 发布:2025-07-23 17:01:40 浏览:599
石粉过磅算法 发布:2025-07-23 16:53:05 浏览:78
e盘访问被拒绝 发布:2025-07-23 16:51:49 浏览:349
c语言用什么编译器 发布:2025-07-23 16:49:26 浏览:571
浏览器androidflash 发布:2025-07-23 16:36:38 浏览:911
为什么战网不用输入密码 发布:2025-07-23 16:35:47 浏览:938