一种改进的全局最优化k‑modes聚类方法与流程

文档序号:11408280阅读:984来源:国知局

一、所属技术领域:

本发明提供一种能保证k-众数(即k-modes)聚类得到最优解的方法,解决了传统k-modes聚类算法对初始解敏感和难以获得全局最优解。本方法属于数据分析与挖掘领域,能使从事数据处理人员取得更加优化的聚类效果。

二、

背景技术:

现在正处于数据的时代,每天来自各方面的数据都在涌入我们的计算机、网络以及各类数据储存设备。而且现在数据规模的急剧增加以及对数据的广泛使用,都使我们需要一种功能强大和通用的工具,能够高效得处理所面临的的爆炸式的数据。为了应对处理各类数据问题,然后把不同的数据转化成有用的知识,数据挖掘方法由此孕育而生。

聚类分析是上面提到的数据挖掘方法中最基础同时也是最重要的技术之一。聚类技术是指数据对象的集合根据最大化类内相似性、最小化类间相似性的原则组成多个类的过程。也就是说,最终处于同一个簇中的数据对象具有较高相似性,而与其他簇中的对象很不相似。现目前基本的聚类算法可划分为如下几类:划分方法、层次方法、基于密度方法、基于网格方法。划分方法是一种最基本也是最实用的聚类算法,也是后续分析的基础环节。我们常用的k-modes算法是处理分类型数据的一种经典划分方法。但是它是一种基于非线性整数规划模型,这就带来了两个很难解决的问题,(1)因为需要设置初始值,所以对于初始值选择的不同会影响到最后的聚类结果,使得整个聚类算法不具有稳定性。(2)算法过程经常会陷入局部最优解,难以得到全局最优解。

本发明基于整数规划(即ip)模型将k-modes聚类问题转化成线性规划模型,并省去初始解设置的过程,而且因为整个过程是线性的,所以也能够得出全局最优解。从而完美解决了之前提到的两个问题。该方法通过一种描述并求解大规模复杂数学问题的建模语言(amathematicalprogramminglanguage即ampl),然后调用混合整数规划(即mip)求解器(如cplex、lingo)来完成中等规模的聚类计算。本发明是一种改进的全局最优化聚类方法,本方法首先提出了一种新的分类型数据集表达形式,然后利用新的表达形式建立了k-modes的整数线性规划模型。

三、

技术实现要素:

3.1发明目的

本发明的目的在于解决传统k-modes方法一直所面临的缺点,提出一种能得到全局最优解且稳定的聚类方法,为从事数据挖掘和大数据分析的相关人员提供能取得更好聚类效果方案。

3.2技术方案

对所面对的问题抽象如下:假设数据集x包含n个数据对象x={x1,x2,…,xn}。每个数据对象被m个属性a1,a2…,am描述。这样每个数据对象xi能被表达成xi={xi1,xi2,…,xim},因为k-modes算法针对的是分类型属性值,所以这里每个分类属性aj有一个值域pj是分类值的数目。这里假定簇个数k已经预先给定,k-modes算法就是把提到的数据对象x聚集成l(l≤n)个簇。k-modes算法思想就是先找出l个聚类中心{c1,c2,…,cl},使得每个数据对象与它最近的聚类中心的距离dxicj之和最小,并将这个组内距离和称之为目标函数,这里的dxicj也可称为两个对象之间的不相似度度量。然后根据分组情况重新定义每组的聚类中心。之后重复前一步的分组步骤,最后反复这两个步骤直到收敛。聚类的目标即为使各组组内距离之和最小。

下面将给出技术方案中用到的数学符号,如下:

本发明一种改进的全局最优化k-modes聚类方法,其步骤如下:

步骤一:数据预处理

对需要被聚类分组的n个物体进行编号,编号值从1到n;用yij表示数据对象i的第j属性的取值;这里的分类型数据采用1,2,3…数字型分别进行代替;比如属性aj,值域为vj,具有qj个分类型数据,这时用{1,2,3…qj}分别表示各分类型属性值;记录需要聚类的数目;

步骤二:建立线性化的k-modes数学规划模型

根据k-modes算法思想把数据对象x聚集成l(l≤n)个簇。其聚类标准就是找出l个聚类中心{c1,c2,…,cl},使得每个数据对象与它最近的聚类中心的距离之和最小,并将这个组内距离和称之为目标函数。本发明建立了一个线性规划模型完成了k-modes计算过程过程;其中所述的“建立了一个线性规划模型”,其建立做法如下:

a)因为k-mdoes是使每个数据对象与它最近的聚类中心的距离之和最小,并将这个组内距离和称之为目标函数。可以以这个为目标建立线性规划模型的目标函数,即把每个数据对象i和它簇中心k在每个属性j之间的距离进行加和。由此可建立目标函数,参见如下建立的目标函数。

b)为保证目标函数所建立的距离dikj满足要求,即在属性aj上数据项目i与簇中心k的距离计算上,每个对象i当且仅当在属于簇中心k的类时,存在对象i与簇中心该属性的取值不同,距离dikj=1。建立约束条件(1)。

(1)

c)规定簇中心的属性值的取值能要求:即簇中心每个属性只能取一个唯一确定的属性值。建立约束条件(2)

(2)

d)规定聚类分组的规则:根据每个数据对象i都必须且只能分配到一个类别里,建立约束条件(3);根据聚类结果需要被分成预先规定的l类,建立约束条件(4)

(3)

(4)

e)因为输入的数据是以yij的形式表达对象i的第j属性的取值。但是这样的表达方法难以建立线性化模型。所以需要转化成一种新的形式,如决策变量xijt为一个取值0或1的参数,当数据对象i的第j属性取第t个分类属性值(即yij=t)时,xijt=1。由此建立约束条件(6);而且因为对象i的第j属性只能取一个值,所以由此建立约束条件(5);

(5)

(6)

因此可以总结得出线性规划模型如下所示:

目标函数:

约束条件:

(1)

(2)

(3)

(4)

(5)

(6)

以上所涉及到的符号,其含意全部可从符号表中查得。

步骤三:模型求解

对上述模型进行求解,考虑利用商业软件进行模型求解,如lingo,cplex等,进行求解;由于本数学规划模型是线性的,完全具备最优解求解可行性;

其中,所述的“模型”,是指在步骤二所建立的目标函数与约束条件(1)~(6)所组成的线性规划模型;

其中,所述的“模型求解”,选择利用ampl语言调用cplex求解器求解模型,其求解具体做法如下:

(1)输入所需要聚类的数据以及聚类基本参数,建立ampl数据文件xxx.dat;

(2)建立ampl模型文件xxx.mod,建立线性规划模型;

(3)建立ampl批处理文件xxx.sh;

(4)使用ampl调用批处理文件xxx.sh,开始求解;

步骤四:结果输出

通过模型求解,会得到最优的目标函数值。同时也会得到相应于该目标函数值的决策变量值wik和ukjt;依据定义可以由决策变量ukjt和wik确定了各个数据对象的聚类分组情况以及各类的簇中心;

(1)对于所有i∈n观察wik,如果wik=1,则表示对象i隶属于k类;

(2)如果ukjt=1,则第k簇的类中心的第j属性取第t个分类属性值;

通过以上步骤,完成了k-modes算法聚类的目的。同时因为是线性的数学模型,所以到能求得全局最优解的效果,而且不用设置初始解,也避免的对于初始解敏感的问题,解决了传统k-modes计算常见的两个问题。

3.3本发明的优点和功效

本发明在以往研究的成果上,总结k-modes一直存在的缺点,提出了一种的k-mode算法的线性模型。该方法通过定义新的二元决策变量使得原问题转换为线性整数规划问题,解决了传统k-modes算法难以得到全局最优解和易受初始解影响的问题。通过对uci数据库算例进行求解可看出,本发明提出的模型是可行且有效的。

四、附图说明

图1本发明所述方法的实施流程图。

五、具体实施方式

本节用一组已经在uci上发布的标杆数据集lenses来具体说明该发明方法的具体过程。该数据集有24个数据对象,每个对象被4个属性值描述a1,a2,a3,a4。每个属性都为分类型属性,所以各个属性分类值得个数分别为{3,2,2,2}。预先设定将整个数据集划分为3个簇。具体的数据值如下表所示:

表1lenses数据表

本发明一种改进的全局最优化k-modes聚类方法,见图1所示,其具体实施步骤如下:

步骤一:数据预处理准备

因为获得的数据已经是用数字表达的分类型数据,则直接对每个数据项目编号即可完成数据预处理。记该数据集需要聚成3类。见表2

表2

步骤二:建立线性化的k-modes数学规划模型

目标函数:

约束条件:

(1)

(2)

(3)

(4)

(5)

(6)

步骤三:模型求解

根据表2的数据以及所规定的3类的聚类数目,编写ampl数据文件,并命名为lenses.dat。

根据步骤二建立的数学规划模型,编写ampl模型文件,并命名为lenses.mod。

由于本数学模型是线性的,完全具备最优解求解可行性。建立批处理文件lenses.sh。

最后利用ampl调用批处理文件lenses.sh开始进行求解。

步骤四:结果输出

通过求解计算会得到如下的计算结果

观察wik,如果wik=1,则表示对象i隶属于k类。通过决策变量划分出各个数据对象的聚类分组,{1,5,6,7,8,13,15,21,22}{2,4,9,10,12,14,16,18}{3,11,17,19,20,23,24};求得最优的目标函数值为27,即最小组内距离。

我们将同样的数据集,代入传统k-modes方法的模型中对其进行聚类求解,可得出最小组内距离为32.3,大于本方法得到的最小组内距离。故本方法,即基于线性整数规划的k-modes聚类优化方法,较于传统的k-modes聚类方法能得到更佳的聚类结果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1