一种基于层次聚类的过采样方法及系统与流程

文档序号:16694392发布日期:2019-01-22 19:20阅读:355来源:国知局
一种基于层次聚类的过采样方法及系统与流程

本发明涉及数据处理技术领域,尤其涉及一种基于层次聚类的过采样方法及系统。



背景技术:

科学技术的飞速发展使得原始数据以爆炸般的速度不断涌现,这为知识发现和数据工程在广泛的范围内起到重要作用提供了巨大的契机,无论是日常生活,还是国家安全,小到企业的信息处理,大到国家的决策支撑,都离不开对数据的操纵和使用。近年来,不平衡数据上的学习问题在学术界和工业界引起了广泛关注,并且关注度仍有逐渐上升趋势。

从数据性质上讲,任何展现了不均衡的类间分布的数据都可以被视为不平衡的数据,但在机器学习和数据科学领域,学者们的共识是不平衡数据指的是高度不平衡,甚至是极端不平衡的数据,并且关注点主要集中在类间不平衡上。人们关心的主要问题在于,不平衡数据能够在很大程度上给绝大多数机器学习算法的结果带来负面影响。大多数传统机器学习算法基于平衡的数据分布的假设或者基于相等的误分类代价的假设,以提高总体分类精度为目标。这些学习算法倾向于对占多数的类别具有较高的识别精确度,而对于占少数类别的识别精确度较低,因此面对不平衡的数据的时候,机器学习算法往往不能得到预期的结果。在现实生活中,不平衡数据导致了很多亟待探索和解决的实际问题,这里的不平衡主要体现在不同类别数据的数量上,对这些不平衡的数据进行适当的处理和分析,在入侵检测、通讯管理、文本分类以及疾病监测等方面起到十分关键的作用。

目前,对于不平衡数据的解决办法大体上分为两种:(1)代价敏感的学习方法。代价敏感的学习方法做出了这样的假定:对于少数类别,误分类其中样例的代价是已知并且确定的。代价敏感的分类器通过对误分类一个少数类样本设置高代价来试图学习到样本集合的某些特性。然而,大多数情况下我们无法准确获取误分类的代价,并且很多时候学习结果会受不准确的误分类的代价所影响。(2)重采样方法。虽然现存的方法中没有能够完全适用于所有不平衡的数据集,但是对原数据进行重新采样的方法在试图改善数据本身而不是改进分类算法的过程中,展现出了其处理不平衡数据学习问题的强大潜力。基于不平衡数据的采样方法包括了对不平衡数据集的修正,通过过采样或者欠采样改变某些类别的原始分布,从而提供一个类与类之间相对均衡的表示。典型的数据层面的策略是过采样和欠采样两种方法。过采样算法生成新的少数类样例,以用来平衡多数类与少数类的类别差距,而欠采样算法则通过减少多数类样本的数量来达到类别之间的平衡。研究表明对于一些常见的分类器,相对于在不平衡的数据集上学习得到的结果,均衡的数据集提供了整体较好的分类表现。对于大多数不平衡数据,采样技术的运用能够帮助提高分类器的精度。

现有技术一般存在以下问题:

1)不能有效的解决类间不平衡问题

数据的不平衡不仅体现在类与类之间,类内的不平衡也会导致分类器的表现大幅下降。现有的针对不平衡数据的重采样方法很少考虑这个问题。

2)生成的数据很有可能与多数类产生交叉

以smote算法为代表的基于最近邻的选取种子数据的方法可能会导致生成的数据产生重叠。同时,其他的一些基于聚类的数据生成方法也有可能导致生成的数据与多数类数据交叉。

3)如何识别并且处理噪声数据

因为如果选取到了噪声数据作为种子来生成新数据的话,我们生成的新数据会把噪声的信息给夹带在生成的数据里面,因此我们有必要对选择的种子数据点做出适当的限制,以降低噪声可能对数据带来的损害。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述一个或多个的缺陷,提供了一种基于层次聚类的过采样方法及系统。

为了解决上述技术问题,本发明提供了基于层次聚类的过采样方法,包括:(1)对少数类样本进行聚类(2)对聚类得到的类簇进行连接(3)为每个少数类的类簇及类簇的连接部分分配权重(4)根据分配的权重确定每个少数类的类簇及连接部分被选取的概率,并根据所述概率在类簇和类簇的连接部分根据种子数据生成新数据。

可选地,所述对少数类样本进行聚类,包括:

1.为聚类内部的最大距离设置阈值thcluster的值;

2.为每个少数类样本分配一个独立的类簇;

3.更新类簇之间的距离矩阵m,找到平均距离最近的两个类簇ci和cj;

4.检查这两个类簇ci和cj之间是否与多数类样本集合中的样本产生重叠,即检查多数类样本集合中是否存在不少于thtolerate个满足以下条件的多数类样本:该多数类样本到ci和cj之间连线的距离不大于thcluster;如果是,则拒绝合并这两个类簇,并且将这两个类簇之间的距离设置为无穷大,并且返回步骤3;如果否则转步骤5;

5.检查这两个类簇ci和cj合并得到的类簇内部,样本距离的最大值是否大于thcluster,如果是则拒绝合并这两个类簇,并且将这两个聚类之间的距离设置为无穷大,并且返回步骤3;如果否则转步骤6;

6.合并这两个类簇,返回步骤3;

7.重复以上步骤3至6直至没有可合并的类簇。

可选地,所述对聚类得到的类簇进行连接,包括:

1.考虑类簇两两之间的质心距离,对于ci和cj,在质心距离不大于thlink时,检查两个类簇之间是否存在满足以下条件的多数类样本:该多数类样本到两个类簇的距离均不大于两个类簇之间的距离;

2.若不存在这样的多数类样本,则在两个类簇ci和cj之间建立连接link(i,j),将信息存储在无向图g中。

可选地,所述为每个少数类的类簇及类簇的连接部分分配权重,包括:

1.对于每一个类簇cj,j=1,2,…,nj:对于cj中的每一个少数类样本,在多数类样本集合中查找该样本的k个最近邻,计算得到阈值thj,并根据该阈值thj计算每个类簇的权重w(cj);

2.对于具有连接的类簇,为类簇的连接部分赋予权重w(cij)。

可选地,所述根据所述概率在类簇和类簇的连接部分根据种子数据生成新数据,包括:

1.根据概率分布p(c)随机选择类簇cj或者连接link(ij)作为种子数据;

2.如果选择的是类簇,则在类簇cs中随机选取两个数据点a,b作为种子数据,计算c=βa+(1-β)b,其中β为随机变量,β~u(0,1);如果选择的类簇的连接,则在两个类簇中各选取一个种子样本a,b,计算c=βa+(1-β)b,其中β为随机变量,β~u(0,1);

3.根据需要生成的数据数量,重复数次,将获取的新样本数据c加入到生成的数据集合中。

本发明还提供了一种基于层次聚类的过采样系统,包括:少数类聚类单元、类簇连接单元、权重分配单元和样本生成单元;

所述少数类聚类单元,用于对少数类样本进行聚类;

所述类簇连接单元,用于对聚类得到的类簇进行连接。

所述权重分配单元,用于为每个少数类的类簇及类簇的连接部分分配权重;

所述样本生成单元,用于根据分配的权重确定每个少数类的类簇及连接部分被选取的概率,并根据所述概率在类簇和类簇的连接部分根据种子数据生成新数据。

实施本发明实施例提供的基于层次聚类的过采样方法及系统,至少具有如下有益效果:

1、本发明为每一个聚类分配权重,并且根据权重来决定选取到该聚类的概率。因此能够在少数类内部实现适当的平衡,从而使得本发明的方法对于少数类中的子概念能够提供足够的关注,达到提升分类器学习效果的目的。

2、本发明使用层次聚类的方式对数据的整体结构做初步的描述,并且在进行聚类的同时检查聚类内部是否有可能与多数类空间产生交叉,在生成数据时我们选择在聚类内部以及聚类的连接处生成数据,因此此种方式能够使我们的数据生成的过程尽可能减少产生噪声数据的可能同时也避免了过拟合,因此相比于现有技术来说是比较安全的生成数据的方式。

3、本发明对于少数类数据内部的不平衡做了相应的适当处理,考虑到了其他条件相同的情况下,较为稀疏的聚类,需要生成更多的数据;其他条件相同的情况下,更加靠近多数类的聚类,需要生成更多的数据;其他条件相同的情况下,附近多数类数据较为密集的聚类中,需要生成更多的数据。

附图说明

图1是本发明实施例一所提供基于层次聚类的过采样方法的流程图;

图2是本发明实施例二所提供基于层次聚类的过采样方法中层次聚类步骤的流程图;

图3是本发明实施例七所提供基于层次聚类的过采样系统的示意图。

图中:301:层次聚类单元;302:类簇连接单元;303:权重分配单元;304:样本生成单元。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

如图1所示,本发明实施例提供的基于层次聚类的过采样方法,可以包括以下步骤:

步骤s101:执行层次聚类步骤,对少数类样本进行聚类。优选地,本发明对少数类样本数据进行启发式层次聚类。

步骤s102:执行类簇连接步骤,对得到的类簇进行连接,以确定在何处需要生成数据。

步骤s103:执行权重分配步骤,为每个少数类的类簇及类簇的连接部分分配权重。优选地,本发明中根据所述启发式层次聚类的结果为每个少数类的类簇及类簇的连接部分分配权重。

步骤s104:执行样本生成步骤,根据分配的权重确定每个少数类的类簇及连接部分被选取的概率,并根据所述概率在类簇和类簇的连接部分根据种子数据生成新数据。

本发明能够做到:1.有效地识别噪声、避免合成样本时产生新的噪声2.避免了生成的数据与原数据过于相似的情况,生成的数据具有较高的多样性,可以有效地避免过拟合的发生3.在生成新样本时考虑了少数类样本与多数类样本的位置关系,同时也兼顾了少数类内部的平衡,减少了过拟合的可能,从而达到提升分类器学习效果的目的。

实施例二

在实施例一提供的基于层次聚类的过采样方法的基础上,步骤s101中对少数类样本进行启发式层次聚类的过程,具体可以通过如下方式实现:

步骤s201:开始;

步骤s202:为聚类内部的最大距离设置阈值thcluster的值;

步骤s203:为每个少数类样本分配一个独立的类簇;

步骤s204:更新类簇之间的距离矩阵m,找到平均距离最近的两个类簇ci和cj;

步骤s205:检查这两个类簇ci和cj之间是否与多数类样本集合majsamples中的样本产生重叠,即检查多数类样本集合中是否存在不少于thtolerate个满足以下条件的多数类:该多数类样本到ci和cj之间连线的距离不大于thcluster。是则拒绝合并这两个类簇,并且将这两个聚类之间的距离设置为无穷大,并且返回步骤s204,否则转步骤s206;thtolerate和thcluster为预设的参数。

步骤s206:检查这两个类簇ci和cj合并得到的类簇内部,样本距离的最大值是否大于thcluster,是则拒绝合并这两个类簇,并且将这两个聚类之间的距离设置为无穷大,转步骤s204,否则转步骤s207;

步骤s207:合并当前选择的两个类簇;

步骤s208:重复步骤s204~s207,如果不存在可合并的类簇,转步骤s209;

步骤s209:结束,转类簇连接步骤。

实施例三

在实施例二提供的启发式层次聚类的基础上,步骤s102中对聚类得到的类簇进行连接的过程,具体可通过如下方式实现:

(1)考虑类簇两两之间的质心距离,对于ci和cj,如果质心距离不大于thlink,则检查两个类簇之间是否存在满足以下条件的多数类样本:该多数类样本到两个类簇的距离均不大于两个类簇之间的距离。若不存在这样的多数类样例,转步骤(2);

(2)在两个类簇ci和cj之间建立连接link(i,j),将信息存储在无向图g中。

(3)重复步骤(1)-(2),直至遍历完成。

上述过程中如果类簇直接的质心距离大于thlink,则认为则认为不满足进行连接的条件1,不进行连接操作,如果检查到两个类簇之间存在满足上述条件的多数类样本,则认为不满足进行连接的条件2,不执行连接操作。只有当条件1和条件2同时满足时才进行连接操作。

实施例四

在实施例三提供的类簇连接的基础上,步骤s103中为每个少数类的类簇及类簇的连接部分分配权重的过程,具体可以通过如下方式实现:

(1)对于每一个类簇cj,j=1,2,…,nj:

a.对于cj中的每一个少数类样本,在多数类样本集合中查找该样本的k个最近邻,计算得到阈值thj。

b.计算wmaj(cj)和wmin(cj),并计算每个类簇的权重w(cj).

(2)对于每一个类簇的连接,为其赋予权重w(cij):

其中,所述wmaj(cj)和wmin(cj)由以下步骤得到:

对于选定的聚类cj,我们考虑类簇中的点xjh,记xjh在多数类集合中的k个最近邻的样本集合为yjh(v),其中v=1,2,…,k,即xjh在多数类集合中近邻的序号。为了避免数据维度对样本距离的影响,本发明将距离按以下规则正则化:

本发明得到的对于该类簇内部少数类样本附近多数类样本密度的估计由γ(xjh,yjh(v))表示:

其中fj(x)是一个截断函数,目的是避免因距离过近导致计算出来的数值过大。

阈值thj则是类簇内部所有样本函数γ(xjh,yjh(v))的均值,其计算由下式得到:

其中nj是第j个类簇的样本数量。对于点xjh,其附近多数类样本的密度估计结果为:

对于类簇cj,其附近多数类样本密度估计结果由下式得到:

类簇内部少数类密度度量的估计值也以类似方式得到:

其中为类簇cj中的点xjh与少数类样本集合中查找该样本的最近邻nn(xjh)的距离。

对于类簇cj,最终的权重由下式计算得到:

实施例五

在实施例四提供的计算权重的基础上,实施例五中根据分配的权重确定每个少数类的类簇及连接部分被选取的概率,即将权重转化为概率分布p(c),并根据所述概率在类簇和类簇的连接部分根据种子数据生成新数据。该样本生成步骤生成新数据的过程,具体可以通过如下方式实现:

(1)根据概率分布p(c)随机选择类簇cj或者连接link(ij)作为生成数据的种子;

(2)如果选择的是类簇,则在类簇cs中随机选取两个数据点a,b作为种子数据,计算c=βa+(1-β)b,其中β为随机变量,β~u(0,1);如果选择的类簇的连接,则在两个类簇中各选取一个种子样本a,b,计算c=βa+(1-β)b,其中β为随机变量,β~u(0,1);

(3)将获取的新样本数据c加入到生成的数据集合generatedsamples中。

实施例六

本发明结合前述实施例一至五,提供了一种基于层次聚类的过采样方法:

一、该方法输入数据为:

-majsamples:多数类样本数据

-minsamples:少数类数据样本集合

-n:少数类样本的数量

-k:预先设定的k近邻参数

-numtogen:预期生成的数据的数量

-thtolerate:预设定的可以容忍在少数类可行域的多数类样本个数的阈值参数

-thlink:连接聚类时的阈值

二、该方法输出数据为:

-generatedsamples:生成的数据样本集合

三、该方法具体流程如下:

i.带安全检查的层次聚类

1.为聚类内部的最大距离设置阈值thcluster的值;

2.为每个少数类样例分配一个独立的类簇;

3.更新聚类之间的距离矩阵m,找到平均距离最近的两个类簇ci和cj;

4.检查这两个类簇之间是否与majsamples中的样例产生重叠,即检查是否存在不少于thtolerate个多数类上的样本,该样本到ci和cj之间连线的距离不大于thcluster。如果是,则拒绝合并这两个类簇,并且将这两个聚类之间的距离设置为无穷大,并且返回步骤3。

5.检查这两个类簇合并得到的类簇内部,样本距离的最大值是否大于thcluster,如果是则拒绝合并这两个类簇,并且将这两个聚类之间的距离设置为无穷大,并且返回步骤3。

6.否则,合并这两个类簇,返回步骤3。

7.重复以上步骤3到6直至没有可合并的类簇。

ii.连接类簇

1.考虑类簇两两之间的质心距离,对于ci和cj,如果质心距离不大于thlink,则检查两个类簇之间是否存在多数类样本,该样本到两个类簇的距离均不大于两个类簇之间的距离

2.若不存在这样的多数类样例,则在两个类簇ci和cj之间建立连接link(i,j),将信息存储在无向图g中。

iii.为聚类分配权重

1.对于每一个类簇cj,j=1,2,…,nj:

a.对于cj中的每一个少数类样本,在多数类样本集合中查找该样本的k个最近邻,计算得到阈值thj。

b.计算wmaj(cj)和wmin(cj),并计算每个类簇的权重w(cj)。

2.对于具有连接的类簇,为类簇的连接部分赋予权重w(cij)。

3.将权重转化为概率分布p(c)。

iv.生成合成数据样本

对于i:=1tonumtogen,执行以下步骤:

1.根据概率分布p(c)随机选择类簇cj或者连接link(ij)作为生成数据的种子。

2.如果选择的是类簇,则在类簇cs中随机选取两个数据点a,b作为种子数据,计算c=βa+(1-β)b,其中β为随机变量,β~u(0,1);如果选择的类簇的连接,则在两个类簇中各选取一个种子样本a,b,计算c=βa+(1-β)b,其中β为随机变量,β~u(0,1)。

3.将获取的新样本数据c加入到生成的数据集合generatedsamples中。

实施例七

如图3所示,本发明实施例提供的基于层次聚类的过采样系统,可以包括:层次聚类单元301、类簇连接单元302、权重分配单元303和数据生成单元304;

层次聚类单元301,用于对少数类样本进行聚类。该层次聚类单元301执行的操作与前述方法中层次聚类步骤s101相同;

类簇连接单元302,用于对聚类得到的类簇进行连接。该类簇连接单元302执行的操作与前述方法中类簇连接步骤s102相同;

权重分配单元303,用于为每个少数类的类簇及类簇的连接部分分配权重。该权重分配单元303执行的操作与前述方法中权重分配步骤s103相同;

样本生成单元304,用于根据分配的权重确定每个少数类的类簇及连接部分被选取的概率,并根据所述概率在类簇和类簇的连接部分根据种子数据生成新数据。。该样本生成单元304执行的操作与前述方法中样本生成步骤s104相同。

优选地,层次聚类单元301执行以下操作对少数类样本进行聚类:

1.为聚类内部的最大距离设置阈值thcluster的值;

2.为每个少数类样本分配一个独立的类簇;

3.更新类簇之间的距离矩阵m,找到平均距离最近的两个类簇ci和cj。

4.检查这两个类簇ci和cj之间是否与多数类样本集合majsamples中的样例产生重叠,即检查多数类样本集合中是否存在不少于thtolerate个满足以下条件的多数类上的样本:该多数类样本到ci和cj之间连线的距离不大于thcluster。如果是,则拒绝合并这两个类簇,并且将这两个类簇之间的距离设置为无穷大,并且返回步骤3。

5.检查这两个类簇ci和cj合并得到的类簇内部,样本距离的最大值是否大于thcluster,如果是则拒绝合并这两个类簇,并且将这两个聚类之间的距离设置为无穷大,并且返回步骤3;如果否则转步骤6;

6.否则,合并这两个类簇,返回步骤3。

7.重复以上步骤3到6直至没有可合并的类簇,启动类簇连接单元302。

优选地,类簇连接单元302执行以下操作来对聚类得到的类簇进行连接:

1.考虑类簇两两之间的质心距离,对于ci和cj,如果质心距离不大于thlink时,检查两个类簇之间是否存在满足以下条件的多数类样本:该多数类样本到两个类簇的距离均不大于两个类簇之间的距离;

2.若不存在这样的多数类样本,则在两个类簇ci和cj之间建立连接link(i,j),将信息存储在无向图g中。

优选地,权重分配单元303执行以下操作来为每个少数类的类簇及类簇的连接部分分配权重:

1.对于每一个类簇cj,j=1,2,…,nj:

a.对于cj中的每一个少数类样本,在多数类样本集合中查找该样本的k个最近邻,计算得到阈值thj。

b.计算wmaj(cj)和wmin(cj),并计算每个类簇的权重w(cj)。

2.对于具有连接的类簇,为类簇的连接部分赋予权重w(cij):

优选地,样本生成单元304执行以下操作来生成新数据:

1.根据概率分布p(c)随机选择类簇cj或者连接link(ij)作为生成数据的种子。

2.如果选择的是类簇,则在类簇cs中随机选取两个数据点a,b作为种子数据,计算c=βa+(1-β)b,其中β为随机变量,β~u(0,1);如果选择的类簇的连接,则在两个类簇中各选取一个种子样本a,b,计算c=βa+(1-β)b,其中β为随机变量,β~u(0,1);

3.将获取的新样本数据c加入到生成的数据集合中。

另外需要说明的是,本发明实施例提供的基于层次聚类的过采样系统,可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,如图3所示,作为一个逻辑意义上的系统,是通过其所在设备的cpu将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。

综上所述,本发明的关键点在于:

1.有效地识别噪声、避免合成样本时产生新的噪声;

2.避免了生成的数据与原数据过于相似的情况,生成的数据具有较高的多样性,可以有效地避免过拟合的发生;

3.在生成新样本时考虑了少数类样本与多数类样本的位置关系,同时也兼顾了少数类内部的平衡,减少了过拟合的可能。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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