数据挖掘算法-----聚类算法

什么是聚类?

聚类是发现数据集中数据之间的相关关系,对数据进行分组,组内的相似性越大,组间的差别越大,则聚类的效果越好。

聚类和分类的区别

聚类技术属于机器学习中的无监督学习,与监督学习不同,聚类中没有数据类别的分类或者分组信息。聚类并不关心某一类别的信息,其目标是将相似的样本聚在一起。因此,聚类算法只需要知道如何计算样本之间的相似性,就可以对数据进行聚类。

聚类中不同簇的类型:聚类目标是形成不同的簇,使用不同的簇的类型划分得出的结果也不同;

1、明显分离的簇:特点是不同组中任意两点的距离都大于同一组中任意两点之间的距离,簇的形状不固定。

2、基于原型的簇:基于中心的簇,每个簇都有一个中心点,属于该簇的对象到该簇中心的距离比到其他簇中心的距离更近,簇的形状趋于球形。

3、基于密度的簇:簇是被低密度划分的高密度区域;适用于簇的形状不规则或者相互缠绕的。

聚类算法的分类(主要):

1、基于层次的聚类算法(Hierarchical methods)

层次聚类分为两种类型:

1)合并的层次聚类:采用自底向上的聚类方法,从最底层开始,每一次通过合并最相似的聚类来形成上一层次中的聚类,当全部数据点都合并到一个聚类时或者达到某个终止条件时结束,是大部分层次聚类采用的方法。

2)分裂的层次聚类:采用自顶向下的方法,从一个包含全部数据点的聚类开始,将根结点分裂成一些子聚类,每个子聚类再递归向下分裂,知道出现只有一个数据点的单结点聚类出现(每个聚类只含有一个数据点)为止。

算法流程(自底向上):

1)将每个对象看做一类,计算两两之间的最小距离;

2)将距离最小的两个类合并成一个新类;

3)重复计算新类与所有类之间的距离;

4)重复2)、3),直到所有类合并为一类;

算法优点:可解释性好,研究表明这些算法能产生高质量的聚类;

算法缺点:时间复杂度高,为o(n^3)(n为数据点的个数),属于贪心算法的一种,一步错步步错

2、基于划分的聚类算法(Partition-based methods)

基于划分的算法,是将数据集中划分成“类内的点都足够近,类间的点都足够远”的效果。过程通常为先确定聚类的类别,然后根据预先定义好的启发式算法将给数据点做迭代重置,知道达到目标聚类效果。划分得到的簇的类型通常为基于聚类中心类型的。

优点:即使对于大型数据集,算法使用也是简单高效,时间复杂度和空间复杂度都较低;

缺点:数据集大时容易形成局部最优,需要预先设定初始类簇值 k ,并对初始值的选取敏感;对噪声和离群值敏感;只用于numerical类型数据;不能解决非凸(non-convex)数据;

3、基于密度的聚类算法(Density-based methods)

该算法的聚类目标是发现被低密度区域分离的高密度区域。核心思想是先发现密度较高的点,然后将相近的高密度点连成一片,进而生成各种簇。算法的实现方法是:设置两个参数,半径和密度阈值(r 和 minpts),以每个数据点为圆心,以r为半径值画圆,在圆内的数据点个数就是该点的密度值,若圈内点的个数小于密度阈值minpts,则该点为低密度点,否则为高密度点;若一个高密度点在另一个高密度点圆内,则将两点串联起来;若低密度的点也在高密度点圆内,把它也连在最近的高密度点上,称之为边界点,这样将所有连接在一起的点作为一个簇,没有在任何高密度点圆内的低密度点称为异常点。

优点:对噪声不敏感,能发现任何形状的聚类;

缺点:聚类的效果与参数的大小有较大关系;

4、基于网络的聚类算法(Grid-based methods)

基于网络的聚类算法原理是将数据空间划分为网格单元,将数据对象映射到网格单元中并计算每个单元的密度;根据预设的阈值判断每个网格单元是否为高密度单元,由邻近的稠密单元组成类。经常与基于密度的聚类算法结合使用。

算法流程:

1)划分网格

2)使用网格单元内数据的统计信息对数据进行压缩表达

3)基于这些统计信息判断高密度网格单元

4)将相连的高密度网格单元识别为簇

优点:计算速度与数据对象的个数无关,只依赖于数据空间中每个维上单元的个数,所以速度很快;

缺点:参数敏感;无法处理不规则分布的数据;维数灾难;算法效率的提高以聚类结果的精确性为代价;

5、基于模型的聚类算法(Model-based methods)

此类算法为每个类簇假设一个模型,寻找数据对给定模型的最佳拟合。这类算法主要指基于概率模型的方法和基于神经网络模型的方法,其中基于概率模型的方法居多。基于概率模型的方法主要指概率生成模型(generative Model),假设数据是根据潜在的概率分布生成的,同一类的数据属于同一种概率分布。

优点:对类的划分不够坚硬,以概率的形式表现,每类的特征可以用参数来表达;

缺点:执行效率不高,特别是在数据量过多或者过少时;

6、基于模糊的聚类算法

基于模糊集理论的聚类方法,样本以一定的概率属于某个类。比较典型的有基于目标函数的模糊聚类方法、基于相似性关系和模糊关系的方法、基于模糊等价关系的传递闭包方法、基于模糊图论的最小支撑树方法,以及基于数据集的凸分解、动态规划和难以辨别关系等方法。

优点:算法对于满足正态分布的数据聚类效果会很好,同时对孤立点敏感;

缺点:算法的性能依赖于初始聚类中心;因此,需要另外的快速算法确定聚类的中心或者没次使用不同的聚类中心启动算法并多次运行;

7、其他

基于约束的聚类算法、核聚类、谱聚类、量子聚类

相似性衡量

对数据对象之间的相似性进行衡量,基本分为两种,一种是距离,一种是相似系数。不同的相似性度量方法对于聚类的结果有不同的影响。

距离相似性度量

1、欧式距离(Euclidean distnce

相当于高维空间中向量所表示的点与点之间的距离。

《数据挖掘算法-----聚类算法》

由于特征向量中各个特征的量纲不一致,需要对数据进行标准化,使其与量纲单位无关。

优点:简单、应用广泛

缺点:没有考虑分量之间的相关性,体现单一特征的多个分量会干扰结果。

2、曼哈顿距离(Manhattan Distance)

也称为城市街区距离(City Block Distance),想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。

《数据挖掘算法-----聚类算法》

3、切比雪夫距离(Chebyshev distance)

两点之间的距离定义为其各坐标数值差绝对值中的最大值。

《数据挖掘算法-----聚类算法》

4、闵可夫斯基(Minkowski Distance)

闵可夫斯基不是一种距离,而是一组距离的定义。

《数据挖掘算法-----聚类算法》

公式中p是一个可变的参数,p=1时表示曼哈顿距离;p=2时表示欧式距离;p->无穷时表示切比雪夫距离。

5、标准化欧式距离(Standardized Euclidean Distance)

针对简单欧式距离的一种改进,解决数据各维分量分布不一样的问题,先对数据进行标准化(计算均值、方差等),计算公式为:标准值=原值-分量均值/分量标准差;

《数据挖掘算法-----聚类算法》

6、马氏距离(Mahalanobis Distance)

有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:《数据挖掘算法-----聚类算法》,其中向量Xi与Xj之间的马氏距离定义为:《数据挖掘算法-----聚类算法》,若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:《数据挖掘算法-----聚类算法》,也就是欧式距离;若协方差矩阵是对角矩阵,则公式变为标准化的欧氏距离。

优点:与量纲无关,排除变量之间相关性的干扰。

7、巴式距离(Bhattacharyya Distance)

用于测量两个离散或者连续概率分布的相似性,Bhattacharyya系数可以被用来确定两个样本被认为相对接近的,它是用来测量中的类分类的可分离性。

对于离散概率分布 p和q在同一域 X,它被定义为:《数据挖掘算法-----聚类算法》,其中《数据挖掘算法-----聚类算法》是Bhattacharyya系数。对于连续概率分布,Bhattacharyya系数被定义为:《数据挖掘算法-----聚类算法》,在《数据挖掘算法-----聚类算法》这两种情况下,巴氏距离《数据挖掘算法-----聚类算法》并没有服从三角不等式。

8、汉明距离(Hamming distance)

两个等长的字符串s1和s2之间的汉明距离定义为将其中一个变为另一个所需要做的最小替换次数,例如字符串“1111”与“1001”之间的汉明距离为2。通常应用于信息编码,为了增强容错性,应使得编码间的最小汉明距离尽可能大。

 

相似系数度量

相关系数( Correlation coefficient )定义为《数据挖掘算法-----聚类算法》,(其中,E为数学期望或均值,D为方差,D开根号为标准差,E{ [X-E(X)] [Y-E(Y)]}称为随机变量X与Y的协方差,记为Cov(X,Y),即Cov(X,Y) = E{ [X-E(X)] [Y-E(Y)]},而两个变量之间的协方差和标准差的商则称为随机变量X与Y的相关系数,记为《数据挖掘算法-----聚类算法》)。相关系数衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。具体的,如果有两个变量:X、Y,最终计算出的相关系数的含义可以有如下理解:1)当相关系数为0时,X和Y两变量无关系。2)当X的值增大(减小),Y值增大(减小),两个变量为正相关,相关系数在0.00与1.00之间。3)当X的值增大(减小),Y值减小(增大),两个变量为负相关,相关系数在-1.00与0.00之间。

1、余弦相似度(cosine similarity)

两个向量之间的夹角的余弦,《数据挖掘算法-----聚类算法》,通常应用于布尔变量,即各分量只取0或1时。

优点:不受坐标轴旋转,放大或者缩小的影响。

2、杰卡德相似系数(Jaccard similarity coefficient)

定义为两个集合的交集元素在两个集合的并集中所占的比例。用于衡量两个集合之间的相似度。

《数据挖掘算法-----聚类算法》

杰卡德距离是与杰卡德相似系数相反的定义,使用两个集合中不同元素占集合中所有元素的比例来衡量两个集合之间的区分度。

《数据挖掘算法-----聚类算法》

3、皮尔逊系数(Pearson Correlation Coefficient)

定义为两个变量之间的协方差和标准差的商。《数据挖掘算法-----聚类算法》,当两个变量的标准差都不为0时,相关系数才有定义。适用于两个变量之间是线性关系,都是连续数据的情况;两个变量的总体是正态分布或者接近正态的单峰分布;两个变量的观测值是成对的,每对观测值之间相互独立。

    原文作者:聚类算法
    原文地址: https://blog.csdn.net/m0_38103546/article/details/81143919
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞