aam Advances in Applied Mathematics 2324-7991 2324-8009 beplay体育官网网页版等您来挑战! 10.12677/aam.2024.139418 aam-96919 Articles 数学与物理 基于空间平移的K-Means初始簇心选取
K-Means Initial Cluster Center Selection Based on Spatial Translation
朱家乐 长安大学理学院,陕西 西安 09 09 2024 13 09 4381 4390 23 8 :2024 17 8 :2024 17 9 :2024 Copyright © 2024 beplay安卓登录 All rights reserved. 2024 This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/ K-means聚类算法因其算法简单、计算效率高,在机器学习、数据挖掘等多个领域得到了广泛应用。然而,传统K-means算法在初始簇心的选取上存在随机性,这可能导致聚类结果的不稳定性。为了解决这一问题,本研究提出了一种基于空间平移的初始簇心选取算法。该算法首先将包含所有样本集的最小空间通过单位空间以一定步长遍历,在单位空间内统计样本点的密度,以此降低计算量。通过逐一选出密度最高的个点作为初始簇心,从而提高了K-means算法的聚类性能。在UCI的12种数据集上进行的实验表明,与传统的K-means、K-means++等算法相比,改进的算法在迭代次数上有所降低,聚类准确率得到了显著提高。
K-means clustering algorithm is an important content in the field of machine learning and is widely used because of its simplicity and efficiency. In order to solve the problem that the initial cluster center selection of traditional K-means algorithm is random, an initial cluster center selection algorithm based on space segmentation is proposed. The minimum space containing all sample sets is divided to calculate the density, and the initial cluster centers with the highest density are selected one by one. The selected cluster centers are replaced by random initial cluster centers for K-means clustering. Twelve datasets were tested separately at UCI. The experimental results show that compared with traditional K-means, K-means++ and other algorithms, the improved algorithm has lower iteration times and higher clustering accuracy.
K-Means,初始聚类中心,密度,空间平移
K-Means
Initial Cluster Center Density Spatial Translation
1. 引言

聚类试图将数据集的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇” [1] 。Han [2] 等人按不同性质将聚类划分为五类:基于划分、基于分层、基于密度、基于网格以及基于模型的聚类。聚类分析作为数据挖掘和机器学习中的重要技术,广泛应用于医疗 [3] 、能源 [4] 、交通 [5] 、金融 [6] 、图像处理 [7]

K-means作为最简单高效的聚类算法之一,是学者MacQueen [8] 在1967年提出的,虽然K-means聚类算法简单高效,但也存在着一些不足,如k值需要事先确定、算法对离群值较为敏感、聚类效果对初始簇心较为敏感。针对这些问题,许多学者也提出了相应的改进。

对于k值的确定,Rezaee [9] 等人提出 k [ 2 , n ] ,其中n为样本个数;成卫青 [10] 等人根据平方误差(SSE)和k值的关系提出一种自适应确定k值的算法;王建仁 [11] 等人针对手肘法在确定k值的过程中存在的“肘点”位置不明确问题,提出了一种改进的k值选择算法ET-SSE算法,提升了寻找k值的效率;Kristina [12] 等人提出了一种新颖的无监督K均值(UK均值)聚类算法,可以自动找到最佳的聚类数量,而无须进行任何初始化和参数选择;何选森 [13] 等人定义了新的聚类有效性评价指标,k值就是使得此指标达到最小的整数值。

在筛除离群点方面,唐东凯 [14] 等人根据LOF [15] (Local Outlier Factor)算法计算每个点的可达密度来判断样本点是否为离群点;朱利 [16] 等人设计了一种用于连接数据点间的信息数据结构,且开发了一个新的离群因子计算公式,实现了对簇类数量的自适应评估,从而能够高效地识别出离群点。刘凤 [17] 等人通过局部密度筛选离群点,剔除离群点后进行聚类。

为了获得更科学的初始簇心,张玉芳 [18] 等人事先设定簇数 k > k ,选择合适的样本集大小,采取J次取样并进行K-means聚类,将平方误差SSE最小的聚类结果的簇心作为初始聚类簇心并聚类,再将最近的两个类合并直到簇个数为k;袁方 [19] 等人先设置一个类簇所含样本点个数的阈值,将位置最近的一些点归为一类直到该簇的样本点个数达到阈值,再从这些点之外的样本点重复此操作直至选出k个类,将这k个簇的质心作为初始簇心;赖玉霞 [20] 等人先选出密度较大的样本点,在这些点中选出相互相距最远的k个初始簇心;汪中 [21] 等人先计算各点密度,选出密度最大的点作为第一个初始点将其周围的点剔除,再选出剩下点中密度最大的点作为下一个初始点,直至找出k个初始点;陈光平 [22] 等人首先将数据集最远的两个点作为初始簇心,将其余点归为最近的簇,在簇最多的点里继续找相距最远的两个点作为新的初始簇心,直到找到k个初始簇心;谢娟英 [23] 等人首先定义样本点的方差,在k个不同区域选出方差最小的样本点作为初始簇心;郭永坤 [24] 等人给出点到簇的距离定义和类簇内样本点个数阈值 α ,将部分样本点聚成k个簇,将每个簇的簇心作为初始簇心。

大多数选取初始簇心的文献都是基于密度来选取的,虽然这些文献对K-means初始簇心的优化有所改进,但却忽略了统计各样本点密度时的庞大计算量。针对此问题,本文提出一种划分空间的算法SK-means算法(Space-divided-based K-means),该算法通过划分空间来降低统计样本点密度时的计算量;另一方面针对文献 [25] 提出的算法中密度最大样本点不止一个的问题,提出了局部平均距离,选出更为紧凑的样本点,使得聚类效果更优。实验表明,改进的算法降低了迭代次数,提高了聚类结果准确率。

2. K-Means聚类算法

K-means算法是一种基于划分的聚类算法,通过在迭代中更新簇及簇心将数据集划分到若干个不相交的簇。该算法原理为:给定类簇数k,随机选取k个样本点作为初始簇心,并将样本点划分到距离最近的簇,在一次划分完毕后更新簇心,继续重复划分和更新簇心直至簇心不再变化或达到最大迭代次数 [26]

定义1 [1] X = { x 1 , x 2 , , x n } 为一组维度为d的数据集、 x i = ( x i 1 , x i 2 , , x i d ) 为第i个样本、k为聚类簇数,记 C 1 t , C 2 t , , C k t 为第t次迭代聚类结果。对任意 x i , x j X x i , x j 间的欧氏距离为

d i s t ( x i , x j ) = l = 1 d ( x i l x j l ) 2 ,(1)

第t次迭代簇 C i t 的簇中心为

μ i t = 1 | C i t | x C i t x i = 1 , 2 , , k ,(2)

其中 | C i t | 为簇 C i t 的基数,即 C i t 中所含样本点的个数。第t次迭代聚类结果的平方误差为

SSE = i = 1 k x j C i t ( x j μ i ) 2 (3)

簇心依据距离度量将一个簇内的样本点平均化,作为一个簇中心;平方误差是评价聚类好坏的最基本的指标,它直观地反映了样本点与其所属簇心之间的距离关系。传统K-means聚类算法具体步骤如下:

算法1 [27] 传统K-means聚类算法

输入:数据集 X = { x 1 , x 2 , , x n } ,类簇数k。

输出:聚类的k个簇。

输入:数据集 X = { x 1 , x 2 , , x n } ,类簇数k。

输出:聚类的k个簇。

步骤1 t = 0 ,随机选取k个样本点 μ 1 t , μ 2 t , , μ k t 作为初始簇心, C i t = { μ i t } i = 1 , 2 , , 0

步骤2 根据公式(1)计算每个点到簇心的距离,将其划分到距离最近的簇心所在的簇,即 x X { μ 1 t , μ 2 t , , μ k t } ,令 i = arg min 1 i k d i s ( x , μ i t ) C i t : = C i t { x }

步骤3 t : = t + 1 ,根据公式(2)更新簇心 μ i t = 1 | C i t | x C i t x i = 1 , 2 , , k C i t =

步骤4根据公式(1)计算每个点到簇心的距离,将其划分到距离最近的簇心所在的簇,即 x X ,令 i = arg min 1 i k d i s ( x , μ i t ) C i t : = C i t { x }

步骤5 重复步骤3、步骤4直至簇心不再发生变化,即 μ i t = μ i t 1 时,停止迭代。

3. 基于空间平移的K-Means初始点选取算法

由于初始点选取的随机性,若选取到离群点作为初始簇心,则初始簇心距离最终聚类结果簇心较远,容易陷入局部最优解 [28] 。文献 [20] 指出聚类中心应位于簇内密度较高的位置,而根据文献 [23] [24] [29] 的理论推导和实验分析可知,聚类中心若设置在样本密度较大的区域,则能够显著提高聚类的准确性。以往基于密度选取初始点的文献在计算样本点密度时考虑了所有样本点,为了避免大量计算,快速找到密度较大的样本点,提出了SK-means初始点选取算法。

3.1. SK-Means算法思想

SK-means算法思想是:首先构造包含所有样本点的最小d维多面体,记该多面体体积为 V S ,用一个体积为 V S / k (k为类簇数)的d维正多面体从包含所有样本点的最小d维多面体的一角出发,以一定步长遍历上述d维多面体,在各个较小的正多面体中找出k个密度最大的初始点作为初始簇心。

X = { x 1 , x 2 , , x n } 为一组d维数据集,样本 x i = ( x i 1 , x i 2 , , x i d ) ,记 α i = inf { x 1 i , x 2 i , , x n i } β i = sup { x 1 i , x 2 i , , x n i } 。称包含数据集X中所有样本的最小d维多面体

S = [ α 1 , β 1 ] × [ α 2 , β 2 ] × × [ α d , β d ] = × i = 1 d [ α i , β i ] (4)

为容纳空间,则容纳空间体积 V S = i = 1 d ( β i α i )

定义2 设 X = { x 1 , x 2 , , x n } 为一组维度为d的数据集,数据集X的容纳空间 S = × i = 1 d [ α i , β i ] ,称 S ( l 1 , l 2 , , l d ) = × i = 1 d [ α i + l i b , α i + l i b + a ) 是索引指标为 ( l 1 , l 2 , , l d ) 的棱空间,其中棱长 a = V S / k d ,k为类簇数,步长 b = a 2 l i { 0 , 1 , 2 , , m i } m i = [ β i α i b ]

例1 考虑一组2维数据集 X = { x 1 , x 2 , , x 16 } (见 表1 ),类簇数 k = 4 。显然 α 1 = α 2 = 0 β 1 = β 2 = 10 ,容纳空间 S = [ 0 , 10 ] × [ 0 , 10 ] V S = 100 ,边长 a = V S / k = 5 ,步长 b = 2.5 ,所有的棱空间见 表2

<xref></xref>Table 1. The 2-dimensional data setTable 1. The 2-dimensional data set 表1. 2维数据集
样本点

样本点

样本点

样本点

x 1 = ( 0 , 1 )

x 5 = ( 9 , 7 )

x 9 = ( 4 , 9 )

x 13 = ( 5 , 0 )

x 2 = ( 0 , 2 )

x 6 = ( 8 , 8 )

x 10 = ( 5 , 9 )

x 14 = ( 6 , 0 )

x 3 = ( 1 , 1 )

x 7 = ( 10 , 8 )

x 11 = ( 5 , 10 )

x 15 = ( 5 , 1 )

x 4 = ( 1 , 2 )

x 8 = ( 9 , 9 )

x 12 = ( 6 , 10 )

x 16 = ( 6 , 1 )

<xref></xref>Table 2. All edge spaceTable 2. All edge space 表2. 所有棱空间
棱空间

棱空间

棱空间

S ( 0 , 0 ) = [ 0 , 5 ) × [ 0 , 5 )

S ( 1 , 4 ) = [ 2.5 , 7.5 ) × [ 10 , 15 )

S ( 3 , 3 ) = [ 7.5 , 12.5 ) × [ 7.5 , 12.5 )

S ( 0 , 1 ) = [ 0 , 5 ) × [ 2.5 , 7.5 )

S ( 2 , 0 ) = [ 5 , 10 ) × [ 0 , 5 )

S ( 3 , 4 ) = [ 7.5 , 12.5 ) × [ 10 , 15 )

S ( 0 , 2 ) = [ 0 , 5 ) × [ 5 , 10 )

S ( 2 , 1 ) = [ 5 , 10 ) × [ 2.5 , 7.5 )

S ( 4 , 0 ) = [ 10 , 15 ) × [ 0 , 5 )

S ( 0 , 3 ) = [ 0 , 5 ) × [ 7.5 , 12.5 )

S ( 2 , 2 ) = [ 5 , 10 ) × [ 5 , 10 )

S ( 4 , 1 ) = [ 10 , 15 ) × [ 2.5 , 7.5 )

S ( 0 , 4 ) = [ 0 , 5 ) × [ 10 , 15 )

S ( 2 , 3 ) = [ 5 , 10 ) × [ 7.5 , 12.5 )

S ( 4 , 2 ) = [ 10 , 15 ) × [ 5 , 10 )

S ( 1 , 0 ) = [ 2.5 , 7.5 ) × [ 0 , 5 )

S ( 2 , 4 ) = [ 5 , 10 ) × [ 10 , 15 )

S ( 4 , 3 ) = [ 10 , 15 ) × [ 7.5 , 12.5 )

S ( 1 , 1 ) = [ 2.5 , 7.5 ) × [ 2.5 , 7.5 )

S ( 3 , 0 ) = [ 7.5 , 12.5 ) × [ 0 , 5 )

S ( 4 , 4 ) = [ 10 , 15 ) × [ 10 , 15 )

S ( 1 , 2 ) = [ 2.5 , 7.5 ) × [ 5 , 10 )

S ( 3 , 1 ) = [ 7.5 , 12.5 ) × [ 2.5 , 7.5 )

S ( 1 , 3 ) = [ 2.5 , 7.5 ) × [ 7.5 , 12.5 )

S ( 3 , 2 ) = [ 7.5 , 12.5 ) × [ 5 , 10 )

由于各棱空间的位置明确,易得各棱空间所包含的样本点及包含的样本点数量。记 S ( l 1 , l 2 , , l d ) 包含的样本点数量为 n ( l 1 , l 2 , , l d ) ,包含样本点数量最多的棱空间的索引指标集合为 M p = arg max l i { 0 , 1 , 2 , , m i } i = 1 , 2 , , d ( n ( l 1 , l 2 , , l d ) ) ,显然 | M p | 1 。只需找到索引指标在 M p 的棱空间中密度最大的样本点即可,样本点密度定义为一定范围内样本点的个数与数据集大小的比值。

定义3 设 X = { x 1 , x 2 , , x n } 为一组d维的数据集,样本 x i = ( x i 1 , x i 2 , , x i d ) S ( γ ) n ( γ ) S ( γ ) 的样本数量, M p 为包含样本点数量最多的棱空间的索引指标集合,阈值半径为

R = 1 | M p | γ M p 1 C n ( γ ) 2 x i , x j S ( γ ) 0 i < j n ( γ ) d i s t ( x i , x j ) ,(5)

样本 x i S ( γ ) 中的R邻域样本集为

U ( x i , R | S ( γ ) ) = { x j S ( γ ) | d i s t ( x i , x j ) R } ,(6)

样本 x i S ( γ ) 中的密度为

ρ ( x i | S ( γ ) ) = | U ( x i , R | S ( γ ) ) | | X | 。(7)

在得到包含样本点数量最多的棱空间后,需要在这些棱空间中找到密度最大的点。设 γ 为棱空间索引指标,记 S ( γ ) 中密度最大的样本点集合为 M a ( γ ) = arg max x i S ( γ ) ( ρ ( x i | S ( γ ) ) ) ,则 | M a ( γ ) | 1 。考虑到 | M p | 1 | M a ( γ ) | 1 ,即密度最大的样本点可能不唯一。需要进一步细化算法,挑选出更为紧凑的样本点。

定义4 设 X = { x 1 , x 2 , , x n } 为一组维度为d的数据集, M p 为包含样本点数量最多的棱空间的索引指标集合, U ( x , R | γ ) 为x在 S ( γ ) 中的R邻域样本集。 γ M p x S ( γ ) ,x在 S ( γ ) 中的紧凑度为

c o m ( x | γ ) = x i U ( x , R | γ ) \ { x } d i s t ( x i , x ) | U ( x , R | γ ) | 1 (8)

紧凑度定义为样本周围的点到自身距离的平均值,紧凑度越小,反映了周围点到该点的距离越小,该点越紧凑。记 μ i 0 = arg min x M a ( γ ) γ M p c o m ( x | γ ) 为挑选出的第i个初始簇心,为了使得第 i + 1 个初始簇心不在已经挑选出的簇心周围,需要对样本点进行剔除。在挑选出样本点后,将 U ( μ i 0 , R | S ( γ ) ) 从X中剔除,从 X \ U ( μ i 0 , R | S ( γ ) ) 中重复统计棱空间样本点数量、计算样本点密度、挑选初始点及剔除样本点,直至选出k个初始簇心。

3.2. 具体算法步骤

SK-means算法避开了计算所有样本点两两之间的距离,只在个别棱空间计算部分样本点的密度。在降低计算量的同时,又细化了算法,解决了密度最大的样本点同时存在只能随机挑选的问题。下面给出SK-means初始簇心选取算法的具体步骤。在已经挑选出的簇心周围,需要对样本点进行剔除。在挑选出样本点后,将 U ( μ i 0 , R | S ( γ ) ) 从X中剔除,从 X \ U ( μ i 0 , R | S ( γ ) ) 中重复统计棱空间样本点数量、计算样本点密度、挑选初始点及剔除样本点,直至选出k个初始簇心。

算法2 SK-means初始簇心选取算法

输入:数据集 X = { x 1 , x 2 , , x n } ,簇个数k。

输出:k个初始簇心。

步骤1 构造棱空间;

步骤2 x X ,判断x属于哪些棱空间;

步骤3 统计各空间样本点个数 n ( l 1 , l 2 , , l d ) l i { 0 , 1 , 2 , , m i } i = 1 , 2 , , d 。找到包含样本点个数最多的棱空间的索引指标集合 M p

步骤4 j = 1 γ M p ,计算 S ( γ ) 中样本点的密度,找到 S ( γ ) 中密度最大的样本点 M a ( γ ) x M a ( γ ) ,找出使得 m d ( x | γ ) 最小的x以及所属的棱空间的索引指标 γ ,初始簇心 μ j 0 = arg min x M a ( γ ) γ M p m d ( x | γ ) j : = j + 1

步骤5 在X中剔除 U ( μ j 0 , R | S ( γ ) ) 中的样本点, X : = X \ U ( μ j 0 , R | S ( γ ) )

步骤6 重复步骤3-5直至选出k个初始簇心。

4. 实验结果及分析 4.1. 实验背景

实验设备的处理器是12th Gen Intel(R) Core(TM) i5-12450H 2.00 GHz,内存为16.0 GB,Microsoft Windows11的操作系统,系统类型为64位操作系统,基于x64的处理器,算法编写和编译是在Python3.12.2环境下实现的。

为了验证本文算法对降低聚类迭代次数的有效性,本文选取了UCI数据库中的Iris等十二个数据集来进行实验分析。这些数据集的维度从几维到十几维不等,数据量也比较广泛,从而反映出SK-means算法有一定的适用性。具体数据集及基本信息见 表3

<xref></xref>Table 3. Basic data set informationTable 3. Basic data set information 表3. 数据集基本信息
数据集

数据集大小

数据维度

数据类别

Balance

625

4

3

Tae

151

5

3

Haberman

306

3

2

Iris

150

4

3

Led

500

7

10

Seeds

210

7

3

Titanic

2201

3

2

Wine

178

13

3

Heart

270

13

2

Appendicitis

106

7

2

Phoneme

5405

5

2

Hayes-Roth

160

4

3

4.2. 聚类评价指标

为了验证所提算法在聚类分析上的有效性,采用三个指标来评价算法,分别为准确率(ACC)、平方误差(SSE)、轮廓指数 [30] (SI)。准确率是指预测正确的样本个数与总个数的比值,其值位于[0, 1],值越大则表示聚类效果越接近真实聚类结果。平方误差为各点到所属簇簇心的距离平方和,值越小反映出簇越集中。若某个样本 x i C j ,则 x i 的轮廓系数为

S ( x i ) = b ( x i ) a ( x i ) max { a ( x i ) , b ( x i ) } (9)

其中 a ( x i ) = 1 | C j | 1 x l C j , l i d i s t ( x i , x l ) b ( x i ) = min t j 1 | C t | x l C t d i s t ( x i , x l ) 。则整个聚类结果的轮廓指数为

SI = 1 n i = 1 n s ( x i ) (10)

轮廓指数的取值范围为 [ 1 , 1 ] ,取值越大聚类结果越紧凑,聚类效果越好。

4.3. 实验结果

为了验证SK-means算法在降低迭代次数和提高聚类准确性方面是否有效,本文将SK-means算法与传统K-means、K-means++聚类算法,与文献 [24] 提出的算法在不同方面进行对比。由于传统的K-means和K-means++对初始簇心的选取都具有一定随机性,造成了迭代次数与准确率不稳定,于是本文对每个数据集都做了100次实验,取平均值作为传统K-means和K-means++的代表。实验结果见 表3 。与文献 [24] 对比的实验结果见于 表4 。考虑到表格容量,表格内数值仅保留了前几位。在各方面实数值的比较中,效果较好的算法所对应的数值已在表格内加粗。

<xref></xref>Table 4. Results of accuracy and number of iterations of each datasetTable 4. Results of accuracy and number of iterations of each dataset 表4. 各数据集准确率和迭代次数结果
算法

Iris

Wine

Tae

准确率

SSE

迭代次数

准确率

SSE

迭代次数

准确率

SSE

迭代次数

K-means

0.813

89.272

7.25

0.682

2.43e+7

7.84

0.337

17,315

6.41

K-means++

0.889

78.943

6.39

0.663

2.48e+7

6.58

0.318

17,325

7.77

SK-means

0.893

78.940

5

0.702

2.37e+7

9

0.364

17,666

10

算法

Heart

Haberman

Seeds

准确率

SSE

迭代次数

准确率

SSE

迭代次数

准确率

SSE

迭代次数

K-means

0.500

5.82e+6

8.55

0.448

31,330

8.74

0.890

588.04

8.99

K-means++

0.469

5.82e+6

8.38

0.520

31,455

7.46

0.893

587.85

6.08

SK-means

0.590

5.82e+6

6

0.520

30,533

10

0.895

587.31

5

算法

Titanic

Phoneme

Appendicitis

准确率

SSE

迭代次数

准确率

SSE

迭代次数

准确率

SSE

迭代次数

K-means

0.709

4273.5

3.04

0.667

12,947

12.25

0.804

17.522

7.38

K-means++

0.732

4172.7

2.71

0.666

12,916

12.3

0.807

17.530

6.53

SK-means

0.776

4059.6

2

0.668

12,838

12

0.830

17.482

5

算法

Hayes-Roth

LED

New-Thyroid

准确率

SSE

迭代次数

准确率

SSE

迭代次数

准确率

SSE

迭代次数

K-means

0.332

358.67

7.43

0.540

271.97

6.41

0.801

28,968

10.03

K-means++

0.386

356.88

7.27

0.643

240.84

4.77

0.771

28,942

9.71

SK-means

0.450

360.04

5

0.742

222.27

4

0.860

28,917

8

<xref></xref>Table 5. Accuracy improves quantitative dataTable 5. Accuracy improves quantitative data 表5. 准确率提升量化数据
数据集

Iris

Wine

Tae

Heart

K-means

9.84%

2.93%

8.01%

18.00%

K-means++

0.45%

5.88%

14.47%

25.80%

数据集

Haberman

Seeds

Titanic

Phoneme

K-means

16.07%

0.56%

9.45%

0.15%

K-means++

0

0.22%

6.01%

0.30%

数据集

Appendicitis

Hayes-Roth

LED

New-Thyroid

K-means

3.23%

35.54%

37.41%

7.37%

K-means++

2.85%

16.58%

15.40%

11.54%

<xref></xref>Table 6. Each algorithm evaluates indexes in different data clustering classesTable 6. Each algorithm evaluates indexes in different data clustering classes 表6. 各算法在不同数据集聚类评价指标
UCI数据集

K-means

K-means++

文献 [24]

SK-means

SI

ACC

SI

ACC

SI

ACC

SI

ACC

Iris

0.546

0.825

0.552

0.888

0.549

0.887

0.553

0.893

Wine

0.567

0.669

0.565

0.631

0.571

0.702

0.571

0.702

Hayes-Roth

0.198

0.442

0.204

0.450

0.571

0.432

0.201

0.450

Heart

0.365

0.500

0.365

0.469

0.377

0.589

0.367

0.590

Tae

0.313

0.337

0.312

0.318

0.328

0.358

0.293

0.364

Haberman

0.395

0.447

0.395

0.520

0.393

0.500

0.399

0.520

表4 为SK-means算法与传统K-means、K-means++在准确率、SSE及迭代次数的比较。对比发现SK-means算法在大部分数据集有着较好的聚类结果。SK-means算法在所有数据集的准确率相较于传统K-means和K-means++均有提升、SSE和迭代次数除在极个别数据集略有增加,其余均有降低。 表6 为SK-means算法在6个数据集与K-means、K-means++及文献 [24] 的比较。对比发现SK-means的准确率在6个数据集均最优,而轮廓系数较文献 [24] 效果稍差。

4.4. 聚类可视化

为了更直观的展示SK-means算法的聚类效果,将Iris数据集前2维分别用K-means、K-means++聚类,得到效果如 图1

图1. Iris数据集三种算法的聚类效果

图中相同的颜色的样本点为一类,叉号为最终聚类簇心。可以看到K-means算法将右下角都聚为一类,左上角分为两类。Iris数据集真实标签为三类均分,每个簇各有50个样本点。就数量而言,K-means算法聚类效果不佳。而K-means++和SK-means算法效果相似,但SK-means算法迭代次数更少且准确率更高。

4.5. 结果分析

表4 可知,与传统K-means聚类算法和K-means++算法相比,改进的算法准确率均有相应的提升,且在大多数数据集提高明显。特别是LED数据集,相较于传统K-means聚类算法和K-means++算法准确率分别提高了15.4%、37.4%。在降低SSE和迭代次数方面,SK-means算法在大部分数据集都有起到一定的作用。但在Wine等数据集本文在提升准确率的情况下,改进的算法迭代次数与K-means++算法相比略有逊色。分析发现这些数据集某些维度数据范围过大,造成每个点R范围内样本点个数都比较少,不易比较哪个点更适合作为初始簇心。于是该算法对于样本点稀疏的数据集可能会造成迭代次数增加。由 表4 可知SK-means算法在大多数数据集轮廓指数高于K-means、K-means++,且准确率相较于文献 [24] 提出的算法均有提高。

5. 结束语

随着大数据时代的到来,传统的K-means聚类算法已经不能满足数据挖掘的需求,为了提高聚类效果,本研究在传统K-means聚类算法的基础上,提出了一种数据预处理的算法,通过对高密度差异数据集的处理,成功降低了K-means的迭代次数,提高了聚类的准确率。实验结果表明,SK-means算法排除了传统K-means聚类算法在选取初始簇心的随机性,科学选取初始簇心,降低了陷入局部最优的可能性。通过对比准确率,SK-means算法有着较好的聚类效果。尽管本研究主要关注了初始聚类中心和样本数据密度差异对算法性能的影响,但仍有许多方面值得进一步研究和探索。譬如在SK-means算法步骤4中,剔除样本点的范围可以根据数据集的稀疏程度来选取,以期获得更快的迭代和更优的聚类效果;可以排除掉离群点对内群点单独做聚类,聚类稳定后再将其归为最近的簇。未来的工作将重点关注这两方面以及优化算法的收敛性和复杂度,以期发现更优的方式提高算法的效率和应用范围。

References 周志华. 机器学习[M]. 北京: 清华大学出版社, 2016. Han, J., Kamber, M. and Pei, J. (2001) Data Mining Concepts and Techniques Orlando. Morgan Kaufmann Publishers, San Francisco. Zhang, W., Zhang, X., Zhao, J., Qiang, Y., Tian, Q. and Tang, X. (2017) A Segmentation Method for Lung Nodule Image Sequences Based on Superpixels and Density-Based Spatial Clustering of Applications with Noise. PLOS ONE, 12, e0184290. >https://doi.org/10.1371/journal.pone.0184290 Shahbazitabar, M. and Abdi, H. (2018) A Novel Priority-Based Stochastic Unit Commitment Considering Renewable Energy Sources and Parking Lot Cooperation. Energy, 161, 308-324. >https://doi.org/10.1016/j.energy.2018.07.025 Andrienko, G., Andrienko, N., Fuchs, G. and Garcia, J.M.C. (2018) Clustering Trajectories by Relevant Parts for Air Traffic Analysis. IEEE Transactions on Visualization and Computer Graphics, 24, 34-44. >https://doi.org/10.1109/tvcg.2017.2744322 Caruso, G., Gattone, S.A., Fortuna, F. and Di Battista, T. (2021) Cluster Analysis for Mixed Data: An Application to Credit Risk Evaluation. Socio-Economic Planning Sciences, 73, Article ID: 100850. >https://doi.org/10.1016/j.seps.2020.100850 Ji, X., Vedaldi, A. and Henriques, J. (2019) Invariant Information Clustering for Unsupervised Image Classification and Segmentation. 2019 IEEE/CVF International Conference on Computer Vision (ICCV), Seoul, 27 October-2 November 2019, 9864-9873. >https://doi.org/10.1109/iccv.2019.00996 MacQueen, J. (1967) Some Methods for Classification and Analysis of Multivariate Observations. Proceedings of the 5th Berkeley Symposium on Mathematical Statistics and Probability, Vol. 1, 281-297. Ramze Rezaee, M., Lelieveldt, B.P.F. and Reiber, J.H.C. (1998) A New Cluster Validity Index for the Fuzzy C-Mean. Pattern Recognition Letters, 19, 237-246. >https://doi.org/10.1016/s0167-8655(97)00168-2 成卫青, 卢艳红. 一种基于最大最小距离和SSE的自适应聚类算法[J]. 南京邮电大学学报: 自然科学版, 2015, 35(2): 102-107. 王建仁, 马鑫, 段刚龙. 改进的K-means聚类k值选择算法[J]. 计算机工程与应用, 2019, 55(8): 27-33. Sinaga, K.P. and Yang, M. (2020) Unsupervised K-Means Clustering Algorithm. IEEE Access, 8, 80716-80727. >https://doi.org/10.1109/access.2020.2988796 何选森, 何帆, 徐丽, 等. K-Means算法最优聚类数量的确定[J]. 电子科技大学学报, 2022, 51(6): 904-912. 唐东凯, 王红梅, 胡明, 等. 优化初始聚类中心的改进K-means算法[J]. 小型微型计算机系统, 2018, 39(8): 1819-1823. Breunig, M.M., Kriegel, H., Ng, R.T. and Sander, J. (2000) LOF: Identifying Density-Based Local Outliers. Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data, Dallas, 15-18 May 2000, 93-104. >https://doi.org/10.1145/342009.335388 朱利, 邱媛媛, 于帅, 等. 一种基于快速k-近邻的最小生成树离群检测方法[J]. 计算机学报, 2017, 40(12): 2856-2870. 刘凤, 戴家佳, 胡阳. 基于局部密度离群点检测K-means聚类算法[J]. 重庆工商大学学报(自然科学版), 2021, 38(4): 30-35. 张玉芳, 毛嘉莉, 熊忠阳. 一种改进的K-means聚类算法[J]. 计算机应用, 2003, 23(8): 31-33. 袁方, 孟增辉, 于戈. 对K-means聚类算法的改进[J].计算机工程与应用, 2004, 40(36): 177-178. 赖玉霞, 刘建平. K-means算法的初始聚类中心的优化[J]. 计算机工程与应用, 2008, 44(10): 147-149. 汪中, 刘贵全, 陈恩红. 一种优化初始中心点的K-means算法[J]. 模式识别与人工智能, 2009(2): 299-304. 陈光平, 王文鹏, 黄俊. 一种改进初始聚类中心选择的K-means聚类算法[J].小型微型计算机系统, 2012, 33(6): 1320-1323. 谢娟英, 王艳娥. 最小方差优化初始聚类中心的K-means算法[J]. 计算机工程, 2014, 40(8): 205-211. 郭永坤, 章新友, 刘莉萍, 等. 优化初始聚类中心的K-means聚类算法[J]. 计算机工程与应用, 2020, 56(15): 172-178. 韩凌波, 王强, 蒋正锋, 等. 一种改进的K-means初始聚类中心选取算法[J]. 计算机工程与应用, 2010, 46(17): 150-152. Steinley, D. (2006) K‐Means Clustering: A Half‐Century Synthesis. British Journal of Mathematical and Statistical Psychology, 59, 1-34. >https://doi.org/10.1348/000711005x48266 杨俊闯, 赵超. K-Means聚类算法研究综述[J]. 计算机工程与应用, 2019, 55(23): 7-14. 王森, 刘琛, 邢帅杰. K-means聚类算法研究综述[J]. 华东交通大学学报, 2022, 39(5): 119-126. Rousseeuw, P.J. (1987) Silhouettes: A Graphical Aid to the Interpretation and Validation of Cluster Analysis. Journal of Computational and Applied Mathematics, 20, 53-65. >https://doi.org/10.1016/0377-0427(87)90125-7 薛印玺, 许鸿文, 李羚. 基于样本密度的全局优化K均值聚类算法[J]. 计算机工程与应用, 2018, 54(14): 143-147.
Baidu
map