聚类算法学习

很棒的聚类学习

简介

问题

1、很多算法在分析过程中需要开发者提供一定的参数(例如期望的类簇K个数、类簇初始质心),这导致了聚类结果对这些参数是十分敏感的,这不仅加重了开发者的负担,也非常影响聚类结果的准确性。

优化

  1. 可伸缩性:
    当聚类对象由几百上升到几百万,我们希望最后的聚类结果的准确度能保持一致

  2. 处理不同类型属性的能力:
    有些聚类算法,其处理对象的属性的数据类型只能是数值类型,但是在实际应用场景中,我们往往会遇到其他类型的数据(例如二元数据),分类数据等等,虽然我们也可以在预处理数据时将这些其他类型的数据转换成数值型数据,但是在聚类效率上或者聚类准确度上往往会有折损

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

  4. 对聚类算法初始化参数的知识需求的最小化:
    很多算法在分析过程中需要开发者提供一定的参数(例如期望的类簇K个数、类簇初始质心),这导致了聚类结果对这些参数是十分敏感的,这不仅加重了开发者的负担,也非常影响聚类结果的准确性

  5. 处理噪声数据的能力:
    所谓的噪声数据,可以理解为影响聚类结果的干扰数据,这些噪声数据的存在会造成聚类结果的“畸变”,最终导致低质量的聚类

  6. 增量聚类和对输入次序的不敏感:
    一些聚类算法不能将新加入的数据插入到已有的聚类结果,输入次序的敏感是指,对于给定的数据对象集合,以不同的次序提供输入对象时,最终产生的聚类结果的差异会比较大

  7. 高维性:
    有些算法只适合处理2维或者3维的数据,而对高维数据的处理能力很弱,因为在高维空间中数据的分布可能十分稀疏,而且高度倾斜。

  8. 基于约束的聚类:
    在实际应用中可能需要在各种条件下进行聚类,因为同一个聚类算法,在不同的应用场景中所带来的聚类结果也是各异的,因此找到满足“特定约束”的具有良好聚类特性的数据分组是十分有挑战的。这里最困难的问题就在于如何是识别我们要解决的问题中隐含的“特定约束”具体是什么,以及该使用什么算法来最好的“适配”这种约束

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

分类

距离 密度 互连性

信息论视角下的聚类算法理解

直观上讲,我们希望达到两个矛盾的目标。
1、一方面,我们希望文档属性和聚类属性的互信息尽可能小,这反映了我们希望对原始数据进行强压缩。
2、另一方面,我们希望聚类变量和词属性的互信息尽可能大,这反映了保留文档信息(用词在文档中出现来表示)的目标。将参数统计中的最小充分统计量推广到了任意分布。
解信息瓶颈准则下的最优化问题通常是非常困难的,解决方案思路上类似EM准则。
3、互信息的概念 越大两者的相关性也大,理解马尔科夫链也是可以用信息论理解。

K-Means算法(K-means clustering K均值聚类算法) - 基于硬划分的聚类

在学习具体的 K-means 算法细节之前,我们需要了解 K-means 原生存在的一些问题:

1、k均值算法的目标函数优化过程是单调非增加粗样式的(也就是每次的迭代至少不会让结果更糟),但是 k均值算法本身对达到收敛的迭代次数并没有给出理论保证。
2、算法给出的 k均值目标函数输出值和目标函数的最小可能值之差,并没有平凡下界,实际上,k均值可能会收敛到局部最小值。为了提高 k均值的结果,通常使用不同的随机初始化中心点,将该程序运行多次,并选取最优的结果。除此之外,有一些无监督的算法可以作为 k均值算法的前置算法,用来选取初始化中心。
3、在训练集上根据距离平方总和标准得到的”最佳“聚类,将不可避免地选择与数据点一样多的聚类!因为此时损失为0,为了抑制这种倾向,需要应用MDL准则进行模型结构复杂性惩罚,在模型复杂度和损失目标最优化之间寻求一个平衡。
过程:
1、聚类中心个数k
2、初始聚类中心的选择(常用随机产生)
3、将余下的样本点根据距离度量标准今年新归类
LP距离公式
4、算个发收敛的条件是什么
在这里插入图片描述
Kmeans这种无监督学习的算法并不能保证聚类出来的"族群"是有"实际意义"的,即Kmeans得到的分类族群可能只是在欧式空间上相近的点集,但是实际上它们并不一定真的就属于同一个类别。另外一方面,Kmeans的分类结果和K值有强关联,如果我们传入了一个"不合理"的K值,有可能导致Kmeans的过拟合,最后得到一个"错误"的分类结果。
应用:
将复杂的数据聚类后采用分类后的数据,从而达到数据化小,维度减低(比如96615像素点聚类成64像素点)
k-means++算法从一定程度上解决了该问题,k-means++选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。k-means++聚类的基本思想就是:虽然第一个中心点仍然随机选择,但其他的点则优先选择那些彼此相距很远的点

链接聚类模型

基于链接的聚类算法是凝聚式的,一开始,数据完全是碎片化的,然后逐步构建越来越大的聚类,如果我们没有加入停止规则,链接算法的结果可以用聚类系统树图来描述,即,一个域子集构成的树,其叶子节点是单元素集,根节点为全域。
常用的停止准则包括:
固定类的数量:固定参数 k,当聚类数目为 k 时停止聚类。使用这种停止准则需要我们对我们的场景要有较强的领域知识,即预先知道需要聚类的数量
设定距离上限:设定域子集间距最大上限,如果在某一轮迭代中,所有的组件距离都超过该阈值,则停止聚类
如果没有停止准则,最后最剩下一个类(全域)。

DBSCAN(Density-Based Spatial Clustering of Application with Noise) - 基于密度的聚类算法

基于密度的聚类方法与其他方法的一个根本区别是:它不是基于各种各样的距离度量的,而是基于密度的。因此它能克服基于距离的算法只能发现“类圆形”的聚类的缺点。
DBSCAN的指导思想是:
用一个点的∈邻域内的邻居点数衡量该点所在空间的密度,只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去
它可以找出
形状不规则
(oddly-shaped)的cluster,且聚类时不需要事先知道cluster的个数
需要注意的是,核心点位于簇的内部,它确定无误地属于某个特定的簇;噪音点是数据集中的干扰数据,它不属于任何一个簇;而边界点是一类特殊的点,它位于一个或几个簇的边缘地带,它可能属于一个簇,也可能属于另外一个簇,其簇归属并不明确
在这里插入图片描述
通过最小和最大距离描绘在一个图像中确定聚类中心
在这里插入图片描述

SOM(Self-organizing Maps)- 基于模型的聚类(model-based methods)

基于模型的方法给每个聚类假定一个模型(预先设定),然后寻找能够很好地满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其他。它的一个潜在的假定就是:
目标数据集是由一系列的概率分布所决定的
通常有两种尝试方向:统计方案;和神经网络方案
特点:

  1. 保序映射: 将输入空间的样本模式类有序地映射在输出层上
  2. 数据压缩: 将高维空间的样本在保持拓扑结构不变的条件下投影到低维的空间,在这方面SOM网具有明显的优势。无论输入样本空间是多少维,其模式都可以在SOM网输出层的某个区域得到相应。SOM网经过训练以后,在高维空间输入相近的样本,其输出相应的位置也相近
  3. 特征提取: 从高维空间样本向低维空间的映射,SOM网的输出层相当于低维特征空间
  4. 过程类似于Kmeans,但是他是有个权重模型,这样子实现高维到低维,之后学习也可以用到这个权重模型。而且将高维数据可视化。

##EM算法
EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计。
#GNG:Growing Neural Gas Network

总结:
聚类:
样本有很多的特征,但是聚类的目标y一般少于特征,对于y应该与样本的y’的互信息尽可能地大,与其他的样本特征足够的小这里的y’与其他样本特征可以运用因子分析法进行融合。主要是要有两方面的思想。
聚类是无监督,所以主要的思考方向以学习(神经网络、模型法)、迭代(K-means)、层次(树状)、生长(GNG)去建立大的框架,目的是不断的修正,但是也会存在过拟合(MDL原则惩罚)的情况,很多算法都是由经验设定了结束算法的参考值。
对于特征,由距离(曼哈顿距离,欧拉距离,柔性距离统计函数(Gaussian Kernel)等)、密度以及概率三个角度决定聚类中心或者是分类标准。

猜你喜欢

转载自blog.csdn.net/Carol_learning/article/details/104107647