欧若纳算法解析机器学习之聚类算法原理分类及应用场景

Posted 欧若纳Aurora

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欧若纳算法解析机器学习之聚类算法原理分类及应用场景相关的知识,希望对你有一定的参考价值。

聚类算法理解

聚类(Clustering)的本质是对数据进行分类,将相异的数据尽可能地分开,而将相似的数据聚成一个类别(簇),使得同一类别的数据具有尽可能高的同质性(homogeneity),类别之间有尽可能高的异质性(heterogeneity),从而方便从数据中发现隐含的有用信息。

聚类算法原理

1、先随机产生(选取数据集中的地方,收敛会比较快)每个类别的中心点(设定多少类别就产生多少个类的中心点);

2、计算每个样本和中心点之间的距离,离哪个最近,就将它归为哪一类;

3、每一类都会有很多样本,计算这些样本的平均值作为新的中心点;

4、如果新的中心点和旧的中心点的差别不大,则完成聚类,否则重新跳至第二步;

聚类算法分类

(1)    基于分层的聚类(hierarchical methods)

主要讲给定的数据集进行逐层分解,直到满足某种条件为止。具体可分为“自底向上”和“自顶向下”两种方案。在“自底向上”方案中,初始时每个数据点组成一个单独的组,在接下来的迭代中,按一定的距离度量将相互邻近的组合并成一个组,直至所有的记录组成一个分组或者满足某个条件为止。代表算法有:BIRCH,CURE,CHAMELEON等。


(2)    基于划分的聚类(partitioning methods)

给定包含N个点的数据集,划分法将构造K个分组,每个分组代表一个聚类,这里每个分组至少包含一个数据点,每个数据点属于且仅属于一个分组。对于给定的K值,算法先给出一个初始的分组方法,然后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案较前一次好,这里好的标准在于同一组中的点越近越好,不同组中的点越远越好。代表算法有:K-means,K-medoids,CLARANS。


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

基于密度的方法的特点是不依赖于距离,而是依赖于密度,从而克服基于距离的算法只能发现“球形”聚簇的缺点。其核心思想在于只要一个区域中点的密度大于某个阈值,就把它加到与之相近的聚类中去。代表算法有:DBSCAN,OPTICS,DENCLUE,WaveCluster。


(4)基于网格的聚类(gird-based methods)

这种方法通常将数据空间划分成有限个单元的网格结构,所有的处理都是以单个的单元为对象。这样做起来处理速度很快,因为这与数据点的个数无关,而只与单元个数有关。代表算法有:STING,CLIQUE,WaveCluster。


(5)基于模型的聚类(model-based methods)

基于模型的方法给每一个聚类假定一个模型,然后去寻找能很好的拟合模型的数据集。模型可能是数据点在空间中的密度分布函数或者其它。这样的方法通常包含的潜在假设是:数据集是由一系列的潜在概率分布生成的。通常有两种尝试思路:统计学方法和神经网络方法。其中,统计学方法有COBWEB算法、GMM(Gaussian Mixture Model),神经网络算法有SOM(Self Organized Maps)算法。

聚类算法在数据挖掘中的典型要求

(1)可伸缩性:当聚类的数据量从几百上升到几百万时,我们希望聚类结果的准确度能一致。

(2)处理不同类型属性的能力:有很多聚类算法只针对数值型数据,但是实际场景有很多其他类型的数据,二元类型数据,分类/标称类型数据,序数型数据。

(3)发现任意形状的类簇:许多聚类算法基于距离(欧式距离或曼哈顿距离)来量化对象之间的相似度。基于这种方式,我们往往只能发现相似尺寸和密度的球状类簇或者凸型类簇。但是,实际中类簇的形状可能是任意的。

(4)对聚类算法初始化参数的需求最小化:很多算法需要用户提供初始参数,比如期望的类簇个数,类簇初始中心点的设定。聚类的结果对这些参数十分敏感,调参数需要消耗用户较多的时间,也非常影响聚类结果的准确性。

(5)处理噪声数据的能力:噪声数据通常可以理解为影响聚类结果的干扰数据,包含孤立点,错误数据等,一些算法对这些噪声数据非常敏感,会导致低质量的聚类。

(6)增量聚类和对输入次序的不敏感:一些算法不能将新加入的数据快速插入到已有的聚类结果中,输入次序的敏感对于聚类结果差异性很大。

(7)高维性:有些算法只能处理2到3维的低纬度数据,而处理高维数据的能力很弱,高维空间中的数据分布十分稀疏,且高度倾斜。

(8)可解释性和可用性:我们希望得到的聚类结果都能用特定的语义、知识进行解释,和实际的应用场景相联系。

(9)基于约束的聚类:现实的场景中可能存在各种条件对数据进行聚类,因为同一个聚类算法在不同应用场景中所带来的聚类结果也是各异的,因此找到满足特定约束的具有良好聚类特性的数据分组十分有挑战性。

聚类算法应用范围

(1)其他数据挖掘任务的关键中间环节:用于构建数据概要,用于分类、模式识别、假设生成和测试;用于异常检测,检测远离群簇的点。

(2)数据摘要、数据压缩、数据降维:例如图像处理中的矢量量化技术。创建一个包含所有簇原型的表,即每个原型赋予一个整数值,作为它在表中的索引。每个对象用与它所在簇相关联的原型的索引表示。

(3)协同过滤:用于推荐系统和用户细分。

(4)动态趋势检测:对流数据进行聚类,检测动态趋势和模式。

(5)用于多媒体数据、生物数据、社交网络数据的应用。

相关链接:




以上是关于欧若纳算法解析机器学习之聚类算法原理分类及应用场景的主要内容,如果未能解决你的问题,请参考以下文章

欧若纳算法解析聚类算法分析--FCM算法原理及特征

机器学习之聚类算法(k-meansCanopy层次聚类谱聚类)

机器学习之无监督学习-K均值聚类算法

技术视角机器学习之K-Means聚类算法详解

携英第四期丨机器学习之密度聚类算法

机器学习之经典聚类算法k-means在人脸识别的应用