聚类算法
聚类算法是一种无监督学习
一、无监督学习
在无监督学习(unsupervised learning)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。
聚类:K-means, 层次聚类,密度聚类
降维:PCA
无监督学习的基本想法是对给定数据(矩阵数据)进行某种“压缩”,从而找到数据的潜在结构。假定损失最小的压缩得到的结果就是最本质的结构。
(1)考虑发掘数据的纵向结构,把相似的样本聚到同类,即对数据进行聚类。
(2)考虑发掘数据的横向结构,把高维空间的向量转换为低维空间的向量,即对数据进行降维。
(3)同时考虑发掘数据的纵向与横向结构,假设数据由含有隐式结构的概率模型生成得到,从数据中学习该概率模型。
1. 聚类
聚类(clustering)是将样本集合中相似的样本(实例)分配到相同的类,不相似的样本分配到不同的类。
聚类时,样本通常是欧氏空间中的向量,类别不是事先给定, 而是从数据中自动发现,但类别的个数通常是事先给定的。样本之间的相似度或距离 由应用决定。
2. 降维
降维(dimensionality reduction)主要用于数据分析,也可以用于监督学习的预处理。降维可以帮助发现高维数据中的统计规律。
降维是将训练数据中的样本(实例)从高维空间转换到低维空间。假设样本原本存在于低维空间,或者近似地存在于低维空间,通过降维则可以更好地表示样本数据的结构,即更好地表示样本之间的关系。高维空间通常是高维的欧氏空间,而低维空间是低维的欧氏空间或者流形(manifold)。 从高维到低维的降维中,要保证样本中的信息损失最小。
降维有线性的降维和非线性的降维。
二、聚类的基本概念
1. 聚类简介
聚类主要用于数据分析,也可以用于监督学习的预处理。聚类有助于发现数据的统计规律。聚类是针对给定的样本,依据它们特征的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。
聚类的目的是通过得到的类或簇来发现数据的特点或对数据进行处理,在数据挖掘、模式识别等领域有着广泛的应用。
聚类属于无监督学习,因为只是根据样本的相似度或距离将其进行归类,而类或簇事先并不知道。相关算法:K-means clustering, Hierarchical clustering, density-based clustering
2. 样本之间的距离或相似度
假设有n个样本,每个样本由m个属性的特征向量组成,样本合集可以用矩阵X表示
聚类的核心概念是相似度(similarity) 或距离(distance),有多种相似度或距离定义。因为相似度直接影响聚类的结果,所以其选择是聚类的根本问题。
(1)闵可夫斯基距离
闵可夫斯基距离越大,相似度越小,距离越小,相似度越大。(反比关系)
(2)马哈拉诺比斯距离
马哈拉诺比斯距离(Mahalanobis distance),简称马氏距离,也是另一种常用的相似度,考虑各个分量(特征)之间的相关性并与各个分量的尺度无关。
马哈拉诺比斯距离越大,相似度越小,距离越小,相似度越大。(反比关系)
(3)相关系数
样本之间的相似度也可以用相关系数(correlation coefficient)来表示。
相关系数的绝对值越接近于1,表示样本越相似,越接近于0,表示样本越不相似。
(4)夹角余弦
样本之间的相似度也可以用夹角余弦(cosine)来表示。
夹角余弦越接近于1,表示样本越相似,越接近于0,表示样本越不相似。
(5)相似度
用距离度量相似度时,距离越小样本越相似
用相关系数时,相关系数越大样本越相似
注意不同相似度度量得到的结果并不一定一致。
从图可以看出,如果从距离的角度看,A和B比A和C更相似但从相关系数的角度看,A和C比A和B更相似。
3. 类或族
通过聚类得到的类或簇,本质是样本的子集。
如果一个聚类方法假定一个样本只能属于一个类,或类的交集为空集,那么该方法称为硬聚类(hard clustering)方法。
如果一个样本可以属于多个类,或类的交集不为空集,那么该方法称为软聚类(soft clustering)方法。
(1)定义
类或簇有多种定义,下面给出几个常见的定义。
(2)常用特征
类的特征可以通过不同角度来刻画,常用的特征有下面三种:均值,类的直径,散布矩阵
4. 类与类之间的距离
(1)最短距离或单连接(single linkage)
(2)最长距离或完全连接(complete linkage)
(3)中心距离
(4)平均距离
三、K均值聚类
1. 概述
K-means 聚类采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。
k均值聚类是基于样本集合划分的聚类算法。
k均值聚类将样本集合划分为k个子集,构成k个类,将n个样本分到k个类中,每个样本到其所属类的中心的距离最小。
三个角度描述:模型,策略,算法
2. 模型
C表示一个划分,i表示样本索引,l表示类别,每i个样本对应的类为L
3. 策略
k均值聚类归结为样本集合X的划分,或者从样本到类的函数的选择问题。
k均值聚类的策略是通过损失函数的最小化选取最优的划分或函数C*
首先,采用欧氏距离平方(squared Euclidean distance)作为样本之间的距离
定义样本与其所属类的中心之间的距离的总和为损失函数
相似的样本被聚到同类时,损失函数值最小,这个目标函数的最优化能达到聚类的目的。
但是最优化问题是组合优化问题,计算量大指数级,是个NP难问题。因此采用迭代方法求解,得到的是局部最优解。
4. 算法
k均值聚类的算法是一个迭代的过程,每次迭代包括两个步骤。
(1)首先选择k个类的中心,将样本逐个指派到与其最近的中心的类中,得到一个聚类结果
(2)然后更新每个类的样本的均值,作为类的新的中心
重复以上步骤,直到收敛为止。
例题:
四、层次聚类
1. 概述
层次聚类假设类别之间存在层次结构,将样本聚到层次化的类中。
层次聚类又有聚合(agglomerative)或自下而上(bottom-up)聚类、分裂(divisive)或自上而下(top-down)聚类两种方法。
(1)聚合聚类开始将每个样本各自分到一个类。之后将相距最近的两类合并,建立一个新的类。重复此操作直到满足停止条件得到层次化的类别。
(2)分裂聚类开始将所有样本分到一个类。之后将已有类中相距最远的样本分到两个新的类。重复此操作直到满足停止条件得到层次化的类别。
2. 算法操作步骤
对于给定的样本集合,开始将每个样本分到一个类。然后按照一定规则,例如类间距离最小,将最满足规则条件的两个类进行合并。如此反复进行,每次减少一个类,直到满足停止条件,如所有样本聚为一类。
五、密度聚类
1. 概述
密度聚类方法的指导思想是,只要样本点的密度大于某阈值,则将该样本添加到最近的簇中。
DBSCAN (Density-Based Spatial Clustering of Applications with Noise)。一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在有“噪声”的数据中发现任意形状的聚类。
密度聚类的定义:密度聚类也称为“基于密度的聚类” (density-based clustering)。 此类算法假设聚类结构能通过样本分布的紧密程度来确定。密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇来获得最终的聚类结果。
2. DBSCAN算法
3. 算法优缺点
DBSCAN算法优点:聚类速度快且能够有效处理噪声点发现任意形状的空间聚类。不需要输入要划分的聚类个数。聚类簇的形状没有偏倚。可以在需要是过滤噪声
DBSCAN算法缺点:数据量大时,需要较大的内存和计算时间。当空间聚类的密度不均匀、聚类间距差较大时,得到的聚类质量较差(MinPts与Eps选取困难)。算法效果依赖距离公式选择,实际应用中常使用欧式距离,对于高纬度数据,存在“维度灾难”