一种基于层次聚类的大型超市会员聚类方法技术

技术编号:15437968 阅读:102 留言:0更新日期:2017-05-26 03:57
本发明专利技术公开一种基于层次聚类的大型超市会员聚类方法包括:步骤1、获取大型超级会员数据;步骤2、对大型超级会员数据进行聚类计算;步骤3、经过聚类操作后会得K个类,每个类中都包含最终聚类后的会员数据,利用Java POI包将这K个类输出。采用本发明专利技术的技术方案,可以提升执行效率。

A clustering method for large supermarket members based on hierarchical clustering

The invention discloses a large supermarket member clustering method based on hierarchical clustering include: Step 1, access to a large super membership data; step 2, the super large membership data clustering calculation; step 3, the clustering operation will have K classes, each class contains the final clustering membership data, use the Java POI package will K output. By adopting the technical proposal of the invention, the execution efficiency can be improved.

【技术实现步骤摘要】
一种基于层次聚类的大型超市会员聚类方法
本专利技术属于计算机软件领域,尤其涉及一种基于层次聚类的大型超市会员聚类方法,进一步涉及基于集成了BisectingK-means和系统演化算法的层次聚类方法。
技术介绍
大型超级市场作为普通大众日常消费的场所,每日都会产生大量的消费数据。其中多数超市都有会员制,会员作为超市的重要消费者,如何从会员的消费行为数据中提取有价值的信息是超市决策者最为关心的问题之一。聚类分析是成为有效信息提取较为常用的方法。聚类分析是一个把数据对象划分成子集的过程。每个子集是一个类簇,使得类簇中的对象彼此相似,但与其他类簇中的对象又有不同之处。由聚类分析产生的类簇的集合称作一个聚类。聚类分析已经广泛地应用于商务智能在商务智能应用中,聚类分析可以用来把大量客户分组,其中组内的客户具有非常相似的特征,从而可以针对不同的客户分组开展有针对性工作,进行商品宣传和推广等。因此,对聚类算法的性能进行提升是非常必要的。其中层次聚类方法由于距离和规则的相似度容易定义;可以发现类的层次关系,所以也是常用的聚类方法。层次聚类算法的过程一般是首先将某个点作为单独的一个类簇(这里的点即为一条会员数据),通过重复的计算比如单链接法或者全连接法等将所有点聚合成多个类簇,这种方法虽然简单但是执行效率不高。以本应用的会员聚类为例,超市中会员个数很多,产生的消费数据量也较大,不太适宜将单个会员作为一个类进而去一步一步地合并。当所有无序的点被划分成多个小的类簇后接下来需要对它们进行合并,目前在层次聚类方法中针对多个类簇进行合并的方法,主要是通过两两比较将类簇最相似的两个进行合并,但是并不能判断任意两个类簇能否直接进行合并。即如果有多组会员数据需要合并,一般方法需要将多组数据全部参与比较选取最为相似的一对进行合并。如果存在一种方法使得多组数据中任意挑选出两组就能判断是否能合并,则将会降低整体的计算度。其次,前一种方法因为只能挑选多组数据中最为相似的两组,所以在计算时如果不人为指定聚类个数,最终的结果是所有数据被聚成了一个类;而后一种方法由于可以直接判断两组数据能否合并,所以经过多次合并会在某个时刻下任意两个类簇都是不能再进行合并的,因而类簇的个数也不再发生变化,且类簇个数会大于等于1,则此时的个数即为最终合并后的类簇个数。综上所述,为了更好地进行聚类计算,需要实现以下两个方面的功能:①将处理后的每条会员数据抽象成一堆无序的点,并将这些点分成多个小类簇,同时使得每个类簇里点与点之间的距离尽量保持最小,这样尽可能确保每个小簇中的点属于同一类簇了。②以较快的速度计算出任意两个类簇间否能进行合并操作,同时能较为准确的计算出类簇的个数,即客户数据被聚合成了多少类。
技术实现思路
本专利技术要解决的技术问题是,提供一种基于层次聚类的大型超市会员聚类方法,可以提升执行效率。为实现上述目的,本专利技术采用如下的技术方案:一种基于层次聚类的大型超市会员聚类方法包括以下步骤:步骤1、获取大型超级会员数据;步骤2、对大型超级会员数据进行聚类计算,包括以下步骤:步骤2、1、基于误差项平方和(SSE)的数据划:首先需要确定最终划分后每个类簇中最多有多少个会员,然后将利用BisectingK-means将所有会员数据先分成多个子类簇并计算每块的SSE值,将其中SSE值较大的一些数据集进一步划分,直到所有经过划分的数据集中的会员个数小于等于设定最大会员数;步骤2、2、类簇判定聚合:当会员数据经过划分成多个类簇,基于系统演化算法判断两个类簇能否直接进行合并,即两组会员数据能否合并在一起,在进行计算时需要分别从两个参与判定的类簇中选取近邻区域和次近邻区域用作聚合计算,当满足聚合条件时,将两个类簇合并。否则不对两个类簇作合并操作,将二者继续与其他类簇进行聚合计算;步骤2、3、基于系统演化的层次聚类,利用系统演化算法中类簇聚合判定函数来计算已经划分好的类簇有哪些可以进行合并;当经过一轮聚合后仍存在两个类簇,则需要对已经合并的类簇再次进行聚合计算,以这种层次递进的方式检测是否还有类簇可以进行聚合,直到类簇的个数不再变化,聚合计算则不再执行,最终的类簇个数即为会员聚类后的类个数;步骤3、经过聚类操作后会得K个类,每个类中都包含最终聚类后的会员数据,利用JavaPOI包将这K个类输出。作为优选,每条会员数据包括七个属性分别为进口商品、食品饮料、粮油副食、美容洗护、家具家电、家庭清洁、母婴用品、生鲜水果。有益效果如下:1、本专利技术提出了一个基于BisectingK-means算法的数据划分方法,BisectingK-means算法通过计算类簇的误差平方和(SSE)可以使得划分过后类簇中点之间的距离尽可能的小,即尽可能得保证相似数据在初始阶段先被聚在了一个小簇中,方便后续聚合操作。2、本专利技术提出了一种直接判断两个数据集能否聚合的方法,该方法中引入并修改了系统演化算法中的部分计算方式和聚合判定的规则,使得新方法在速度上得到了提升,同时新的聚合方法可以直接判断两个类簇能否直接合并,避免了其他方法多次聚合计算带来的性能开销,同时聚合算法中的部分操作采用并行的方式计算,可以进一步加快计算。3、本专利技术根据两个类簇的聚合判定方法,将经过划分的会员数据以聚合型层次聚类的方式将相似的数据进行合并,直到聚合后的会员类簇个数不再变化。附图说明图1临近区域和次临近区域演示图;图2整体框架设计图;图3划分方法流程设计图;图4候选区域选取与计算流程设计图;图5距离指标计算流程设计图;图6聚合方法流程设计图。具体实施方案如图2所示,本专利技术实施例提供一种基于层次聚类的大型超市会员聚类方法包括:步骤1、数据输入每条会员数据包括七个属性分别为进口商品、食品饮料、粮油副食、美容洗护、家具家电、家庭清洁、母婴用品、生鲜水果。数据的每个属性值必须以正整数或者正实数进行表示,其中为了方便计算实数最多保留两位小数。每个属性同时包含了多个子属性,如表1所示。会员数据中每个属性值规定如下:首先选取每个会员近一个季度的消费记录,然后将消费记录转化成需要聚类的会员数据,这里每个父属性的取值为子属性中商品单价乘以销售率的乘积总和。表1参与聚类的会员数据单独存放于某个文件或者数据库表中,利用Java接口将数据读入内存。步骤2、聚类计算(1)基于BisectingK-means数据划分首先需要指定类簇中最大的会员个数,算出总的类簇个数。接下来将所有数据作为一个簇,然后将该簇一分为二。之后,选择其中一个类簇继续进行划分,选择哪一个类簇进行划分取决于是否可以最大程度降低SSE的值。上述基于SSE的划分过程不断重复,直到得到指定的类簇个数。划分过程如算法下描述,输入:数据集,簇中最大的会员个数第一步把所有会员数据作为一个cluster加入clusterlist第二步从clusterlist中选出一个SSE最大的cluster第三步从选出的cluster中随机挑选两个点(两个会员数据)作划分的中心,计算除了该中心以外的点到这两个中心的距离,选择距离近的中心,加入该中心所属类簇。最后将大的划分成两个子类簇。第四步计算两个子cluster的SSE值,将两个子cluster加入clusterlist第五步重复地第二步至第四步,直到每个类簇的个本文档来自技高网
...
一种基于层次聚类的大型超市会员聚类方法

【技术保护点】
一种基于层次聚类的大型超市会员聚类方法,其特征在于,包括以下步骤:步骤1、获取大型超级会员数据;步骤2、对大型超级会员数据进行聚类计算,包括以下步骤:步骤2、1、基于误差项平方和(SSE)的数据划:首先需要确定最终划分后每个类簇中最多有多少个会员,然后将利用Bi sect ing K‑means将所有会员数据先分成多个子类簇并计算每块的SSE值,将其中SSE值较大的一些数据集进一步划分,直到所有经过划分的数据集中的会员个数小于等于设定最大会员数;步骤2、2、类簇判定聚合:当会员数据经过划分成多个类簇,基于系统演化算法判断两个类簇能否直接进行合并,即两组会员数据能否合并在一起,在进行计算时需要分别从两个参与判定的类簇中选取近邻区域和次近邻区域用作聚合计算,当满足聚合条件时,将两个类簇合并。否则不对两个类簇作合并操作,将二者继续与其他类簇进行聚合计算;步骤2、3、基于系统演化的层次聚类,利用系统演化算法中类簇聚合判定函数来计算已经划分好的类簇有哪些可以进行合并;当经过一轮聚合后仍存在两个类簇,则需要对已经合并的类簇再次进行聚合计算,以这种层次递进的方式检测是否还有类簇可以进行聚合,直到类簇的个数不再变化,聚合计算则不再执行,最终的类簇个数即为会员聚类后的类个数;步骤3、经过聚类操作后会得K个类,每个类中都包含最终聚类后的会员数据,利用JavaPOI包将这K个类输出。...

【技术特征摘要】
1.一种基于层次聚类的大型超市会员聚类方法,其特征在于,包括以下步骤:步骤1、获取大型超级会员数据;步骤2、对大型超级会员数据进行聚类计算,包括以下步骤:步骤2、1、基于误差项平方和(SSE)的数据划:首先需要确定最终划分后每个类簇中最多有多少个会员,然后将利用BisectingK-means将所有会员数据先分成多个子类簇并计算每块的SSE值,将其中SSE值较大的一些数据集进一步划分,直到所有经过划分的数据集中的会员个数小于等于设定最大会员数;步骤2、2、类簇判定聚合:当会员数据经过划分成多个类簇,基于系统演化算法判断两个类簇能否直接进行合并,即两组会员数据能否合并在一起,在进行计算时需要分别从两个参与判定的类簇中选取近邻区域和次近邻区域用作聚合计算,当满足聚合条件时,...

【专利技术属性】
技术研发人员:王丹吴浩同付利华杜金莲苏航
申请(专利权)人:北京工业大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1