一种数据分类方法及相关设备
技术领域
本申请实施例涉及数据处理领域,特别涉及一种数据分类方法及相关设备。
背景技术
对于类似收支预测的一系列业务,需要划分类别来达到区分不同类别的目的,例如:在预测用户收入时,需要将进行类别划分以便于区分群体。
现有技术是根据人为根据经验将样本划分成不同区间,并按照不同区间进行分类。
发明内容
本申请实施例提供了一种数据分类方法及相关设备,能够自动对样本数据集合进行分类。
本申请实施例第一方面提供了一种数据分类方法,包括:
服务器获取样本数据集合,所述样本数据集合含有n个样本数据;
所述服务器利用聚类算法对所述样本数据集合进行聚类处理,得到m个簇,n和m为大于等于2的正整数,且m小于等于n;
所述服务器按照所述簇对待处理数据进行分类。
优选的,所述服务器获取样本数据集合之后,所述服务器利用聚类算法对所述样本数据集合进行聚类处理之前,所述方法还包括:
所述服务器利用卡方检验或柯尔莫哥洛夫-斯摩洛夫KS检验判断所述样本数据集合是否均匀分布;
若否,触发所述服务器利用聚类算法对待处理数据集合进行聚类处理的步骤。
优选的,所述服务器获取样本数据集合之后,所述服务器利用聚类算法对所述样本数据集合进行聚类处理之前,所述方法还包括:
所述服务器计算所述样本数据集合的霍普金斯统计量;
所述服务器判断所述H是否小于第一预设阈值;
若是,表明所述样本数据集合是高度倾斜的,即非均匀分布,触发所述服务器利用聚类算法对所述样本数据集合进行聚类处理的步骤。
优选的,所述服务器计算所述样本数据集合的霍普金斯统计量包括:
所述服务器通过如下方式计算所述样本数据集合的霍普金斯统计量;
均匀地从所述样本数据集合中抽取n个点p1,p2,...pn,对每个点pi(1≤i≤n),找出pi在所述样本数据集合中的最近邻,并令xi为pi与它在所述样本数据集合中的最近邻之间的距离:
均匀地从所述样本数据集合中抽取n个点q1,q2,...qn,对每个点qi(1≤i≤n),找出qi在所述样本数据集合中的最近邻,并令yi为qi与它在所述样本数据集合中的最近邻之间的距离:
计算所述样本数据集合的霍普金斯统计量H:
优选的,所述聚类算法为K-means算法或者DBSCAN算法。
优选的,所述服务器利用聚类算法对所述样本数据集合进行聚类处理之后,所述方法还包括:
所述服务器计算每个簇的轮廓系数,得到n个轮廓系数:
所述服务器计算所述n个轮廓系数的平均轮廓系数;
所述服务器判断所述平均轮廓系数是否大于第二预设阈值;
若是,触发所述服务器按照所述簇对待处理数据进行分类;
若否,所述服务器优化所述算法的参数;
所述服务器利用优化后的算法对所述样本数据集合进行聚类处理,得到m个优化簇;
触发所述服务器计算所述优化簇的轮廓系数。
优选的,所述服务器计算每个簇的轮廓系数包括:
所述服务器通过如下方式计算每个簇的轮廓系数,得到n个轮廓系数:
所述o为所述簇内的任一个样本数据,所述S(o)为所述轮廓系数,a(o)为o与o所属簇内其他样本数据之间的平均距离,b(o)为o到不包含o的所有簇的最小平均距离。
优选的,所述服务器利用聚类算法对所述样本数据集合进行聚类处理之前,所述方法还包括:
当所述样本数据集合中的样本数据为一维数据,且所述聚类算法只支持二维数据处理时,所述服务器将所述样本数据从一维数据转化为二维数据,所述一维数据为线上的一个坐标值,所述二维数据为平面中的两个坐标值;
触发所述服务器按照所述区间对待处理样本集合进行分类的步骤。
本申请实施例第二方面提供了一种服务器,包括:
获取单元,用于获取样本数据集合,所述样本数据集合含有n个样本数据;
处理单元,用于利用聚类算法对所述样本数据集合进行聚类处理,得到m个簇,n和m为大于等于2的正整数,且m小于等于n;
分类单元,用于按照所述簇对待处理数据进行分类。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品在计算机上执行时,使得所述计算机执行如权利要求1至8中任一项所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例通过服务器利用聚类算法对样本数据集合进行区间划分,再按照该区间进行分类,能够自动对样本数据集合进行分类。
附图说明
图1为本申请实施例中数据分类方法一个流程示意图;
图2为本申请实施例中数据分类方法另一流程示意图;
图3为本申请实施例中服务器一个结构示意图。
具体实施方式
本申请实施例提供了一种数据分类方法及相关设备,用于自动对样本数据集合进行分类。
为方便理解,下面对本申请实施例中的数据分类方法进行描述,请参阅图1,本申请实施例中的数据分类方法一个实施例,包括:
101、服务器获取样本数据集合;
本申请实施例中,服务器可以采集训练样本,将训练样本中的样本数据提取出来,得到样本数据集合;服务器也可以接收其他设备发送的样本数据,服务器记录得到集合,可以理解的是,在实际应用中,服务器还可以通过其他方式获取样本集合,例如:服务器直接接收其他设备发送的样本数据集合,具体此处不做限定。
为了方便描述,下面结合表1表示的样本数据集合进行示意性说明:
表1
用户 |
月收入 |
用户 |
月收入 |
用户 |
月收入 |
用户1 |
4800 |
用户10 |
5900 |
用19 |
6900 |
用户2 |
5000 |
用户11 |
6000 |
用户20 |
7000 |
用户3 |
5000 |
用户12 |
6000 |
用户21 |
7000 |
用户4 |
5000 |
用户13 |
6100 |
用户22 |
7000 |
用户5 |
5050 |
用户14 |
6100 |
用户23 |
7000 |
用户6 |
5100 |
用户15 |
6150 |
用户24 |
7000 |
用户7 |
5500 |
用户16 |
6200 |
用户25 |
7100 |
用户8 |
5700 |
用户17 |
6800 |
|
|
用户9 |
5800 |
用户18 |
6900 |
|
|
例如:从某app取得如表1所示的25个用户的月收入样本,可以理解的是,表1仅以25个用户的月收入做示意性说明,用户的数量可以根据需要设置,样本数据可以是用户的月收入数据,也可以步行数据,可以理解的是,在实际应用中样本数据还可以是其他数据,例如样本数据可以是各个城市的人口数量,具体此处不做限定。
102、服务器利用聚类算法对样本数据集合进行聚类处理,得到m个簇;
本申请实施例中,聚类算法可以是K均值聚类算法(k-means clusteringalgorithm,K-means)算法,也可以是具有噪声的基于密度的聚类方法(density-basedspatial clustering of applications with noise,DBSCAN)算法,可以理解的是,在实际应用中,聚类算法还可以是其他算法,例如:利用层次方法的平衡迭代规约和聚类(balanced iterative reducing and clustering using hierarchies,BIRCH)算法,具体这里不做限定。
本申请实施例中样本数据集合中的样本数据可以是一维数据,也可以是多维数据,具体此处不做限定。
下面针对一维数据和多维数据分别进行描述:
一、样本数据集合中的样本数据为一维数据;
一维数据为线上的一个坐标值,如表1所示。
本申请实施例以聚类算法是K-means算法为例进行示意性说明:
K-means算法主要包括以下三个步骤:
1、随机选择m个簇的中心点;
m的选择一般是按照实际需求进行决定,或在实现算法时直接给定m值,以表1中的样本数据为例,选择m=3。
随机选择m个簇的中心点,例如表1中,先随机选取三个中心点:5800、6900和7100。
2、距离的度量;
本申请实施例中,仅以距离的度量方法是欧氏距离方法进行示意性说明,可以理解的是,距离的度量方法可以是闵克夫斯基距离方法,也可以是欧氏距离方法,在实际应用中,距离的度量方法还可以是其他方法,例如:距离的度量方法可以是曼哈顿距离,具体此处不做限定。
欧式距离(euclidean distance)公式如下:
例如表1中的样本数据为例,选取三个中心点:5000、6000和7000之后,计算样本数据集合中的其他样本数据分别到三个中心点的距离,详见表2:
表2
计算每个样本数据距离这三个中心点的距离,取他们中的最小值,即样本数据与三个中心点的距离最小,表示该样本数据与哪个中心点较近,换句话说,该样本数据与哪个中心点近,就应该划分到这个中心点所在的簇,从表2中可以看出,4800至5100离5000近,距离范围在200内,5500-6200离6000近,距离范围在500内,6800-7000离7000近距离范围在200内。由于5500与两个中心点的距离相同,所以5500可以划分到以5000为中心的簇,也可以划分到以6000为中心的簇,为了方便后面描述,这里将5500划分到以5000为中心的簇。
将样本数据集合输入K-means算法后得到每个样本数据的类别编号为0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1。可以看到488-5100被标记为类别0,5500-6200被标记为类别2,6800-7100被标记为类别1,自然将样本数据集合划分成不同的区间,如表3所示。
表3
3、更新簇的中心点。
移动中心点到聚类的平均位置处,然后循环以上步骤,直到分配过程不再变化,那么算法结束。
二、样本数据集合中的样本数据为多维数据;
由于有些算法工具软件中不支持一维数据聚类,所以聚类之前,需要将样本数据转化成多维数据,多维数据为多维度空间中的多个坐标值。
本申请实施例中,仅以多维数据为二维数据进行示意性说明,可以理解的是,多维数据可以是二维数据,也可以是三维数据,在实际应用中,多维数据还可以是四维数据,具体此处不做限定。
聚类前,可以先将表1中的一维数据加上另一个统一的坐标值,如表4所示,可以理解的是表4中的纵坐标为1只是举例,具体数值这里不做限定。
表4
若是利用K-means算法聚类多维数据,多维数据的聚类计算如一维数据的聚类计算类似,只是计算距离时用到的公式如下:
设样本数据集合中的两个样本数据的坐标分别是(xn,yn)和(xm,ym)则这两点的距离为:
其余与本步骤中的聚类一维数据计算类似,这里不做赘述。
103、服务器按照簇对待处理数据进行分类。
从步骤102及表3可知:488-5100被标记为类别0,5500-6200被标记为类别2,6800-7100被标记为类别1,自然将样本数据集合划分成不同的区间,以这个类别标签为样本搭建多分类模型。
将待处理数据输入该多分类模型中,进行分类。
本申请实施例中,待处理数据可以是样本数据,即只分类样本数据集合,也可以不是样本集合数据,即生成模型后,分类其他数据,具体这里不做限定。
本申请实施例通过服务器利用聚类算法对样本数据集合进行区间划分,再按照该区间进行分类,能够自动对样本数据集合进行分类。
请参阅图2,本申请实施例中的数据分类方法另一实施例,包括:
201、服务器获取样本数据集合;
本实施例中的步骤201与前述图1所示实施例中的步骤101类似,此处不做赘述。
202、服务器判断样本数据集合是否均匀分布,若是,执行步骤208,若否,执行步骤203;
本申请实施例中仅以服务器用霍普金斯统计量的方法进行示意性说明,可以理解的是,服务器判断样本数据集合是否均匀分布有多种方式,可以是利用霍普金斯统计量,也可以是利用卡方检验,在实际应用中,还可以是其他方法,例如柯尔莫哥洛夫-斯摩洛夫KS检验,具体这里不做限定。
下面对服务器用霍普金斯统计量的方法判断样本数据集合是否均匀分布进行描述,步骤如下:
1、均匀地从样本数据集合中抽取n个点p1,p2,...pn,对每个点pi(1≤i≤n),找出pi在样本数据集合中的最近邻,并令xi为pi与它在样本数据集合中的最近邻之间的距离:
2、均匀地从样本数据集合中抽取n个点q1,q2,...qn,对每个点qi(1≤i≤n),找出qi在样本数据集合中的最近邻,并令yi为qi与它在述样本数据集合中的最近邻之间的距离:
3、计算样本数据集合的霍普金斯统计量H:
如果样本数据集合是均匀分布的,那么
与
会很接近,因而H大约为0.5,当样本数据集合高度倾斜时:
远大于
因而H接近0,或
远大于
因而H接近1,所以当霍普金斯统计量大于0.5小于1或大于0小于1时,可以认定该样本数据集合是非均匀分布的。
需要说明的是,由于抽样的随机性,每次计算的H值可能会不同,因此实际操作是应当多次计算H值,根据H值的分布概率最终确定H的取值。
203、服务器利用聚类算法对样本数据集合进行聚类数理,得到m个簇;
本实施例中的步骤203与前述图1所示实施例中的步骤102类似,此处不做赘述。
204、服务器评估聚类效果是否大于第二预设阈值,若是,执行步骤205,若否执行步骤206;
本申请实施例中,仅以服务器利用轮廓系数评估聚类效果进行示意性说明,可以理解的是,服务器可以利用轮廓系数评估聚类效果,也可以利用戴维森堡丁指数(davies-bouldin index,DBI)评估聚类效果,在实际应用中,服务器还可以利用其他指标评估聚类效果,例如杰卡德系数(jaccard coefficient,JC)评估聚类效果,具体此处不做限定。
下面对服务器用轮廓系数的方法评估聚类效果进行描述,步骤如下:
对于n个样本数据的样本数据集合D,假设D被划分成m个簇C1,C2,C3,……,Cm,对于每个样本数据o属于该样本数据集合,且1≤o≤m。
1、计算o与o所属的簇的其他对象之间的平均距离a(o);
例如表5中的聚类结果所示,如计算4800与4800-5100这个簇中所有样本数据的距离,计算平均距离。用其他样本数据计算a(o)类似于表5所示。
表5
其他样本数据的a(o)计算方法如上所述,这里不在详细描述,计算出来每个o到o所在簇中的样本数据的平均距离a(o),结果如表6所示。
表6
o |
a(o) |
o |
a(o) |
o |
a(o) |
4800 |
230 |
5900 |
205.5556 |
6900 |
100 |
5000 |
70 |
6000 |
183.333 |
7000 |
62.5 |
5000 |
70 |
6000 |
183.333 |
7000 |
62.5 |
5000 |
70 |
6100 |
205.5556 |
7000 |
62.5 |
5050 |
90 |
6100 |
205.5556 |
7000 |
62.5 |
5100 |
130 |
6150 |
238.8889 |
7000 |
62.5 |
5500 |
494.4444 |
6200 |
283.3333 |
7100 |
150 |
5700 |
316.6667 |
6800 |
187.5 |
|
|
5800 |
250 |
6900 |
100 |
|
|
2、计算o到不属于o的所有簇的最小平均距离b(o);
为了方便描述,将三个簇分别进行的定义:
第一簇:4800-5100;第二簇:5500-6200;第三簇:6800-7100。
例如表7中的聚类结果所示,计算4800与不属于4800所在簇的所有样本数据的距离,计算最小平均距离。
表7
其他样本数据的b(o)计算方法如上所述,这里不在详细描述,计算出来每个o到不属于o的所有簇中的样本数据的平均距离b(o),结果如表8所示。
表8
o |
b(o) |
o |
b(o) |
o |
b(o) |
4800 |
1145 |
5900 |
908 |
6900 |
955 |
5000 |
945 |
6000 |
1008 |
7000 |
1055 |
5000 |
945 |
6000 |
1008 |
7000 |
1055 |
5000 |
945 |
6100 |
1108 |
7000 |
1055 |
5050 |
895 |
6100 |
1108 |
7000 |
1055 |
5100 |
845 |
6150 |
1158 |
7000 |
1055 |
5500 |
508 |
6200 |
1208 |
7100 |
1155 |
5700 |
708 |
6800 |
855 |
|
|
5800 |
808 |
6900 |
955 |
|
|
3、计算o的轮廓系数;
如表5和表7所示:o为488时,a(o)=230,b(o)=1145,因此:
S(o)=(1145-230)/1145=0.7991。
4、计算所有对象的轮廓系数,计算其平均值。
其他样本数据根据表6和表8所示的其他样本数据的a(o)和b(o)计算S(o),计算方法如上述计算o为4800的方法类似,这里不在详细描述,计算出每个样本数据o的轮廓系数S(o),结果如表9所示。
表9
计算出所有样本数据的轮廓系数后,计算平均轮廓系数如表9中平均轮廓系数所示,平均轮廓系数为0.8135。
平均轮廓系数范围在-1和1之间,当平均轮廓系数大于第二预设阈值时,即平均轮廓系数大于0时,表示聚类效果好,当轮廓系数值为负时,表明聚类效果非常糟糕,当平均轮廓系数接近1时,表示聚类效果越好,如表9所示,平均轮廓系数为0.8315,接近于1,表示聚类效果好。
假设平均轮廓系数为负时,表示聚类效果糟糕,执行步骤206。
假设聚类算法后得到的聚类效果出现重叠的情况,表示聚类效果糟糕,如表10所示,执行步骤206。
表10
205、服务器按照簇对待处理数据进行分类;
本实施例中的步骤205与前述图1所示实施例中的步骤103类似,此处不做赘述。
206、服务器优化聚类算法的参数;
服务器将聚类算法的参数,用随机搜索的方式,独立重复试验若干次,选取最优的结果。
207、服务器利用优化后的聚类算法对样本数据集合进行聚类处理,得到m个簇,执行步骤204;
本实施例中的步骤207与前述图1所示实施例中的步骤102类似,此处不做赘述。
208、执行其他流程。
本实施例中,执行其他流程可以是提醒用户进行手动划分,也可以是其他流程,具体这里不做限定。
本申请实施例通过服务器先判断样本数据集合是否均匀分布,若非均匀分布,服务器利用聚类算法对样本数据集合进行区间划分,服务器评估聚类效果,若评估聚类效果好,按照该区间进行分类,若评估聚类效果不好,优化后再进行聚类处理,能够自动对样本数据集合进行择优分类。
上面对本申请实施例中的数据分类方法进行了描述,下面对本申请实施例中的服务器进行描述,请参阅图3,本申请实施例中服务器一个实施例包括:
获取单元301,用于获取样本数据集合,该样本数据集合含有n个样本数据;
处理单元302,用于利用聚类算法对该样本数据集合进行聚类处理,得到m个簇,n和m为大于等于2的正整数,且m小于等于n;
分类单元303,用于按照该簇对待处理数据进行分类。
本实施例中,服务器中各单元所执行的操作与前述图1和图2所示实施例中描述的类似,此处不再赘述。
本申请实施例通过处理单元利用聚类算法对样本数据集合进行区间划分,分类单元再按照该区间进行分类,能够自动对样本数据集合进行分类。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。