关于聚类方法集评价方法的简单调研

目录
1、介绍
2、样本聚类距离
3、常见聚类方法
–3.1.层次聚类
–3.2.K-means聚类
–3.3.DBSCAN聚类
4、评价指标
–4.1 样本实际类别信息已知
–4.2 样本实际类别信息未知

1、介绍

无监督学习:无监督学习是一种机器学习技术,用于查找数据中的模式。无监督学习是指只有输入数据(X)而没有相应的输出变量。无监督学习的目标是对数据中的底层结构或分布进行建模,以便更多地了解数据。无监督机器学习算法从数据集中推断模式,而不参考已知或标记的结果。
聚类是最常见的无监督学习方法。群集允许您根据相似度自动将数据集分割成组。它用于探索性数据分析,以发现数据中的隐藏模式或分组。它的目的是让类群内观测的距离最近,同时不同群体之间的距离最大。
聚类是无监督学习中最主要部分。下面的章幅主要就聚类展开。聚类就是将观察值聚成一个一个的组,每一个组都含有一个或者几个特征。恰当地提取特征是无监督最为关键的环节。例如在对猫的识别中,来尝试提取猫的特征:皮毛、四肢、耳朵、眼睛、胡须、牙齿、舌头等等。通过对特征相同的动物的聚类,可以将猫或者猫科动物聚成一类。但是此时,我们不知道这群毛茸茸的东西是什么,只知道这团东西属于一类,兔子不在这个类(耳朵不符合),飞机也不在这个类(有翅膀)。特征有效性直接决定着算法有效性。如果我们拿体重来聚类,而忽略体态特征,恐怕就很难区分出兔子和猫了。

2、样本聚类距离

几种常见的距离,欧氏距离、平方欧式距离、曼哈顿距离、最大距离和马氏距离。
在这里插入图片描述

3、常见聚类方法

3.1.层次聚类

在数据挖掘和统计中,层次聚类(也称为层次聚类分析或HCA)是一种聚类分析的方法,旨在建立聚类的层次结构。通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。创建聚类树有自下而上合并和自上而下分裂两种方法。
论数据集应该聚类成多少个簇,通常是在讨论我们在什么尺度上关注这个数据集。层次聚类算法相比划分聚类算法的优点之一是可以在不同的尺度上(层次)展示数据集的聚类情况。
基于层次的聚类算法(Hierarchical Clustering)可以是凝聚的(Agglomerative)或者分裂的(Divisive),取决于层次的划分是“自底向上”还是“自顶向下”。

自底向上的合并算法
  层次聚类的合并算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程。简单的说层次聚类的合并算法是通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高。并将距离最近的两个数据点或类别进行组合,生成聚类树。
  在这里插入图片描述

相似度的计算
  层次聚类使用欧式距离来计算不同类别数据点间的距离(相似度)。
  在这里插入图片描述
      
实例:数据点如下:
在这里插入图片描述
分别计算欧式距离值(矩阵)
在这里插入图片描述

将数据点B与数据点C进行组合后,重新计算各类别数据点间的距离矩阵。数据点间的距离计算方式与之前的方法一样。这里需要说明的是组合数据点(B,C)与其他数据点间的计算方法。当我们计算(B,C)到A的距离时,需要分别计算B到A和C到A的距离均值。
在这里插入图片描述

经过计算数据点D到数据点E的距离在所有的距离值中最小,为1.20。这表示在当前的所有数据点中(包含组合数据点),D和E的相似度最高。因此我们将数据点D和数据点E进行组合。并再次计算其他数据点间的距离。
在这里插入图片描述

后面的工作就是不断的重复计算数据点与数据点,数据点与组合数据点间的距离。这个步骤应该由程序来完成。这里由于数据量较小,我们手工计算并列出每一步的距离计算和数据点组合的结果。
在这里插入图片描述

3.2.K-means聚类

K-means算法又名k均值算法。以样本间距离为基础,将所有的观测之间划分到k个群体,使得群体和群体之 间的距离尽量大,同时群体内部的观测之间的“距离和”最小。其算法思想大致为:先从样本集中随机选取k个样本作为簇中心,并计算所有样本与这k 个“簇中心”的距离(欧氏距离),对于每一个样本,将其划分到与其距离最近的“簇中心”所在的簇中,对于新的簇计算各个簇的新的“簇中心”。
  根据以上描述, K-means算法的主要步骤如下图:

K均值对簇中心初始化非常敏感。而且,初始化不良会降低收敛的速度差并会使得整体聚集效果不佳。用于K均值初始化的方法是 Forgy 和随机分区。Forgy 方法从数据集中随机选择k个观测值,并将其作为初始值。随机分区方法是先随机为每个观测值分配一个簇,随后进行更新,簇的随机分配点的质心就是计算后得到的初始平均值
K均值的缺点:
K-means是一个极其高效的聚类算法,但是它存在以下问题:
**1.**可能只能得到局部的最优解,而无法得到全局的最优解。
**2.**K-Means算法对初始选取的质心点是敏感的,不同的随机种子点得到的聚类结果完全不同 ,对结果影响很大。
**3.**K-means无法指出应该使用多少个类别。在同一数据集中,选择不同的类别得到的结果是不一样的,甚至是不合理的;
K-means的改进:
1.多进行几次聚类,每次初始化的聚类中心不一样,最后选择方差最小的那个结果;
2.首先将类别设置为1,然后提高类别数(到达某个上限),一般情况下,总方差会快速下降直到达到某个拐点,这意味着再加一个新的聚类中心也不会显著减少总体方差。在拐点处停止,保存此时的类别数;

3.3.DBSCAN聚类

DBSCAN是基于密度空间的聚类算法,与KMeans算法不同,它不需要确定聚类的数量,而是基于数据推测聚类的数目,它能够针对任意形状产生聚类。
基于距离的聚类算法的聚类结果是球状的簇,当数据集中的聚类结果是非球状结构时,基于距离的聚类算法的聚类效果并不好。与基于距离的聚类算法不同的是,基于密度的聚类算法可以发现任意形状的聚类。
在基于密度的聚类算法中,通过在数据集中寻找被低密度区域分离的高密度区域,将分离出的高密度区域作为一个独立的类别。DBSCAN(Density-Based Spatial Clustering of Application with Noise)是一种典型的基于密度的聚类算法。
在DBSCAN算法中将数据点分为三类:
核心点(Core point)。若样本 x_i的 Eps邻域内至少包含了MinPts个样本,即N_∈ (X_i)≥MinPts ,则称样本点 x_i为核心点。
边界点(Border point)。若样本x_i 的 Eps邻域内包含的样本数目小于MinPts,但是它在其他核心点的邻域内,则称样本点 x_i为边界点。
噪音点(Noise)。既不是核心点也不是边界点的点
如下图所示:图中黄色的点为边界点,因为在半径Eps内,它领域内的点不超过MinPts个,我们这里设置的MinPts为5;而中间白色的点之所以为核心点,是因为它邻域内的点是超过MinPts(5)个点的,它邻域内的点就是那些黄色的点!

Eps邻域:给定对象半径Eps内的邻域称为该对象的Eps邻域,我们用 表示点p的Eps-半径内的点的集合,即:

直接密度可达:给定一个对象集合D,如果p在q的Eps邻域内,而q是一个核心对象,则称对象p 从对象q出发时是直接密度可达的(directly density-reachable)。
密度可达:如果存在一个对象链 ,对于 ,P_(i+1)是从P_i关于Eps和MinPts直接密度可达的,则对象p是从对象q关于Eps和MinPts密度可达的(density-reachable)。
密度相连:如果存在对象O∈D,使对象p和q都是从O关于Eps和MinPts密度可达的,那么对象p到q是关于Eps和MinPts密度相连的(density-connected)。

DBSCAN算法流程
在DBSCAN算法中,有核心对象出发,找到与该核心对象密度可达的所有样本形成“簇”。DBSCAN算法的流程为:
1.将所有点标记为核心点、边界点或噪声点;
2.删除噪声点;
3.为距离在Eps之内的所有核心点之间赋予一条边;
4.每组连通的核心点形成一个簇;
5.将每个边界点指派到一个与之关联的核心点的簇中(哪一个核心点的半径范围之内)

4、评价指标

4.1 样本实际类别信息已知

4.1.1 兰德指数
(Rand index)需要给定实际类别信息C,假设K是聚类结果,a表示在C与K中都是同类别的元素对数,b表示在C与K中都是不同类别的元素对数,则兰德指数为: ,其中C_2^(n_samples )数据集中可以组成的总元素对数,RI取值范围为[0,1],值越大意味着聚类结果与真实情况越吻合。

4.1.2 调整兰德系数(Adjusted rand index)
对于随机结果,RI并不能保证分数接近零。为了实现“在聚类结果随机产生的情况下,指标应该接近零”,调整兰德系数(Adjusted rand index)被提出,它具有更高的区分度: ARI取值范围为[−1,1],值越大意味着聚类结果与真实情况越吻合。从广义的角度来讲,ARI衡量的是两个数据分布的吻合程度。
4.1.3 互信息(Mutual Information)
互信息(Mutual Information)也是用来衡量两个数据分布的吻合程度。假设UU与VV是对NN个样本标签的分配情况,则两种分布的熵(熵表示的是不确定程度)分别为:在这里插入图片描述
在这里插入图片描述
4.1.4. Entropy
对于一个聚类i,首先计算P_ij。P_ij指的是聚类 i 中的成员(member)属于类(class)j 的概率, P_ij=m_ij/m_i 。其中m_i是在类 i 中所有成员的个数,m_ij是聚类 i 中的成员属于类 j 的个数。每个聚类的entropy可以表示为
e_i=-∑_(j=1)^L▒P_ij 〖log〗2 P_ij,其中L是类(class)的个数。整个聚类划分的entropy为e=∑(i=1)^K▒〖m_i/m e_i 〗,其中K是聚类(cluster)的数目,m是整个聚类划分所涉及到的成员个数

4.1.5 Purity
使用上述Entropy中的P_ij定义,我们将聚类 i 的purity定义为P_i=MAX(P_ij)。整个聚类划分的purity为purity=∑_(i=1)^K▒m_i/m P_i ,其中K是聚类(cluster)的数目,m是整个聚类划分所涉及到的成员个数。
purity方法的优势是方便计算,值在0~1之间,完全错误的聚类方法值为0,完全正确的方法值为1。同时,purity方法的缺点也很明显它无法对退化的聚类方法给出正确的评价,设想如果聚类算法把每篇文档单独聚成一类,那么算法认为所有文档都被正确分类,那么purity值为1!而这显然不是想要的结果

4.2 样本实际类别信息未知

4.2.1. 轮廓系数
轮廓系数(Silhouette coefficient)适用于实际类别信息未知的情况。对于单个样本,设a是与它同类别中其他样本的平均距离,b是与它距离最近不同类别中样本的平均距离,轮廓系数为s(i)=(b-a)/(max⁡(a,b))
对于一个样本集合,它的轮廓系数是所有样本轮廓系数的平均值。
在这里插入图片描述
轮廓系数取值范围是[−1,1],同类别样本越距离相近且不同类别样本距离越远。分数越高. s(i)接近1,则说明样本i聚类合理;s(i)接近-1,则说明样本i更应该分类到另外的簇;若s(i)近似为0,则说明样本i在两个簇的边界上。
4.2.2. CH分数(Calinski Harabasz Score )
类别内部数据的协方差越小越好,类别之间的协方差越大越好,这样Calinski-Harabasz分数s会高,分数s高则聚类效果越好
在这里插入图片描述
m为训练集样本数,k为类别数。B_k为类别之间的协方差矩陈,W_k为类别内部数据的协方差矩陈,tr为矩陈的迹
类间协方差tr(Bk)越大越好,类内部协方差tr(Wk)越小越好,m样本数越多越好,k类别数越小越好,即各个簇的间距越大越好,各簇内部的数据越紧密越好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值