【数据挖掘】聚类趋势估计、簇数确定、质量测定等评估方法详解(图文解释 超详细)

简介: 【数据挖掘】聚类趋势估计、簇数确定、质量测定等评估方法详解(图文解释 超详细)

需要PPT和源码请点赞关注收藏后评论区留言私信~~~

聚类评估用于对在数据集上进行聚类的可行性和被聚类方法产生的结果的质量进行评估。聚类评估主要包括以下任务

估计聚类趋势

对于给定的数据集 聚类趋势估计用于评估该数据集是否存在非随机结构,如果盲目地在数据集上使用聚类方法返回一些簇 所挖掘的簇可能是误导  因为数据集上的聚类分析仅当数据中存在非随机结构时才有意义

确定数据集中的划分簇数

一些聚类算法需要数据集划分的簇的个数作为参数,此外簇的个数可以看作数据集的重要的概括统计量,因此在进行聚类前要估计簇的合理的个数

测定聚类质量

在数据集上使用聚类划分簇后 需要评估结果簇的质量 聚类质量的评估一般有外在方法和内在方法

聚类趋势的估计

聚类趋势评估用以确定数据集是否具有可以导致有意义的聚类的非随机结构,因为对任何非随机结构的数据集进行聚类是没有意义的,为了处理这样的问题,可以使用多种算法评估结果簇的质量,如果簇都很差,则可能表明数据中确实没有簇,要评估数据集的聚类趋势 可以评估数据集被均匀分布产生的概率

H值接近0或1分别表明数据是高度聚类的和在数据空间是有规律分布的,原假设是同质假设,即D是均匀分布的,因而不包括有意义的簇,非均匀假设是备择假设,使用0.5作为拒绝备择假设阈值,即如果H>0.5 则D不大可能具有统计显著的簇

2 聚类簇数的确定

找出正确的簇数依赖于数据集分布的形状和尺度,也依赖于用户要求的聚类分辨率。有许多估计簇数的可能方法。这里简略介绍几种简单但流行和有效的方法

拐点法基于如下观察:增加簇数有助于降低每个簇的簇内方差之和。这是因为有更多的簇可以捕获更细的数据对象簇,簇中对象之间更为相似。然而,如果形成太多的簇,则降低簇内方差和的边缘效应可能下降,因为把一个凝聚的簇分裂成两个簇只能使簇内方差和的稍微降低。因此,一种选择正确的簇数启发式方法是使用簇内方差和关于簇数曲线的拐点

3 聚类质量的测定

在得到有关数据的所属类标号后,通常要度量簇标号与类标号的对应程度,这种分析的目的是比较聚类技术与基本事实,或评估人工分类过程可能在多大程度上被聚类分析自动的实现

一般而言 根据是否有基准(由专家构建的理想的聚类)将聚类质量的测定分为外在方法和内在方法,外在方法通过比较聚类结果和基准进行聚类质量测定,内在方法没有可用的基准,它通过簇的分离情况评估聚类的好坏

1. 外在方法

有许多度量(如熵、纯度、精度、召回率和F度量)用来评估分类模型的性能。对于分类,度量预测的类标号与实际类标号的对应程度。但是这些度量通过使用簇标号而不是预测的类标号,不需要做较大的改变。 兰德系数RI 和ARI

a表示表示在实际类别信息与聚类结果中都是同类别的元素对数,b表示在实际类别信息与聚类结果中都是不同类别的元素对数,分母表示数据集中可以组成的总元素对数

兰德系数的值在[0,1]之间,当聚类结果完美匹配时,兰德系数为1。对于随机结果,RI并不能保证分数接近零。为了实现“在聚类结果随机产生的情况下,指标应该接近零”,调整兰德系数(Adjusted rand index)被提出,它具有更高的区分度

ARI取值范围为[-1,1],负数代表结果不好,值越大意味着聚类结果与真实情况越吻合。ARI可用于聚类算法之间的比较

下面是scikit-learn中的ARI计算实例

from sklearn import metrics
labels_true = [0, 0, 0, 1, 1, 1]
labels_pred = [0, 0, 1, 1, 2, 2]
print(metrics.adjusted_rand_score(labels_true, labels_pred))

2. 内在方法

内在方法用于没有基准可用时的聚类质量评估,通过考察簇的分离情况和簇的紧凑度进行聚类评估

轮廓系数(Silhouette Coefficient)是一种内在评估方法

sklearn中通过sklearn.metrics.silhouette_score()方法计算聚类的轮廓系数

下面对Iris数据聚类并计算轮廓系数

结果如下 可以看出效果还可以簇还算比较紧凑

代码如下

import numpy as np
from sklearn.cluster import KMeans
from sklearn import metrics
from sklearn.metrics import silhouette_score
from sklearn.datasets import load_iris #导入数据集iris  
X = load_iris().data #载入数据集
kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X)
labels = kmeans_model.labels_
metrics.silhouette_score(X, labels, metric='euclidean')

总结

簇是数据对象的集合,同一个簇中的对象彼此相似,而不同簇中的对象彼此相异。将物理或抽象对象的集合划分为相似对象的类的过程称为聚类

常用的聚类方法有划分方法、层次方法、基于密度的方法和概率模型的聚类方法

划分方法首先创建k个分区的初始结合,其中参数k是要构建的分区数。然后,它采用迭代重定位技术,试图通过把对象从一个簇移到另一个簇来改进划分的质量。典型的划分方法包括K-means、K中心点、CLAEANS

层次方法创建给定数据对象集的层次分解。根据层次分解的形成方式,层次方法可以分为凝聚的(自底向上)或分裂的(自顶向下)。典型的层次方法包括BIRCH、CURE、Chameleon

基于密度的方法使用密度的概念来聚类对象。一种典型的方法是DBSCAN,它使用基于中心的方法定义相似度,根据邻域中对象的密度来生成簇。其他典型的基于密度的方法还有OPTICS和DENCLUE

聚类评估对在数据集上进行聚类分析的可行性和由聚类方法产生的结果的质量进行估计,包括评估聚类趋势、确定簇的个数和测定聚类的质量

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
4月前
|
运维 安全 数据挖掘
【数据挖掘】离群点概念、类型、检测的挑战概述(图文解释 超详细)
【数据挖掘】离群点概念、类型、检测的挑战概述(图文解释 超详细)
147 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】神经网络与感知机基础概念讲解(图文解释 超详细)
【数据挖掘】神经网络与感知机基础概念讲解(图文解释 超详细)
36 0
【数据挖掘】神经网络与感知机基础概念讲解(图文解释 超详细)
|
4月前
|
机器学习/深度学习 数据挖掘 Python
【数据挖掘】分类器模型性能评估讲解及iris数据集评估实战(超详细 附源码)
【数据挖掘】分类器模型性能评估讲解及iris数据集评估实战(超详细 附源码)
53 0
|
4月前
|
算法 数据挖掘 Python
【数据挖掘】层次聚类DIANA、AGNES算法讲解及实战应用(图文解释 超详细)
【数据挖掘】层次聚类DIANA、AGNES算法讲解及实战应用(图文解释 超详细)
133 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】决策树归纳中ID3算法讲解及构建决策树实战(图文解释 超详细)
【数据挖掘】决策树归纳中ID3算法讲解及构建决策树实战(图文解释 超详细)
211 0
|
4月前
|
算法 数据可视化 数据挖掘
【数据挖掘】密度聚类DBSCAN讲解及实战应用(图文解释 附源码)
【数据挖掘】密度聚类DBSCAN讲解及实战应用(图文解释 附源码)
171 1
|
2月前
|
数据采集 算法 搜索推荐
数据挖掘实战:基于KMeans算法对超市客户进行聚类分群
数据挖掘实战:基于KMeans算法对超市客户进行聚类分群
148 0
|
4月前
|
机器学习/深度学习 自然语言处理 数据可视化
【Python百宝箱】数据科学的黄金三角:数据挖掘和聚类
【Python百宝箱】数据科学的黄金三角:数据挖掘和聚类
168 2
|
4月前
|
机器学习/深度学习 存储 编解码
【数据挖掘】网格聚类STING、概念聚类COBWEB和模糊聚类的讲解(图文解释)
【数据挖掘】网格聚类STING、概念聚类COBWEB和模糊聚类的讲解(图文解释)
102 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】K-Means、K-Means++、ISODATA算法详解及实战(图文解释 附源码)
【数据挖掘】K-Means、K-Means++、ISODATA算法详解及实战(图文解释 附源码)
92 1