机器学习——聚类

聚类的概念

聚类就是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小。聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术。

方法:
给定一个有N个对象的数据集,构造数据的k个簇。满足下列条件:

  • 每一个簇至少包含一个对象
  • 每一个对象属于且仅属于一个簇
  • 将满足上述条件的k个簇称作一个合理划分

基本思想:
对于给定的类别数目k,首先给出初始划分,通过迭代改变样本和簇的隶属关系,使得每一次改进之后的划分方案都较前一次好。

相似度的度量方法

1、欧氏距离
欧拉距离,来自于欧式几何,在数学上也可以成为范数。
在这里插入图片描述
2、杰卡德相似系数
一般用于两个一元unary向量相似性的度量,或者用于集合sets相似性形式定义。
在这里插入图片描述
3、余弦相似度
适合高维度向量vectors的相似度计算。
在这里插入图片描述
4、皮尔逊相关系数
Pearson correlation,数值型数据的相关性分析,它其实就是将数据归一化(数据减去其对应均值)后进行cosine相似度计算。
在这里插入图片描述
5、相对熵
又称为KL散度,是两个概率分布P和Q差别的非对称性的度量。
在这里插入图片描述
6、Hellinger距离
该距离满足三角不等式,是对称、非负距离。
在这里插入图片描述

k-Means聚类

k-Means算法,也被称为k-平均或k-均值,是一种广泛使用的聚类算法,或者成为其他聚类算法的基础。

算法步骤

假定输入样本为 S = x 1 , x 2 , . . . , x m S=x_1,x_2,...,x_m S=x1,x2,...,xm

  • 选择初始的k个类别中心 μ 1 , μ 2 , . . . , μ k \mu_1,\mu_2,...,\mu_k μ1,μ2,...,μk
  • 对于每个样本x,将其标记为距离类别中心最近的类别;在这里插入图片描述
  • 将每个类别中心更新为隶属该类别的所有样本的均值;在这里插入图片描述
  • 重复最后两步,直到类别中心的变化小于某闭值。

终止条件:
迭代次数、簇中心变化率、最小平方误差MSE
在这里插入图片描述

k-Means聚类优点

  • 是解决聚类问题的一种经典算法,简单、快速;
  • 对处理大数据集,该算法保持可伸缩性和高效率;
  • 当簇近似为高斯分布时,它的效果较好。

k-Means聚类缺点

  • 在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用;
  • 必须事先给出k(要生成的簇的数目),而且对初值敏感,对于不同的初始值,可能会导致不同结果;
  • 不适合于发现非凸形状的簇或者大小差别很大的簇;
  • 对躁声和孤立点数据敏感。

二分K-means算法

为了克服K-means算法容易收敛于局部极小值的问题,可以使用bisecting K-means算法弱化随机初始质心的影响。该算法首先将所有的样本作为一个簇,然后根据某种规则将该簇一分为二;之后选择其中一个簇继续划分,直到达到停止条件(聚簇数量、迭代次数、最小SSE等)。

选择划分聚簇的规则一般有两种:
(1)选择样本量最大的簇进行划分;
(2)选择SSE值最大的簇进行划分。
在这里插入图片描述

K-means++算法

K-means++算法可以解决K-means对初始质心比较敏感的问题,算法的区别主要在于选择的初始k个质心的之间的相互距离要尽可能的远。

K-means++算法的流程是:

  1. 从数据集中随机选择一个样本作为第一个质心;
  2. 对数据集中的每个样本,计算它到所有已有质心的距离的总和D(x);
  3. 采用线性概率选择出下一个聚类中心点,即D(x)较大的点成为新增质心的概率较大;
  4. 重复步骤2直到找到k个聚类中心点;
  5. 使用得到的k个质心作为初始化质心运行K-means算法。

Mini Batch K-means算法

Mini Batch K-means算法是K-means算法的一种优化变种,采用随机抽取的小规模数据子集训练算法,减少计算时间,同时试图优化目标函数。Mini Batch K-means算法可以减少K-means算法的收敛时间,而且产生的结果一般只略差于K-means算法。

算法步骤如下:

  1. 首先抽取数据集部分样本,使用K-means构建出k个质心的模型;
  2. 继续抽取数据集中的部分样本,将其添加到模型中,分别分配给距离最近的质心;
  3. 更新质心的位置;
  4. 循环迭代(2、3)步操作,直到质心稳定或者达到指定迭代次数,停止计算。

Canopy聚类

虽然Canopy算法可以划归为聚类算法,但更多的可以使用Canopy算法做空间素引,其时空复杂度都很出色。
Canopy属于一种‘粗’聚类算法,即使用一种简单、快捷的距离计算方法将数据集分为若干可重叠的子集canopy,这种算法不需要指定k值、但精度较低,可以结合K-means算法一起使用:先由Canopy算法进行粗聚类得到k个质心,再使用K-means算法进行聚类。

算法步骤

  1. 将原始样本集随机排列成样本列表 L = [ x 1 , x 2 , . . . , x m ] L=[x_1,x_2,...,x_m] L=[x1,x2,...,xm](排列好后不再更改),根据先验知识或交叉验证调参设定初始距离阈值T1、T2,且T1>T2 ;
  2. 从列表L中随机选取一个样本P作为第一个canopy的质心,并将P从列表中删除;
  3. 从列表L中随机选取一个样本Q,计算Q到所有质心的距离,考察其中最小的距离D:
    —如果D≤T1,则给Q一个弱标记,表示Q属于该canopy,并将Q加入其中;
    —如果D≤T2,则给Q一个强标记,表示Q属于该canopy,且和质心非常接近,所以将该canopy的质心设为所有强标记样本的中心位置,并将Q从列表L中删除;
    —如果D>T1,则Q形成一个新的聚簇,并将Q从列表L中删除。
  4. 重复第三步直到列表L中元素个数为零。
    在这里插入图片描述

层次聚类

层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。
凝聚层次聚类: AGNES算法
一种自底向上的策略,首先将每个对象作为一个簇,然,后合并这些原子簇为越来越大的簇,直到某个终结条件被满足。
在这里插入图片描述
分裂的层次聚类: DIANA算法
采用自顶向下的策略,它首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到达到了某个终结条件。

算法步骤

AGNES算法

  1. 将每个对象作为一个簇;
  2. 两个簇间的距离由这两个不同簇中距离最近的数据点对的相似度来确定,根据某些准则将这些簇一步步地合并;
  3. 合并过程反复进行直到所有的对象最终满足簇数目。

DIANA 算法

  1. 首先将所有的对象初始化到一个簇中;
  2. 然后根据一些原则(比如最大的欧式距离),将该簇分类;
  3. 直到到达用户指定的簇数目或者两个簇之间的距离超过了某个阔值。

簇间距离的不同定义

1、最小距离
两个集合中最近的两个样本的距离,容易形成链状结构。
2、最大距离complete
两个集合中最远的两个样本的距离,若存在异常值则不稳定。
3、平均距离

  • average:两个集合中样本间两两距离的平均值
  • ward:两个集合中样本间两两距离的平方和

在这里插入图片描述

密度聚类DBSCAN

密度聚类方法的指导思想是,只要样本点的密度大于某阈值,则将该样本添加到最近的簇中。这类算法能克服基于距离的算法只能发现“类圆形”(凸)的聚类的缺点,可发现任意形状的聚类,且对噪声数据不敏感。但计算密度单元的计算复杂度大,需要建立空间索引来降低计算量。
在这里插入图片描述

DBSCAN算法的若干概念

  1. 对象的 ϵ − \epsilon- ϵ邻域:给定对象在半径 ϵ \epsilon ϵ内的区域。
  2. 核心对象:对于给定的数目m,如果一个对象的 ϵ − \epsilon- ϵ邻域至少包含m个对象,则称该对象为核心对象。
  3. 直接密度可达:给定一个对象集合D,如果p是在q的 ϵ − \epsilon- ϵ邻域内,而q是一个核心对象,我们说对象p从对象q出发是直接密度可达的。
  4. 密度可达:如果存在一个对象链 p 1 , p 2 , ⋅ ⋅ ⋅ , p n , p 1 = q , p n = p p_1,p_2,···,p_n,p_1=q,p_n=p p1,p2,,pn,p1=q,pn=p,对 p i ( 1 < i < n ) p_i(1<i<n) pi(1<i<n) p i + 1 p_i+_1 pi+1是从 p i p_i pi关于 ϵ \epsilon ϵ和m直接密度可达的, 则对象p是从对象q关于 ϵ \epsilon ϵ和m密度可达的。
  5. 密度相连:如果对象集合D中存在一个对象o,使得对象p和q是从o关于 ϵ \epsilon ϵ和m密度可达的,那么对象p和q是关于 ϵ \epsilon ϵ和m密度相连的。
  6. :一个基于密度的簇是最大的密度相连对象的集合。
  7. 噪声:不包含在任何簇中的对象称为噪声。

算法步骤

  1. 如果一个点p的 ϵ − \epsilon- ϵ邻域包含多于m个对象,则创建一个p作为核心对象的新簇;
  2. 寻找并合并核心对象直接密度可达的对象;
  3. 没有新点可以更新簇时,算法结束。

谱聚类

谱聚类是一种基于图论的聚类方法,通过对样本数据的拉普拉斯矩阵的特征向量进行聚类,从而达到对样本数据聚类的目的。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,进而聚类。

方阵作为线性算子,它的所有特征值的全体统称方阵的谱。

  1. 方阵的谱半径为最大的特征值
  2. 矩阵A的谱半径: ( A T A ) (A^TA) (ATA)的最大特征值

谱分析过程

  1. 给定一组数据 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn记任意两个点之间的相似度(“距离”的减函数)为 S i j = < x i , x j > Sij=<x_i,x_j> Sij=<xi,xj>,形成相似度图(similarity graph): G = ( V , E ) G=(V,E) G=(V,E)
  2. 如果 x i x_i xi x j x_j xj之间的相似度 S i j Sij Sij大于一定的阈值,那么两个点是连接的,权值记做 S i j Sij Sij
  3. 接下来,可以用相似度图来解决样本数据的聚类问题:找到图的一个划分,形成若干个组(Group),使得不同组之间有较低的权值,组内有较高的权值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值