CN106599935A - 基于Spark大数据平台的三支决策不平衡数据过采样方法 - Google Patents
基于Spark大数据平台的三支决策不平衡数据过采样方法 Download PDFInfo
- Publication number
- CN106599935A CN106599935A CN201611244051.4A CN201611244051A CN106599935A CN 106599935 A CN106599935 A CN 106599935A CN 201611244051 A CN201611244051 A CN 201611244051A CN 106599935 A CN106599935 A CN 106599935A
- Authority
- CN
- China
- Prior art keywords
- sample
- rdd
- data
- operators
- label
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/217—Validation; Performance evaluation; Active pattern learning techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
Landscapes
- Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明请求保护一种基于Spark大数据平台的三支决策不平衡数据过采样方法,涉及数据挖掘邻域,Spark大数据技术。首先使用Spark的RDD进行数据变换,得到归一化的LabeledPoint格式<lable:[features]>的样本集,并分成训练集和测试集;其次采用Spark的RDD进行数据变化,求样本间的距离,确定领域半径,根据邻域三支决策模型将整个训练集中的样本划分成正域样本,边界域样本和负域样本;然后分别对边界域样本,负域样本进行过采样;最后调用Spark Mllib机器学习算法,验证采样效果。本发明有效解决大规模不平衡数据集在机器学习和模式识别领域中的分类问题。
Description
技术领域
本发明属于数据挖掘,模式识别和大数据处理领域,具体是一种基于Spark大数据平台的三支决策不平衡数据过采样方法。
背景技术
近几年来,手机早已经成为我们日常用品,其更新换代颇为频繁,用户更换手机似乎也越来越平常。一方面用户更换手机的频率越快,市场的价值就越大,生产商的收益也就越高,所以,厂家需要千方百计地设计新产品来刺激用户更换手机。另一方面各大运营商都陆续地借助数据挖掘技术来提高营销效率,在实际工作中,当前通信行业中有关客户终端偏好的分析,只是单纯地依据业务经验或者通过判断客户是否使用较多流量进行推荐,机型推荐上较为盲目,推荐方式的粗糙,导致终端营销的成功率很低,同时耗费了大量的成本,终端营销停滞不前。因此,研究客户终端偏好模型就显得非常必要。虽然目前运行商能够获得很多用户相关的数据,但是大多数数据的价值不是很大,要想实现精准营销,必须精准挖掘购机客户的年龄、购机客户来源、购机品牌、价格选择,目前这些所谓的精准数据,数量少而又少,如何实现利用这部分数据从大量数据中实现精准营销,就目前分类算法,必须使这两类样本的数量达到一定的平衡。
随着信息技术的快速发展和经济日益增长,信用卡以及第三方支付具有方便,快捷等特点成为支付领域的主要媒介,同时相关欺诈以惊人的速度成长,欺诈手法不断翻新,如何有效防范同类欺诈成为银行等机构风险控制领域的研究热点,然而,可获得的欺诈信息与正常的消费信息根本不在一个数量级上,使用现在的挖掘算法,对异常数据的识别,不尽人意,有效途径之一就是使两类数据达到一定的均衡。
在日常生活中,像这样的不平衡分类问题很常见,如流量异常检测,逃离客户检测,疾病预测等等。像这类的应用场景,尽管收集到的这类数据量很大,但是对人们有用的数据往往非常有限,通常仅占全部数据的一小部分。这种某类样本数量明显少于其他类样本数量的数据集称为不平衡数据集。数量相当少的一类被称为少数类或稀缺类,而具有大量样本的那些类为大类。不均衡数据集的分类问题是机器学习和模式识别领域中心的研究热点,然而传统机器学习通常以总体最大分类精度为目标,这一目标必然会导致算法提高多数类样本的分类精度,而忽略样本集中小样本的预测精度,使得分类器性能大幅度下降,得到的分类器具有很大的偏向性.本属于稀有类的样本往往被错分到大类.使得少数类样本的分类精度达不到人们的需求。因此,如何有效地提高少数类的分类准确率和分类器的整体性能已成为数据挖掘领域的一个热点。
不平衡数据集的分类问题是机器学习和模式识别领域中的一个热点问题,迄今为止,针对此问题的解决方法主要分为两大类:一类是数据预处理方法,目的是降低类别之间的不平衡性,在此层面上主要的方法是重采样,增加小类样本的数目(过采样)或减少大类样本的数目(欠采样);另一类则是在分类算法上着手,提出新的有效的分类算法或改进现有的分类算法以适应对不平衡数据分类的目的,主要包括单类学习、集成学习、代价敏感学习等方法。但是它们没有改变类别之间的不平衡性,限制了算法的广泛应用。所以在实际应用场景中,采用更多的是数据采样的方法。
过采样技术就是人工的增加少数类样本数目以达到增加少数类的分布信息,最简单的方法就是随机复制少数类样本,但是容易导致过拟合,对提高少数类的识别率没有太大的帮助。因此,许多学者提出了一些高级的采样方法。Chawla等人提出的SMOTE算法是一种简单有效的智能过采样方法,它较传统过采样技术能够有效避免分类器的过拟合现象。但是,SMOTE算法对每个少数类样本不加选择的进行采样,导致有些合成的少数类样本影响多数类样本的泛化空间,从而降低其分类效果。对不平衡数据的处理,有效的过采样方法既要增加少数类样本的分布信息,又要尽可能的避免少数类样本与多数类样本的重叠交叉。
三支决策理论由加拿大学者Yao首次提出,主要思想就是将整体划分为三个部分,分别称为L域、M域和R域。对不同部分采用不同的处理方法,为复杂问题的求解提供了一种有效的策略与方法。对正域,负域和边界域中的对象分别作出接受,拒绝和不承诺决策。
Spark是一个基于内存的分布式计算系统,是由UC Berkeley AMP Lab实验室于2009年开发的开源数据分析集群计算框架。拥有MapReduce的所有优点,与MapReduce不同的是.Spark将计算的中间结果数据持久地存储在内存中,通过减少磁盘I/O。使后续的数据运算效率更高。Spark的这种架构设计尤其适合于机器学习、交互式数据分析等应用.这些应用都需要重复地利用计算的中间数据。
RDD(弹性分布式数据集)是一种抽象数据类型,是数据在Spark中的表现形式,也是Spark中最核心的模块和类,也是设计精华所在。你可以把它看作是一个有容错机制的大集合,Spark提供了Persist机制将其缓存到内存中,方便迭代运算和多次使用。RDD是分区记录的,不同区可以分布在不同的物理机上,更好的支持并行计算。RDD还有一个特性是它是弹性的,当在作业运行的过程中,机器的内存溢出时,RDD会与硬盘数据进行交互,虽然会降低效率,但却可以保证作业的正常运行。在RDD上可以进行两种操作:转换和动作。
转换:通过一系列的函数操作将现有RDD转换成为一个新的RDD,即返回值仍然是RDD,且RDD可以不断进行转换。由于RDD是分布式存储的,所以整个转换过程也是并行进行的。常用的转换高阶函数如map,flatMap,reduceByKey等。
动作:返回值不是一个RDD。它可以是一个Scala的普通集合,或者是一个值,或者是空,最终或返回到Driver程序,或把RDD写入到文件系统中。比如reduce、saveAsTextFile和collect等函数。
发明内容
本发明旨在解决以上现有技术的问题。提出了一种降低了新合成的少数类样本对多数类的决策空间的影响,保证了多数类样本的识别率,有效提高了过采样算法的性能;另一方面通过并行化数据存储阶段,数据预处理阶段,采样阶段,又能够大幅降低处理大规模数据的学习时间的基于Spark大数据平台的三支决策不平衡数据过采样方法。本发明的技术方案如下:
一种基于Spark大数据平台的三支决策不平衡数据过采样方法,其包括以下步骤:
1)、在数据预处理阶段,获取并存储需要采样的样本集,对整个样本使用Spark进行数据变换,得到归一化的LabeledPoint格式<lable:[features]>的样本集,然后分成训练集和测试集;
2)、训练集划分阶段,采用Spark进行数据变化,求样本间的距离,确定领域半径,最后根据邻域三支决策模型将整个训练集中的样本划分成正域样本,边界域样本和负域样本;
3)、采样阶段,首先利用Spark进行数据变换得到边界域中每个小类样本的K近邻,然后插值采样,对负域中的样本通过放大负域中小类样本的邻域半径,筛选非噪声点,进行过采样处理操作:对每个非噪声点找到距离其最近的小类样本,在以两者距离为邻域半径的邻域内合成K个新的小类样本点;
4)、训练验证阶段,选取C4.5、CART、SVM等训练器进行训练验证,通过对采样前和采样后的实验结果(F值、AUC等)对比,说明本采样算法的有效性。
进一步的,所述步骤1)获取并存储需要采样的样本集,对整个样本使用Spark进行数据变换,得到归一化的LabeledPoint格式<lable:[features]>的样本集,然后分成训练集和测试集具体包括步骤:
首先创建SparkContext对象,然后用它的textFile(URL)函数创建分布式数据集RDD,一旦创建完成,这个分布式数据集就可以被并行操作;其次,将每个样本集转化成LabeledPoint形式,调用Map算子将<特征1,特征2,…,类别>形式的样本转化成<类别:[特征集]>形式,然后采用最大值,最小值进行归一化,最后调用zipWithIndex算子,给每一条样本做一个标号,将创建的RDD转化成<标号,<标签,[特征集]>>形式,最后根据标号将整合数据及划分成10份,随机选取一份当做测试集,剩余九份当做训练集,即采用十折交叉验证。
进一步的,所述步骤2)中采用Spark进行数据变化,求样本间的距离具体包括:首先,定义广播变量bc,即利用SparkContext对象的BroadCast算子将RDD作为广播变量广播到每个计算节点上;然后RDD调用mapPartitions算子,计算每个Partition上的样本与广播变量中样本全集的欧式距离,将RDD转化成<xi的标号,xi类别,xj的标号,xj的类别,xi与xj的距离dis,[xi的特征集],[xj的特征集]>格式。
进一步的,所述步骤2)确定领域半径包括:首先对转化后的RDD,调用GroupBy算子,对所有样本根据xi标号进行聚合,其次,将聚集的结果调用SortBy算子,根据xi与xj的距离大小排序,然后调用mapPartitions算子,对每个Partition中的样本根据邻域半径的公式,计算样本xi的邻域半径ri,然后调用Filter算子,选择xj与xi的距离小于ri的样本xj,距离小于ri代表该样本xj落在了xi的邻域范围内;经过一系列的转化将RDD转化成<xi的标号,xi的类别,xj的标号,xj的类别,邻域半径ri,[xi的特征集],[xj的特征集]>格式,其中xj属于xi的邻域范围内,调用Persist算子将得到的RDD持久化内存中。
进一步的,步骤2)中根据邻域三支决策模型将整个训练集中的样本划分成正域样本,边界域样本和负域样本包括以下步骤:首先根据数据转化后的RDD,根据xi的标号,调用GroupBy算子,对样本根据xi的标号进行聚合,然后将聚集的结果调用MapPartitions算子,统计每个Partition中xi样本的邻域半径范围内大类样本个数和小类样本的个数,从而根据邻域三支决策模型确定正域样本,边界域样本和负域样本;经过一系列的转换,RDD转化为<xi的标号,xi的类别,xi的类型(1:代表正域,2:代表边界域,3:代表负域)>形式,定义为type_RDD,至此训练集的划分结束,调用Persist算子将得到的RDD持久化内存中。
进一步的,步骤3)利用Spark进行数据变换得到边界域中每个小类样本的K近邻,然后插值采样包括步骤:对转化后的type_RDD,调用Filter算子,选择xi的类别为小类样本1且xi的类型为边界域样本2的记录,定义为新的BND_RDD;然后与持久化在内存中的RDD进行join操作,筛选得到属于边界域的小类样本,然后调用Map算子,最终得到<xi的标号,[xi的特征集],[xi的特征集]>,其中xi和xj的类别均为小类1,且xi的类型为边界域样本2,最后调用Map算子根据样本合成公式合成k个新小类样本,合适为<类别=1,[新特征集]>添加到用来存储新合成的样本NewSimpleSet。
进一步的,步骤3)对负域中的样本通过放大负域中小类样本的邻域半径,筛选非噪声点,进行有选择过采样包括步骤:对转化后的type_RDD,调用Filter算子,选择xi的类别为小类样本1且xi的类型为负域样本3的记录,定义为新的NEG_RDD;然后与持久化在内存中的RDD进行join操作,筛选得到属于负域的小类样本,;然后调用Map算子,最终得到<xi的标号,ri,[xi的特征集],[xj的特征集]>,其中xi和xj的类别均为小类1,且xi的类型为边界域样本3,最后调用Filter算子,计算xi与xj的距离dis,如果存在xi与xj的距离dis小于2*ri则,在以xi与y为半径的邻域范围内根据样本合成公式合成k个新小类样本,格式为<类别=1,[新特征集]>添加到NewSimpleSet,其中y为距离xi最近的样本点,否则将样本xi在训练集中删除。
进一步的,选取训练器进行训练验证,将训练集和NewSimpleSet合并为新的训练集,选择C4.5、CART、SVM等分类器进行验证。
进一步的,所述步骤1)存储需要采样的样本集由HDFS自动进行分布式存储,
本发明的优点及有益效果如下:
本发明提出的过采样方法利用Spark并行技术,将过采样算法与三支决策理论有效结合,一方面通过对边界域和负域分别进行过采样,降低了新合成的少数类样本对多数类的决策空间的影响,保证了多数类样本的识别率,有效提高了过采样算法的性能;另一方面通过并行化数据存储阶段,数据预处理阶段,采样阶段,又能够大幅降低处理大规模数据的学习时间。有效解决的不平衡数据集在机器学习和模式识别领域中的分类问题。
附图说明
图1是本发明提供优选实施例基于Spark大数据平台的三支决策不平衡数据过采样方法;
图2三支决策原理图;
图3划分数据集原理图;
图4边界域过采样原理图;
图5负域采样过原理图;
图6 RDD转化流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
使用基于Spark大数据平台的三支决策不平衡数据过采样方法,包括以下步骤:
从系统处获取需要采样的样本集,由HDFS自动进行分布式存储,再对整个样本使用Spark进行数据变换得到归一化的LabeledPoint格式<lable:[features]>的样本集。具体步骤:首先创建将SparkContext对象,然后用它的textFile(URL)函数创建分布式数据集RDD,一旦创建完成,这个分布式数据集就可以被并行操作;其次,将每个样本集转化成LabeledPoint形式,调用Map算子将<特征1,特征2,…,类别>形式的样本转化成<类别:[特征集]>形式,然后采用最大值,最小值进行归一化,最后调用zipWithIndex算子,给每一条样本做一个标号,将创建的RDD转化成<标号,<标签,[特征集]>>形式,最后根据标号将整合数据及划分成10份,随机选取一份当做测试集,剩余九份当做训练集,即采用十折交叉验证。
采用Spark进行数据变化,求样本间的距离,确定领域半径,最后根据邻域三支决策模型将整个训练集划分成正域,边界域和负域。首先,为减少通信的开销和避免在任务之间传递大量的数据,定义广播变量bc,方法为,利用SparkContext对象的BroadCast算子将RDD作为广播变量广播到每个计算节点上。然后RDD调用mapPartitions算子,计算每个Partition上的样本与广播变量中样本全集的欧式距离,将RDD转化成<xi的标号,xi类别,xj的标号,xj的标签,xi与xj的距离,[xi的特征集],[xj的特征集]>,调用GroupBy算子根据xi的标号,对所有样本根据xi标号进行聚合,然后将聚集的结果调用SortBy算子,根据xi与xj的距离大小排序,其次调用mapPartitions算子,对每个Partition中的样本根据邻域半径的公式,计算样本xi的邻域半径ri,然后调用Filter算子,选择xj与xi的距离小于ri的样本xj(距离小于ri,代表该样本xj落在了xi的邻域范围内)。经过一系列的转化将RDD转化成<xi的标号,xi的类别,xj的标号,xj的类别,ri,[xi的特征集],[xj的特征集]>格式,其中xj属于xi的邻域范围内。其中计算邻域半径的公式如下:
δ=min(Δ(xi,s))+w×range(Δ(xi,s)),0≤w≤1 (1)
其中min(Δ(xi,s))表示距离其最近样本的距离,range(Δ(xi,s))表示在训练集中其距离的取值范围。
根据xi的标号,调用GroupBy算子,对样本根据xi的标号进行聚合,然后将聚集的结果调用MapPartitions算子,统计每个Partition中xi样本的邻域范围内(邻域半径范围内)大类样本个数和小类样本的个数,从而根据邻域三支决策模型确定正域样本,边界域样本和负域样本。经过一系列的转换,将RDD转化为<xi的标号,xi的类别,xi的类型(1:代表正域,2:代表边界域,3:代表负域)>形式,定义为type_RDD,至此训练集的划分结束,调用Persist算子将得到的type_RDD持久化内存中。其中邻域三支决策模型定义如下:
定义1:给定实数空间上的非空有限样本集合U,x的邻域可表示为δ(x)={y|y∈U,Δ(x,y)≤δ}。令N0和N1分别表示δ(x)内的大类样本类别和小类样本类别,则x的邻域δ(x)内大类样本个数和小类样本个数可分别定义为:
N0(δ(x))=|{y|y∈δ(x),y∈N0}| (2)
N1(δ(x))=|{y|y∈δ(x),y∈N1}| (3)
为了实现三支决策,首先需要引入实体的评价函数f(x),也称为决策函数,它的值称为决策状态值,其大小反映实体的好坏程度;其次,引入一对阈值α和β来定义正域、边界域和负域中的事件对象;再次,根据决策状态值和阈值将论域中事件对象划分到正域、边界域和负域中,构造出相应的三支决策规则。本文结合邻域模型与三支决策模型,给出了邻域三支决策模型的相关定义。
定义2:给定实数空间上的非空有限样本集合U={x1,x2,…,xn},给定目标函数f(x),则邻域三支决策如下:
(P)如果f(x)≥α,则x∈POS(X)
(B)如果β<f(x)<α,则x∈BND(X) (4)
(N)如果f(x)≤β,则x∈NEG(X)
式(4)中,α=k,其中,k表示在样本x的邻域内进行采样的样本个数,本发明参考SMOTE算法和实验经验结果,取k=5,即,α=k=5,
决策(P)表示当f(x)不小于α时,将x划分到X正域;决策(B)表示当f(x)大于β且小于α时,将x划分到边界域;决策(N)表示当f(x)不大于β时,将x划分到负域。
式(4)中,f(x)的计算公式如下所示:
式(5)中,f(x)表示:在样本x的邻域内,不同类别样本个数差与异类样本个数的一种比例关系,为了避免出现分母为0的情况,这里采用了对N0(δ(x))和N1(δ(x))加1的处理策略。当x∈Xmin时,f(x)越大,说明x邻域内的小类样本多,x属于正域的可能性越大;当x∈Xmax时,f(x)越小,说明x邻域内的大类样本越多,x属于负域的可能性越大
对type_RDD,调用Filter算子,选择xi的类别为1(小类样本)且xi的类型为2(边界域样本)的记录,定义为新的BND_RDD;然后与权利要求4得到的RDD进行join操作,从RDD中筛选得到符合条件样本(xi的类别为1(小类样本)且xi的类型为2),然后调用Map算子,最终得到<xi的标号,[xi的特征集],[xj的特征集]>,其中xi和xj的类别均为1(小类),且xi的类型为2(边界域样本)。最后调用Map算子合成k个新样本(小类),合适为<类别=1,[新特征集]>添加到NewSimpleSet(新集合,用来存储新和成的样本),其中合成新样本的原理为:
xnew=xi+rand(0,1)×(xj-xi) (6)
其中,xj为xi的k近邻中的一个小类样本点。
图1为本发明方法流程框图,包括如下步骤:
1)数据预处理阶段:
从系统处获取需要采样的样本集,由HDFS自动进行分布式存储,再对整个样本使用Spark进行数据变换得到归一化的LabeledPoint格式<lable:[features]>的样本集。具体步骤:首先创建将SparkContext对象,然后用它的textFile(URL)函数创建分布式数据集RDD,一旦创建完成,这个分布式数据集就可以被并行操作;其次,将每个样本集转化成LabeledPoint形式,调用Map算子将<特征1,特征2,…,类别>形式的样本转化成<类别:[特征集]>形式,然后采用最大值,最小值进行归一化,最后调用zipWithIndex算子,给每一条样本做一个标号,将创建的RDD转化成<标号,<标签,[特征集]>>形式,最后根据标号将整合数据及划分成10份,随机选取一份当做测试集,剩余九份当做训练集,即采用十折交叉验证。例如:
原始样本格式:1.0,85.0,66.0,29.0,0.0,26.6,0.351,31.0,0
(最后一列代表类别,前边代表特征集)
转化成LabeledPoint格式后:(0,[1.0,85.0,66.0,29.0,0.0,26.6,0.351,31.0]);
转化成归一化后格式:(0,[0.35,0.74,0.59,0.35,0.0,0.50,0.23,0.48]);
调用zipWithIndex算子后的格式:(23,0,[0.35,0.74,0.59,0.35,0.0,0.50,0.23,0.48])其中数字23表示xi的标号,数字0表示xi的类别,[…]表示xi的特征集。
2)训练集划分阶段
获取归一化后的训练集,采用Spark进行数据变化,求样本间的距离,确定领域半径,最后根据邻域三支决策模型将整个训练集样本划分成正域样本,边界域样本和负域样本。计算距离:
首先,为减少通信的开销和避免在任务之间传递大量的数据,定义广播变量bc,方法为,利用SparkContext对象的BroadCast算子将权利要求2中的RDD作为广播变量广播到每个计算节点上。然后对权利要求2中的RDD调用mapPartitions算子,计算每个Partition上的样本与广播变量中样本全集的欧式距离,将RDD转化成<xi的标号,xi类别,xj的标号,xj的标号,xi与xj的距离,[xi的特征集],[xj的特征集]>格式。如:75,1,624,1,0.89,[0.058,0.69,0.37,0.19,0.090.42,0.24,0.016],[0.47,0.88,0.74,0.34,0.35,0.50,0.16,0.62])
其中数字75代表xi的标号,数字1代表xi的类别,[0.058,0.69,0.37,0.19,…]代表xi的特征集;数字624代表xj的标号,数字624后的数字1代表xj的类别,[0.47,0.88,0.74,0.34,…]代表xj的特征集;数字0.89代表两者的距离
3)确定邻域半径,确定邻域半径范围内的样本点
首先对转化后的RDD,调用GroupBy算子根据xi的标号,对所有样本根据xi标号进行聚合,然后将聚集的结果调用SortBy算子根据xi与xj的距离大小排序,其次调用mapPartitions算子,对每个Partition中的样本根据邻域半径的公式计算样本xi的邻域半径ri,然后调用Filter算子,选择xj与xi的距离小于ri的样本xj(距离小于ri,代表该样本xj落在了xi的邻域范围内)。经过一系列的转化将权利要求3的RDD转化成<xi的标号,xi的类别,xj的标号,xj的类别,ri,[xi的特征集],[xj的特征集]>格式,即对xj进行了筛选,xj属于xi的邻域范围内。
4)确定正域,边界域和负域
首先根据数据转化后的RDD,根据xi的标号,调用GroupBy算子根据xi的标号,对样本根据xi的标号进行聚合,然后将聚集的结果调用MapPartitions算子,统计每个Partition中xi样本的邻域范围内(邻域半径范围内)大类样本个数和小类样本的个数,从而根据邻域三支决策模型确定正域样本,边界域样本和负域样本。经过一系列的转换,权利要求4中的RDD转化为<xi的标号,xi的类别,xi的类型(1:代表正域,2:代表边界域,3:代表负域)>形式,定义为type_RDD,至此训练集的划分结束,调用Persist算子将得到的RDD持久化内存中。如:
(75,1,2),其中数字375代表xi的标号,数字1代表xi的类别,数字3代表xi的类型(正域,边负域界域)。
在图3中,α=k=5,分3种示例分别解释负域、边界域和正域。
示例(1):x1的邻域范围内小类个数为0,大类个数为6。即N0(δ(x1))=6,N1(δ(x1))=0;评价函数即f(x1)<β,则x1∈NEG(X),即把x1划分到负域。
示例(2):x2的邻域范围内小类个数为3,大类个数为2。即N0(δ(x2))=2,N1(δ(x2))=3,评价函数即β<f(x2)<α,则x2∈BND(X),即把x2划分到边界域。
示例(3):x3的邻域范围内小类个数为7,大类个数为0。即N0(δ(x3))=0,N1(δ(x3))=7,评价函数即f(x3)>α,则x3∈POS(X),即把x3划分到正域。
5)采样阶段
边界域采样
对type_RDD,调用Filter算子,选择xi的类别为1(小类样本)且xi的类型为2(边界域样本)的记录,定义为新的BND_RDD;然后与权利要求4得到的RDD进行join操作,筛选得到权利要求4中符合条件的RDD(xi的类别为1(小类样本)且xi的类型为2),然后调用Map算子,最终得到<xi的标号,[xi的特征集],[xj的特征集]>,其中xi和xj的类别均为1(小类),且xi的类型为2(边界域样本)。最后调用Map()根据样本合成公式合成k个新样本(小类),合适为<类别=1,[新特征集]>添加到NewSimpleSet(新集合,用来存储新和成的样本)。
图4中,首先对边界域内(椭圆区域内的样本为边界域样本,椭圆区域外的样本为正域样本)小类样本进行采样。假设对x1进行采样,首先,找到离x1距离最近的k(k=5)个同类样本,即{x2,x3,x4,x5x6},利用这5个样本合成新的样本{z5,z1,z2,z3,z4};其次,对新的合成样本进行检测,容易发现,{z1,z2,z3,z4}周围的大类样本都属于边界域,它们不影响正域内大类样本的分类,可以保留,而z5会影响正域内大类样本y1的分类,故需要删除新合成样本z5。通过以上处理,可有效减少新合成的小类样本对正域内的大类样本泛化空间的影响。
负域采样
对type_RDD,调用Filter算子,选择xi的类别为1(小类样本)且xi的类型为3(负域样本)的记录,定义为新的NEG_RDD;然后与权利要求4得到的RDD进行join操作,筛选得到符合条件的RDD(xi的类别为1(小类样本)且xi的类型为3);然后调用Map算子,最终得到<xi的标号,ri,[xi的特征集],[xj的特征集]>,其中xi和xj的类别均为1(小类),且xi的类型为3(边界域样本)。最后调用Filter算子,计算xi与xj的距离dis,如果存在xi与xj的距离dis小于2*ri则,在以xi与xj为半径的邻域范围内根据样本合成公式合成k个新样本(小类),格式为<类别=1,[新特征集]>添加到NewSimpleSet(新集合,用来存储新和成的样本)其中xj为距离xi最近的样本点,否则将样本xi在训练集中删除。
图5中,紫色圆形区域表示小类样本x的邻域(邻域半径为r),显然,x邻域内的样本集合{y1,y2,y3,y4,y5,y6}全是大类,即N0(δ(x))=6,N1(δ(x))=0。根据公式(7)和(8),可知f(x)=-6/7,β=-5/6,即f(x)<β,故x被当作噪声点划分到负域中。分两种情况处理,情况(1):将x的邻域半径放大一倍为2r(x的新邻域见最外层圆形区域),可知新邻域内包含小类样本点{x1,x2,x3,x4},在这种情况下,本文认为样本点x是非噪声点,需要在x的邻域内进行采样;采样的方法如下:找到距离x最近的样本y3,在以d=Δ(x,y3)为邻域半径的邻域内合成k(k=5)个新的小类样本点{z1,z2,z3,z4,z5};情况(2):将x的邻域半径放大一倍为2r,x在新邻域内仍没有同类样本,则将x从训练集中删除。通过以上处理过程,一方面可保障新合成样本的数量,另一方面,可有效删除训练样本集中的噪声数据。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。
Claims (9)
1.一种基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,包括以下步骤:
1)、在数据预处理阶段,获取并存储需要采样的样本集,对整个样本使用Spark进行数据变换,得到归一化的LabeledPoint格式<lable:[features]>的样本集,然后分成训练集和测试集;
2)、训练集划分阶段,采用Spark进行数据变化,求样本间的距离,确定领域半径,最后根据邻域三支决策模型将整个训练集中的样本划分成正域样本,边界域样本和负域样本;
3)、采样阶段,首先利用Spark进行数据变换得到边界域中每个小类样本的K近邻,然后插值采样,对负域中的样本通过放大负域中小类样本的邻域半径,筛选非噪声点,进行过采样处理操作:对每个非噪声点找到距离其最近的小类样本,在以两者距离为邻域半径的邻域内合成K个新的小类样本点;
4)、训练验证阶段,选取训练器进行训练验证,对采样前和采样后的实验结果对比。
2.根据权利要求1所述的基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,所述步骤1)获取并存储需要采样的样本集,对整个样本使用Spark进行数据变换,得到归一化的LabeledPoint格式<lable:[features]>的样本集,然后分成训练集和测试集具体包括步骤:
首先创建SparkContext对象,然后用它的textFile(URL)函数创建分布式数据集RDD,一旦创建完成,这个分布式数据集就可以被并行操作;其次,将每个样本集转化成LabeledPoint形式,调用Map算子将<特征1,特征2,…,类别>形式的样本转化成<类别:[特征集]>形式,然后采用最大值,最小值进行归一化,最后调用zipWithIndex算子,给每一条样本做一个标号,将创建的RDD转化成<标号,<标签,[特征集]>>形式,最后根据标号将整合数据及划分成10份,随机选取一份当做测试集,剩余九份当做训练集,即采用十折交叉验证。
3.根据权利要求2所述的基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,所述步骤2)中采用Spark进行数据变化,求样本间的距离具体包括:首先,定义广播变量bc,即利用SparkContext对象的BroadCast算子将RDD作为广播变量广播到每个计算节点上;然后RDD调用mapPartitions算子,计算每个Partition上的样本与广播变量中样本全集的欧式距离,将RDD转化成<xi的标号,xi类别,xj的标号,xj的类别,xi与xj的距离dis,[xi的特征集],[xj的特征集]>格式。
4.根据权利要求3所述的基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,所述步骤2)确定领域半径包括:首先对转化后的RDD,调用GroupBy算子,对所有样本根据xi标号进行聚合,其次,将聚集的结果调用SortBy算子,根据xi与xj的距离大小排序,然后调用mapPartitions算子,对每个Partition中的样本根据邻域半径的公式,计算样本xi的邻域半径ri,然后调用Filter算子,选择xj与xi的距离小于ri的样本xj,距离小于ri代表该样本xj落在了xi的邻域范围内;经过一系列的转化将RDD转化成<xi的标号,xi的类别,xj的标号,xj的类别,邻域半径ri,[xi的特征集],[xj的特征集]>格式,其中xj属于xi的邻域范围内,调用Persist算子将得到的RDD持久化内存中。
5.根据权利要求4所述的基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,步骤2)中根据邻域三支决策模型将整个训练集中的样本划分成正域样本,边界域样本和负域样本包括以下步骤:首先根据数据转化后的RDD,根据xi的标号,调用GroupBy算子,对样本根据xi的标号进行聚合,然后将聚集的结果调用MapPartitions算子,统计每个Partition中xi样本的邻域半径范围内大类样本个数和小类样本的个数,从而根据邻域三支决策模型确定正域样本,边界域样本和负域样本;经过一系列的转换,RDD转化为<xi的标号,xi的类别,xi的类型(1:代表正域,2:代表边界域,3:代表负域)>形式,定义为type_RDD,至此训练集的划分结束,调用Persist算子将得到的RDD持久化内存中。
6.根据权利要求5所述的基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,步骤3)利用Spark进行数据变换得到边界域中每个小类样本的K近邻,然后插值采样包括步骤:对转化后的type_RDD,调用Filter算子,选择xi的类别为小类样本1且xi的类型为边界域样本2的记录,定义为新的BND_RDD;然后与持久化在内存中的RDD进行join操作,筛选得到属于边界域的小类样本,然后调用Map算子,最终得到<xi的标号,[xi的特征集],[xi的特征集]>,其中xi和xj的类别均为小类1,且xi的类型为边界域样本2,最后调用Map算子根据样本合成公式合成k个新小类样本,合适为<类别=1,[新特征集]>添加到用来存储新合成的样本NewSimpleSet。
7.根据权利要求5所述的基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,步骤3)对负域中的样本通过放大负域中小类样本的邻域半径,筛选非噪声点,进行有选择过采样包括步骤:对转化后的type_RDD,调用Filter算子,选择xi的类别为小类样本1且xi的类型为负域样本3的记录,定义为新的NEG_RDD;然后与持久化在内存中的RDD进行join操作,筛选得到属于负域的小类样本;然后调用Map算子,最终得到<xi的标号,ri,[xi的特征集],[xj的特征集]>,其中xi和xj的类别均为小类1,且xi的类型为边界域样本3,最后调用Filter算子,计算xi与xj的距离dis,如果存在xi与xj的距离dis小于2*ri则,在以xi与y为半径的邻域范围内根据样本合成公式合成k个新小类样本,格式为<类别=1,[新特征集]>添加到NewSimpleSet,其中y为距离xi最近的样本点,否则将样本xi在训练集中删除。
8.根据权利要求7所述的基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,选取训练器进行训练验证,将训练集和NewSimpleSet合并为新的训练集,选择C4.5、CART、SVM在内的分类器进行验证。
9.根据权利要求1所述的基于Spark大数据平台的三支决策不平衡数据过采样方法,其特征在于,所述步骤1)存储需要采样的样本集由HDFS自动进行分布式存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611244051.4A CN106599935B (zh) | 2016-12-29 | 2016-12-29 | 基于Spark大数据平台的三支决策不平衡数据过采样方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611244051.4A CN106599935B (zh) | 2016-12-29 | 2016-12-29 | 基于Spark大数据平台的三支决策不平衡数据过采样方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106599935A true CN106599935A (zh) | 2017-04-26 |
CN106599935B CN106599935B (zh) | 2019-07-19 |
Family
ID=58604909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611244051.4A Active CN106599935B (zh) | 2016-12-29 | 2016-12-29 | 基于Spark大数据平台的三支决策不平衡数据过采样方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106599935B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845731A (zh) * | 2017-02-20 | 2017-06-13 | 重庆邮电大学 | 一种基于多模型融合的潜在换机用户发现方法 |
CN107273916A (zh) * | 2017-05-22 | 2017-10-20 | 上海大学 | 隐写算法未知的信息隐藏检测方法 |
CN108154172A (zh) * | 2017-12-21 | 2018-06-12 | 重庆邮电大学 | 基于三支决策的图像识别方法 |
WO2018209693A1 (zh) * | 2017-05-19 | 2018-11-22 | 深圳大学 | 一种基于ssd和hdd混合存储系统的rdd持久化方法 |
CN109145937A (zh) * | 2018-06-25 | 2019-01-04 | 北京达佳互联信息技术有限公司 | 一种模型训练的方法及装置 |
CN109214587A (zh) * | 2018-09-27 | 2019-01-15 | 重庆智万家科技有限公司 | 一种基于三支决策的商品需求预测与物流分仓规划方法 |
CN109325808A (zh) * | 2018-09-27 | 2019-02-12 | 重庆智万家科技有限公司 | 基于Spark大数据平台的商品需求预测与物流分仓规划方法 |
CN109582706A (zh) * | 2018-11-14 | 2019-04-05 | 重庆邮电大学 | 基于Spark大数据平台的邻域密度不平衡数据混合采样方法 |
CN109820479A (zh) * | 2019-01-08 | 2019-05-31 | 西北大学 | 一种荧光分子断层成像可行域优化方法 |
CN110598798A (zh) * | 2019-09-20 | 2019-12-20 | 胡燕祝 | 一种基于VFDT-Boosting-3WD的数据分类方法 |
CN110766237A (zh) * | 2019-10-31 | 2020-02-07 | 内蒙古工业大学 | 基于spgapso-svm算法的公交客流量预测方法及系统 |
CN112418522A (zh) * | 2020-11-23 | 2021-02-26 | 重庆邮电大学 | 一种基于三支集成预测模型的工业加热炉钢温预测方法 |
CN113240007A (zh) * | 2021-05-14 | 2021-08-10 | 西北工业大学 | 一种基于三支决策的目标特征选择方法 |
CN113327131A (zh) * | 2021-06-03 | 2021-08-31 | 太原理工大学 | 基于三支决策理论进行特征交互选择的点击率预估模型 |
CN114546989A (zh) * | 2022-02-22 | 2022-05-27 | 重庆长安汽车股份有限公司 | 一种Hbase增量数据迁移系统、方法及存储介质 |
CN113240007B (zh) * | 2021-05-14 | 2024-05-14 | 西北工业大学 | 一种基于三支决策的目标特征选择方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102700A (zh) * | 2014-07-04 | 2014-10-15 | 华南理工大学 | 一种面向因特网不平衡应用流的分类方法 |
CN105930856A (zh) * | 2016-03-23 | 2016-09-07 | 深圳市颐通科技有限公司 | 基于改进dbscan-smote算法的分类方法 |
US9491012B1 (en) * | 2015-06-19 | 2016-11-08 | Texas Instruments Incorporated | Direct over-sampled pulse shaping circuit with flip flops and LUT |
-
2016
- 2016-12-29 CN CN201611244051.4A patent/CN106599935B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102700A (zh) * | 2014-07-04 | 2014-10-15 | 华南理工大学 | 一种面向因特网不平衡应用流的分类方法 |
US9491012B1 (en) * | 2015-06-19 | 2016-11-08 | Texas Instruments Incorporated | Direct over-sampled pulse shaping circuit with flip flops and LUT |
CN105930856A (zh) * | 2016-03-23 | 2016-09-07 | 深圳市颐通科技有限公司 | 基于改进dbscan-smote算法的分类方法 |
Non-Patent Citations (1)
Title |
---|
李航: "基于粗糙集的不平衡数据采样方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845731A (zh) * | 2017-02-20 | 2017-06-13 | 重庆邮电大学 | 一种基于多模型融合的潜在换机用户发现方法 |
WO2018209693A1 (zh) * | 2017-05-19 | 2018-11-22 | 深圳大学 | 一种基于ssd和hdd混合存储系统的rdd持久化方法 |
CN107273916B (zh) * | 2017-05-22 | 2020-10-16 | 上海大学 | 隐写算法未知的信息隐藏检测方法 |
CN107273916A (zh) * | 2017-05-22 | 2017-10-20 | 上海大学 | 隐写算法未知的信息隐藏检测方法 |
CN108154172A (zh) * | 2017-12-21 | 2018-06-12 | 重庆邮电大学 | 基于三支决策的图像识别方法 |
CN108154172B (zh) * | 2017-12-21 | 2018-10-26 | 重庆邮电大学 | 基于三支决策的图像识别方法 |
CN109145937A (zh) * | 2018-06-25 | 2019-01-04 | 北京达佳互联信息技术有限公司 | 一种模型训练的方法及装置 |
CN109214587A (zh) * | 2018-09-27 | 2019-01-15 | 重庆智万家科技有限公司 | 一种基于三支决策的商品需求预测与物流分仓规划方法 |
CN109325808A (zh) * | 2018-09-27 | 2019-02-12 | 重庆智万家科技有限公司 | 基于Spark大数据平台的商品需求预测与物流分仓规划方法 |
CN109582706A (zh) * | 2018-11-14 | 2019-04-05 | 重庆邮电大学 | 基于Spark大数据平台的邻域密度不平衡数据混合采样方法 |
CN109820479B (zh) * | 2019-01-08 | 2021-08-27 | 西北大学 | 一种荧光分子断层成像可行域优化方法 |
CN109820479A (zh) * | 2019-01-08 | 2019-05-31 | 西北大学 | 一种荧光分子断层成像可行域优化方法 |
CN110598798A (zh) * | 2019-09-20 | 2019-12-20 | 胡燕祝 | 一种基于VFDT-Boosting-3WD的数据分类方法 |
CN110766237A (zh) * | 2019-10-31 | 2020-02-07 | 内蒙古工业大学 | 基于spgapso-svm算法的公交客流量预测方法及系统 |
CN112418522A (zh) * | 2020-11-23 | 2021-02-26 | 重庆邮电大学 | 一种基于三支集成预测模型的工业加热炉钢温预测方法 |
CN113240007A (zh) * | 2021-05-14 | 2021-08-10 | 西北工业大学 | 一种基于三支决策的目标特征选择方法 |
CN113240007B (zh) * | 2021-05-14 | 2024-05-14 | 西北工业大学 | 一种基于三支决策的目标特征选择方法 |
CN113327131A (zh) * | 2021-06-03 | 2021-08-31 | 太原理工大学 | 基于三支决策理论进行特征交互选择的点击率预估模型 |
CN114546989A (zh) * | 2022-02-22 | 2022-05-27 | 重庆长安汽车股份有限公司 | 一种Hbase增量数据迁移系统、方法及存储介质 |
CN114546989B (zh) * | 2022-02-22 | 2024-04-12 | 重庆长安汽车股份有限公司 | 一种Hbase增量数据迁移系统、方法及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106599935B (zh) | 2019-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106599935B (zh) | 基于Spark大数据平台的三支决策不平衡数据过采样方法 | |
Du et al. | CUS-heterogeneous ensemble-based financial distress prediction for imbalanced dataset with ensemble feature selection | |
CN107103171B (zh) | 机器学习模型的建模方法及装置 | |
CN107766929B (zh) | 模型分析方法及装置 | |
Zhang et al. | An explainable artificial intelligence approach for financial distress prediction | |
CN105320961A (zh) | 基于卷积神经网络和支持向量机的手写数字识别方法 | |
CN110599336B (zh) | 一种金融产品购买预测方法及系统 | |
CN111444394A (zh) | 获取实体间关系表达的方法、系统和设备、广告召回系统 | |
CN107330464A (zh) | 数据处理方法和装置 | |
CN107273387A (zh) | 面向高维和不平衡数据分类的集成 | |
CN107767262A (zh) | 信息处理方法、装置和计算机可读存储介质 | |
CN109086412A (zh) | 一种基于自适应加权Bagging-GBDT的不平衡数据分类方法 | |
CN109598430B (zh) | 配送范围生成方法、装置、电子设备和存储介质 | |
CN109582706A (zh) | 基于Spark大数据平台的邻域密度不平衡数据混合采样方法 | |
CN102750286A (zh) | 一种处理缺失数据的新型决策树分类器方法 | |
CN110930038A (zh) | 一种贷款需求识别方法、装置、终端及存储介质 | |
CN112700324A (zh) | 基于CatBoost与受限玻尔兹曼机结合的用户借贷违约预测方法 | |
CN111815432A (zh) | 金融服务风险预测方法及装置 | |
CN104850868A (zh) | 一种基于k-means和神经网络聚类的客户细分方法 | |
CN107742131A (zh) | 金融资产分类方法和装置 | |
CN111798061A (zh) | 基于区块链和云计算的金融数据预测系统 | |
CN111062806A (zh) | 个人金融信用风险评价方法、系统和存储介质 | |
Wang et al. | Public–private partnership contract failure prediction using example-dependent cost-sensitive models | |
Zhu et al. | Loan default prediction based on convolutional neural network and LightGBM | |
Kašćelan et al. | Hybrid support vector machine rule extraction method for discovering the preferences of stock market investors: Evidence from Montenegro |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |