聚类算法常用内部评价指标——轮廓系数、Calinski-Harabasz Index(CH)、Davies-Bouldin Index(DB)

这篇具有很好参考价值的文章主要介绍了聚类算法常用内部评价指标——轮廓系数、Calinski-Harabasz Index(CH)、Davies-Bouldin Index(DB)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 聚类分析的评价指标也称为:性能度量指标

聚类算法聚类后,如何评价聚类结果,如何确定各聚类算法结果的优劣,如何确定聚类算法的参数值,可以通过聚类性能度量指标从一个侧面说明聚类算法和算法参数的选择。、

聚类性能度量指标分为外部指标和内部指标

外部指标,也就是有参考标准的指标,通常也可以称为有监督情况下的一种度量聚类算法和各参数的指标。具体就是聚类算法的聚类结果和已知的(有标签的、人工标准或基于一种理想的聚类的结果)相比较,从而衡量设计的聚类算法的性能、优劣。

内部指标是无监督的,无需基准数据集,不需要借助于外部参考模型,利用样本数据集中样本点与聚类中心之间的距离来衡量聚类结果的优劣

内部指标主要有

1)紧密度(Compactness):每个聚类簇中的样本点到聚类中心的平均距离。对应聚类结果,需要使用所有簇的紧密度的平均值来衡量聚类算法和聚类各参数选取的优劣。紧密度越小,表示簇内的样本点越集中,样本点之间聚类越短,也就是说簇内相似度越高。

2)分割度(Seperation):是个簇的簇心之间的平均距离。分割度值越大说明簇间间隔越远,分类效果越好,即簇间相似度越低。

3)误差平方和 (SSE:Sum of squares of errors):类中数据聚类距离类中心的平方损失之和,即K-means算法的优化目标,表示为

 

其中,表示第k个类中第i个样本点,表示第k个类的中心点。

核心代码段

    def distance_sum_max_min_avg(self, class_list, dis_matrix):
        sum = 0
        max = 0
        min = math.inf
        for index in range(len(class_list)):
            value = dis_matrix[class_list[index]][index]
            sum += value
            if max < value:
                max = value
            if min > value:
                min = value
        avg = sum/len(class_list)
        return sum,max,min,avg

4)轮廓系数 (Silhouette Coefficient):对于一个样本集合,它的轮廓系数是所有样本轮廓系数的平均值。轮廓系数的取值范围是[-1,1],同类别样本距离越相近,不同类别样本距离越远,分数越高。

        针对某个样本的轮廓系数s为:

其中,a表示某个样本与其所在簇内其他样本的平均距离,b表示某个样本与其他簇样本的平均距离。

        聚类总的轮廓系数SC为:

核心代码段

    def silhou    ette_coefficient(self,data_num, cluster, dis_matrix):
        sum = 0
        for index in range(data_num):
            cluster_in = 0
            cluster_in_num = 0
            cluster_out = 0
            cluster_out_num = 0
            for class_index in range(len(cluster)):
                if index == class_index:
                    continue
                elif cluster[index] == cluster[class_index]:
                    cluster_in_num += 1
                    cluster_in += dis_matrix[index][class_index]
                else:
                    cluster_out_num += 1
                    cluster_out += dis_matrix[index][class_index]
            sum += (cluster_out / cluster_out_num - cluster_in / cluster_in_num) / max(cluster_out / cluster_out_num,
                                                                                       cluster_in / cluster_in_num)
        sc = sum / data_num
        return sc

        轮廓系数为-1时表示聚类结果不好,为+1时表示簇内实例之间紧凑,为0时表示有簇重叠。轮廓系数越大,表示簇内实例之间紧凑,簇间距离大,这正是聚类的标准概念。

        对于簇结构为凸的数据轮廓系数值高,而对于簇结构非凸需要使用DBSCAN进行聚类的数据,轮廓系数值低,因此,轮廓系数不应该用来评估不同聚类算法之间的优劣,比如Kmeans聚类结果与DBSCAN聚类结果之间的比较。

5)Calinski-Harabasz Index(CH): Calinski-Harabasz指数的本质是簇间距离与簇内距离的比值,且整体计算过程与方差计算方式类似,所以又将其称之为方差比准则。

        将容量为 N 的数据集合 X 聚成 K 类,通过计算类内各点与类中心的距离平方和来度量类内的紧密度(类内距离),各个类中心点与数据集中心点距离平方和来度量数据集的分离度(类间距离)。

        CH指标的计算公式为:

        其中 为类间的协方差矩阵, 类内数据的协方差矩阵,详细公式如下:

其中表示类q的中心点,表示数据集的中心点,表示类q中的数据的数目,表示类q的数据集合。

        Calinski-Harabasz指数的分数越大说明越好(类别内部协方差越小越好,类别之间协方差越大越好)

核心代码段

import pandas as pd
import numpy as np
from sklearn import metrics
from sklearn.cluster import KMeans

dataframe = pd.DataFrame(data=np.random.randint(0, 60, size=(100, 10)))
# 以kmeans聚类方法为例
kmeans_model = KMeans(n_clusters=5, random_state=1).fit(dataframe)
labels = kmeans_model.labels_
score = metrics.calinski_harabasz_score(dataframe, labels)
print(score)

 5)Davies-Bouldin Index(DB):由大卫L·戴维斯和唐纳德·Bouldin提出)是一种评估是一种评估度量的聚类算法

        DB计算任意两类别的类内距离平均之和除以该两类中心距离,并求最大值。DB越小意味着类内距离越小同时类间距离越大。

calinski-harabasz index,聚类,算法

其中表示类中样本点分散度,则就是第i类与第j类中心的距离。计算公式如下所示:

其中表示第i类中第j个数据点;表示第i类的中心;n表示第i类中数据点的个数;q取1表示:各点到中心的距离的均值,q取2时表示:各点到中心距离的标准差,它们都可以用来衡量分散程度。

其中 表示第i类的中心点的第K个属性的值。

核心代码段

    def davies_bouldin(self,center_student_dis_matrix,center_center_dis_matrix,class_list):
        # 对于每个簇计算分散度
        cluster_num = len(center_student_dis_matrix)
        S = [0] * cluster_num
        for index in range(cluster_num):
            sum = 0
            n = 0
            for class_index in range(len(class_list)):
                if index == class_list[class_index]:
                    n += 1
                    sum += center_student_dis_matrix[index][class_index]
            S[index] = sum/n
        Ri = []
        for i in range(len(S)):
            Rij = []
            for j in range(len(S)):
                if i != j:
                    r_temp = (S[i] + S[j])/center_center_dis_matrix[i][j]
                    Rij.append(r_temp)
            Ri.append(max(Rij))
        return np.mean(Ri)

分类个数的不同可以导致不同的值,DB值越小,分类效果越好文章来源地址https://www.toymoban.com/news/detail-805804.html

到了这里,关于聚类算法常用内部评价指标——轮廓系数、Calinski-Harabasz Index(CH)、Davies-Bouldin Index(DB)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像分类 图像分割的评价指标(混淆矩阵 正确率 精准率 召回率 F1分数 IOU dice系数)

             在图像分类或者图像分割中,为 评价模型的预测效果 ,在训练过程中通常需要比较预测值与真实标签值的差距,即误差。 目录 图像分类过程的评价指标 混淆矩阵 正确率/准确率 精准率 召回率 F1分数 图像分割过程的评价指标 混淆矩阵 混淆矩阵的生成代码 IO

    2024年01月22日
    浏览(42)
  • 医学图像分割常用的评价指标

        在医学图像分割的论文中,常常看到Dice、VOE、RVD、MSD等指标,但是具体这些指标是什么意思呢,我们进行相应的简单说明。 V s e g text V_{s e g} V s e g ​ :代表预测的分割结果 V g t text V_{g t} V g t ​ :代表ground truth的分割结果     Dice 系数是一种评估相似度的函

    2024年02月08日
    浏览(32)
  • 目标检测常用评价指标及其计算方法

    前传耗时(ms) :从输入一张图像到输出最终结果所消耗的时间,包括前处理耗时(如图像归一化)、网络前传耗时、后处理耗时(如非极大值抑制); 每秒帧数FPS(Frames Per Second) :每秒中能处理的图像数量; 浮点运算量(FLOPS) :处理一张图像所需要的浮点运算数量,跟具体软

    2024年02月06日
    浏览(44)
  • 聚类的外部指标(Purity, ARI, NMI, ACC) 和内部指标(NCC,Entropy,Compactness,Silhouette Index),附代码 (Python 和 Matlab)

    众所周知,聚类有效性指标,包括外部指标和内部指标,对于评价聚类结果的质量非常有用。 1.1 Purity 原理解释 先给出Purity的计算公式: 首先解释一下,为什么需要引入纯度计算,因为聚类中总是会出现此类与标签对应的类不一致,虽然他们表示的数字都是1,但是实质内容

    2024年02月04日
    浏览(46)
  • 图像去雾算法评价指标

    评价一个去雾算法的好坏,常常使用主观评价法和客观评价法。 主观评价即通过肉眼观察经过去雾处理的图像,从图像的纹理特征、对比度、饱和度及细节信息等多方面进行感官感受和评价。主观评价主要是通过人眼视觉系统的主观感受在确定好的评价基础上做出相应的判断

    2024年02月06日
    浏览(38)
  • 【多目标追踪算法】多目标跟踪评价指标

    yolov5+deepsort 多目标跟踪算法实践 评价指标总览: 这种指标可以衡量算法跟踪目标的准确性。IDsw (ID switches)度量用于统计MOT算法在对象之间切换的次数。多目标跟踪精度(MOTA)指标将假阳性率、假阴性率和错配率组合成一个数字,为整体跟踪性能提供一个相当合理的数量。尽管

    2024年02月04日
    浏览(41)
  • MATLAB算法实战应用案例精讲-【智能优化算法】多目标算法性能评价指标

    在评估多目标优化算法的效果时,我们通常使用五个主要指标:GD(Generational Distance)、IGD(Inverted Generational Distance)、Hypervolume、Spacing和Spread。 GD 和 IGD 是用于测量算法生成的解集合与真实前沿解之间的距离的指标。具体而言,GD测量了所有生成解与真实前沿解之间的平均欧

    2024年02月15日
    浏览(55)
  • 【C语言】数据结构的基本概念与评价算法的指标

    1.1 基本概念和术语 1.1.1 数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料 1.1.2 数据元素 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理,一个数据元素

    2024年02月09日
    浏览(32)
  • 图像隐写综述(适合小白入门,涉及基础知识、评价指标与前沿算法)

    创作不易,点赞收藏,谢谢!如有交流需要,请关注微信公众号“笔名二十七画生”。 分享有趣知识的公众号 1.图像隐写基础知识 信息保护主要有两种手段: 1.加密技术,是直接对要保护的数据进行数学变换,并使得未授权方无法读取交换的秘密信息。 2.信息隐藏技术,则是将

    2024年02月21日
    浏览(50)
  • K-Means和轮廓系数

    K-means(K均值)是机器学习中一种常见的无监督算法,它能够将未知标签的数据,根据它们的特征分成不同组,每一组数据又称为“簇”,每一簇的中心点称为“质心”。其基本原理过程如下: 1、任意选择K个初始质心(可以不是样本点),为每个样本点找到与其距离最近的

    2023年04月25日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包