一种数据处理方法和系统
技术领域
本申请涉及网络技术,特别涉及一种数据处理方法和系统。
背景技术
随着大数据技术的发展,可以应用海量数据分析技术,为企业的经营活动挖掘更有价值的参考信息。例如,可以根据某次营销活动得到的海量营销数据,通过数据分析确定某个目标群体的特征参数,从而可以根据该特征参数制定更有针对性的营销方案。对海量数据集的特征重要性的计算,是海量数据分析中的其中一种,通过计算特征重要性的度量值,确定重要性更高的特征作为能够区分不同用户群体的显著性特征,使得可以据此了解不同用户群体的特点。相关技术中,在海量数据中计算特征重要性时,通常采用HIVE(HIVE是基于Hadoop的一个数据仓库工具)进行计算,由于HIVE底层采用MapReduce的计算框架,导致在千万级别数据量上,至少需要数十分钟才能得到特征重要性结果。
发明内容
有鉴于此,本申请提供一种数据处理方法和系统,以提高对海量数据集的特征重要性的计算效率。
具体地,本申请是通过如下技术方案实现的:
第一方面,提供一种数据处理系统,所述数据处理系统包括:
前端子系统,用于接收待分析的多个数据集的数据集标识、以及待分析的至少一个特征的特征标识,所述特征位于所述数据集中;
应用服务子系统,用于根据所述数据集标识生成用于获取所述数据集的数据查询逻辑,并将所述数据查询逻辑和特征标识传输至分析型存储子系统;还用于根据所述分析型存储子系统得到的特征的统计值,计算特征的重要性;
基于内存的分析型存储子系统,用于根据所述应用服务子系统生成的数据查询逻辑,获取所述多个数据集的数据,并分别在所述多个数据集中,并行进行所述特征标识对应的特征的统计,得到所述特征的统计值。
第二方面,提供一种数据处理方法,包括:
接收待分析的多个数据集的数据集标识、以及待分析的至少一个特征的特征标识,所述特征位于所述数据集中;
根据所述数据集标识生成用于获取所述数据集的数据查询逻辑;
通过基于内存的分析型存储子系统根据所述数据查询逻辑获取所述多个数据集的数据,并分别在所述多个数据集中,并行进行所述特征标识对应的特征的统计,得到所述特征的统计值;
根据所述特征的统计值,计算特征的重要性。
本申请提供的数据处理方法和系统,通过分析型存储子系统例如ADS,并行对多个用户群的多个特征进行查询和统计,这种方式相对于传统的HIVE计算方式来看,由于分析型存储子系统是基于内存的存储分析系统,数据的存储以及处理都在内存中进行,相比于HIVE的MapReduce处理方式来看,MapReduce架构的数据存储在磁盘,并且在各个计算节点之间配合处理数据时,需要从磁盘读取数据和在节点之间传输数据,而本申请的系统中,基于内存的存储分析系统相比HIVE节省了节点之间的数据读取I/O及传输时间,从而提高了对海量数据集的特征重要性的计算效率。
附图说明
图1是本申请一示例性实施例示出的一种数据处理系统的系统架构;
图2是本申请一示例性实施例示出的一种特征重要性的计算架构;
图3是本申请一示例性实施例示出的对多个特征的IV值进行可视化展示的示意图;
图4是本申请一示例性实施例示出的特征的饼图显示示意图;
图5是本申请一示例性实施例示出的特征的柱状图显示示意图;
图6是本申请一示例性实施例示出的一种数据处理方法的流程图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请实施例提供了一种数据处理系统,该系统可以应用于海量数据分析,该海量数据可以是千万级别甚至更高级别的数据量。图1示例了该数据处理系统的系统架构,如图1所示,该系统中可以包括:前端子系统11、应用服务子系统12和基于内存的分析型存储子系统13。
其中,待分析的海量数据可以存储于分析型存储子系统13,例如,该海量数据可以是一次营销活动中收集到的营销数据,并且,该海量数据是存储在分析型存储子系统13的内存中。分析型存储子系统13不仅具有存储数据的功能,并且还可以执行对数据的统计功能,例如,在本次营销活动收集的海量营销数据中,统计北京用户的数量。该分析型存储子系统13可以是ADS(Analysis Database Service,分析数据库服务)存储引擎。
分析型存储子系统13可以做简单的数据统计工作,但是对于特征重要性的具体计算,仍然需要通过应用服务子系统12来执行。例如,在计算海量数据集的特征重要性时,如果用信息熵作为特征重要性的度量值,可以是由应用服务子系统12根据分析型存储子系统13所做的统计数据基础上计算得到。
而前端子系统11可以作为面向该数据处理系统的用户的门户,例如,可以运行在PC上,向用户展示人机交互界面,比如,WEB页面,以供用户可以通过该交互界面选择待分析的海量数据集、或者数据集中待计算的特征等。
前端子系统11与应用服务子系统12之间,应用服务子系统12和分析型存储子系统13之间都可以进行通信,执行信息传输。例如,应用服务子系统12可以运行于服务器集群,作为前端子系统11的设备可以通过网络将获取到的用户选择的数据集或特征的标识等信息,传输至应用服务子系统12。又例如,分析型存储子系统13还可以将统计得到的基础数据通过网络传输至应用服务子系统12,以使得应用服务子系统12根据该数据做进一步计算。
图1所示的数据处理系统,在本申请实施例中,可以用于计算海量数据集的特征重要性。通过一个例子来说明“特征重要性的计算”:假设在一次营销活动中,向一万个用户发布了某条营销广告信息,其中,四千人对该广告信息给予了回应,比如,点击了广告中的链接或者购买了广告商品;另外六千人未给予任何回应,可能是这些人对该广告信息没有兴趣。并且,在本次营销活动中,假设可以获得的营销数据包括:给予回应的用户的所在地(如,北京、上海)、性别、年龄;以及未给予回应的用户的所在地、性别、年龄。
在本例子中,假设数据分析师期望根据获得的营销数据进行数据分析,以了解具备哪些特征的用户更容易对本次营销广告感兴趣,而哪些特征的用户对本营销不感兴趣,并据此使得后续的营销更有针对性。为了实现该目的,可以将给予回应的用户称为用户群A,将未给予回应的用户称为用户群B,并分析哪些特征可以用于显著区分这两个用户群。
例如,假设“性别”是可以用于区分这两个用户群的特征,因为用户群A中的用户全部是男性,用户群B中的用户全部是女性,那么,“性别”这个特征就是重要性最高的特征。又例如,假设计算“所在地”、“年龄”这两个特征的重要性,并且“所在地”的重要性更高,那也就是说,用户群A和用户群B可以依据“所在地”进行显著区分,比如,用户群A的用户大多是北京用户,而用户群B的用户多是上海用户。
特征重要性的量化度量,可以有多种方式,例如,可以计算特征的信息熵作为特征重要性的度量,或者,还可以计算特征的IV值,等。可以比较多个特征的信息熵或IV值的大小,并将这些数值进行排序,来确定对应的特征在区分不同用户群方面的重要性。例如,如果一个特征F1的IV值是0.659,另一个特征F2的IV值是0.523,那么特征F1更能显著区分不同用户群。
如下结合图2,说明如何利用图1所示的数据处理系统,来进行特征重要性的计算。其中,图2中还示例了在计算特征重要性时,各个子系统中可以包括的不同功能模块,以及这些功能模块之间的关联。
前端子系统11可以包括:用户群选择模块111和特征选择模块112。其中,在分析型存储子系统13中可以存储有很多个用户群的数据,本次海量数据分析的用户(例如,数据分析师)可以通过前端子系统11的人机交互页面,选择待区分的多个数据集的数据集标识,例如,用户群选择模块111可以显示多个供用户选择的用户群,每个用户群对应的用户数据即可称为一个数据集,用于表示该数据集中的数据的标识即数据集标识。比如,“营销活动Y1在时间段T1内的响应用户”是一个用户群,“营销活动Y1在时间段T1内未响应的用户”是另一个用户群,用户可以选择想要区分哪些用户群,比如,这些用户群的用户具有什么特点。
在对数据集进行分析时,本例子中,可以是计算数据集中包括的一些特征的重要性。特征选择模块112可以提供用户选择待分析的至少一个特征的接口,例如,数据集中包括的特征可以为“城市”、“性别”、“年龄”等,用户同样可以通过特征选择模块112选择对哪些特征进行特征重要性计算。比如,对于用户在用户群选择模块111选择的两个用户群,可以分析“城市”、“性别”这两个特征的重要性,判断哪个特征更能够显著区分该两个用户群。
用户在前端子系统11选择的多个用户群和至少一个特征,可以传输至应用服务子系统12,该应用服务子系统12可以包括查询数据逻辑模块121和特征传递模块122。其中,查询数据逻辑模块121可以根据前端子系统11获取的数据集标识生成用于获取对应数据集的数据查询逻辑,比如,用户在前端子系统11选择了用户群A,那么查询数据逻辑模块121可以生成从分析型存储子系统13中查询获取用户群A的数据的逻辑,例如,select user_idfrom<table 1>where key=value,在该例子中,table 1可以是存储了包括多个城市的用户的数据表,在该表中查询用户群A,比如,如果用户群A是位于上海这个城市的用户,那么可以在查询时,将上述逻辑语句中的key=value,设置为key=城市,value=上海。
查询数据逻辑模块121可以将数据查询逻辑传输至分析型存储子系统13,以使得分析型存储子系统13据此获取对应的数据集,特征传递模块122可以将特征标识传输至分析型存储子系统13,以使得分析型存储子系统13据此分析数据集中的特定特征。请继续参见图2,用户在前端子系统11选择的待分析特征可以为多个,图2以其中一个特征X为例进行说明。假设用户选择了三个用户群A、B和C,应用服务子系统12的查询数据逻辑模块121生成了用于查询这三个用户群的查询数据逻辑,分析型存储子系统13根据该逻辑可以获取到用户群A的数据、用户群B的数据和用户群C的数据。
在获取到用户群的数据之后,可以进行特征X的分析,分析型存储子系统13可以分别在每个用户群中进行特征X的枚举值统计。举例如下:对于“城市”这个特征,可以包括“北京”、“无锡”、“南京”、“哈尔滨”等多个枚举值,在某个用户群中,假设该用户群中有四千个用户,可以统计这些用户中,分别对应上述各个枚举值(例如,“无锡”)的用户的数量。比如,经过统计可以得到,“无锡”的用户有593名,“南京”的用户有2314名。分析型存储子系统13可以并行计算各个用户群的特征。
在另一个例子中,当用户选择的特征有多个时,分析型存储子系统13可以并行计算多个特征的统计值。例如,假设用户选择了两个特征,包括特征X和特征Y,那么,分析型存储子系统13可以并行进行特征X和特征Y的计算,对于每个特征,都可以按照上述的方式分别统计该特征在各个用户群中的枚举值数量。
应用服务子系统12中的重要性计算模块123,可以根据分析型存储子系统13计算得到的对于特征X的统计值,计算该特征X的重要性。本例子中,还可以根据所分析的数据集的数量,选择不同的重要性计算方法。例如,当所分析的数据集的数量为两个时,可以根据分析型存储子系统得到的特征的统计值,计算特征的IV值,作为特征重要性的度量;当数据集的数量多于两个时,可以根据分析型存储子系统得到的特征的统计值,计算特征的信息熵,作为特征重要性的度量。
例如,如下的表1示例了其中一个特征“城市”的统计值。
表1特征统计
城市 |
用户群A |
用户群B |
北京 |
32901 |
120931 |
上海 |
12934 |
98201 |
无锡 |
5937 |
12831 |
南京 |
6501 |
12945 |
杭州 |
2314 |
98311 |
哈尔滨 |
9360 |
37281 |
福建 |
1123 |
3921 |
汇总 |
71070 |
384421 |
根据如上的表1,示例对于该特征“城市”的重要性计算方式:在表1中,用户群的数量是两个,可以认为是二分类问题,本实施例可以采用IV值作为特征重要性的度量,即计算特征“城市”的IV值。公式如下:
在如上的公式中,IVi中表示特征“城市”中的每一个枚举值的IV值,例如,对于“北京”计算一个对应的IVi,对于“福建”计算一个对应的IVi,等。IV即将各个枚举值的IV值汇总加和,得到特征“城市”的IV值。#Bi表示用户群A中的其中一个枚举值的统计值,例如,“北京”对应的统计值32901;#BT表示用户群A对应的汇总值,例如,表1中的汇总值71070。#Gi表示用户群B中的其中一个枚举值的统计值,例如,“北京”对应的统计值120931;#GT表示用户群B对应的汇总值,例如,表1中的汇总值384421。
示例部分计算过程:
对于“北京”:
#Bi=32901,#BT=71070,#Gi=120931,#GT=384421,根据该参数,进行IVi的计算,得到“北京”对应的IVi=0.057。
对于“福建”:
#Bi=1123,#BT=71070,#Gi=3921,#GT=384421,根据该参数,进行IVi的计算,得到“福建”对应的IVi=0.002。
同样的方式,可以计算其他枚举值对应的IVi,最终汇总加和得到特征“城市”的IV=0.659。
在另一个例子中,如果用户群的数量多于两个(例如,包括用户群A、用户群B和用户群C),可以认为是多分类问题,本实施例可以采用信息熵作为特征重要性的度量。公式如下:
在如上的信息熵计算公式中,H
i是每一个枚举值对应的信息熵,例如,“北京”对应的信息熵,H是对所有枚举值信息熵汇总加和,例如,特征“城市”对应的信息熵,并且,共有k个枚举值,比如,在表1中,“城市”特征下共有“北京”、“无锡”等七个枚举值,k=7。而
是某一个用户群中的某个枚举值的统计数据,i表示某个枚举值,t表示某个用户群,例如,当t=1时,表示用户群A,
表示用户群A中的各个枚举值统计数据,“北京”对应的32901,“无锡”对应的5937等。当t=2时,表示用户群B,不再详举,公式中的T表示用户群的数目,当有三个用户群时,T=3。具体的计算将不再举例,按照公式计算信息熵即可。
应用服务子系统12的重要性计算模块123,可以按照上述计算方式计算出各个特征的重要性,例如,该重要性可以用IV值或信息熵度量。并且,在特征的数量为多个时,可以并行计算该多个特征的重要性。在得到各个特征的重要性度量数值后,可以根据重要性度量值(IV或信息熵)对这些特征进行排序,以找到对区分不同用户群起到较为显著作用的特征,从而实现对数据集分析的目的。
为了更方便数据分析师查看数据分析的结果,本实施例还可以通过前端子系统11,将计算特征的重要性的结果数据或者过程数据,进行可视化图形展示。如图2所示,前端子系统11的可视化展示模块113,可以进行上述的结果展示。图3示例了一种对多个特征的IV值进行可视化展示的示意图,该图中示出了四个特征a、b、c和d的IV值,并且根据IV值进行了排序,可以看到,特征a的IV值最大,是用于区分不同用户群的最重要的特征。
此外,本申请中还可以对计算特征重要性时的过程数据进行展示,比如,参见表1的特征统计的数据,其中的各个枚举值对应的统计值,例如,“北京”在用户群A的统计值32901,其实是后续的IV值计算的基础数据,将根据该统计值计算IV值。本实施例中,还可以根据这些统计值,将各个用户群中,不同枚举值所占的比例分布用图表的形式表示出来。
例如,参见图4的示例,该图4以饼图的形式示例了对于“城市”特征,不同枚举值所占的分布比例。其中,该图是以两个用户群为例,并且,仅示例了其中两个特征值的分布,这两个特征值包括“城市”和“性别”。
以特征“城市”为例,该饼图可以包括内圈41和外圈42,可以用内圈41来显示特征中的各个枚举值在某个用户群中的分布比例,比如,在用户群A中,“北京”的用户占比46%,“上海”的用户占比18%。外圈42可以用于表示该特征中的各个枚举值的全局分布,即在两个用户群的所有数据中所占的比例,比如,由用户群A和用户群B的数据总和来看,“北京”的用户占比50%,“上海”的用户占比30%。其他饼图例子不再详述,图4仅示例了一部分,实际应用中可以有更多用户群或者更多特征。通过这种饼图的展示方式,数据分析师可以更清楚的了解海量数据中的分布情况。
在又一个例子中,特征值也可能是连续值,例如,“年龄”这个特征值,1岁至40岁是一个连续的区间,本例子可以将连续值进行离散化,分别统计各个离散化区间对应的统计值。比如,可以将1岁至40岁划分为五个区间:(1,10]、(10,20]、(20,30]、(30,40],并可以分别统计各个年龄区间的人数。
在进行可视化展示时,还可以通过柱状图进行显示。例如,图5示例了一种柱状图的显示方式,在某个用户群中,白色的柱状表示各个枚举值(即某个年龄区间的用户)在本用户群中的占比,灰色的柱状可以表示各枚举值的全局分布,比如在全部用户群中的占比。如图5所示,例如,以某一个用户群为例,该用户群中的(1,10]这个区间内的用户,在本用户群中占比18%,在全局占比为52%。
本申请提供的数据处理系统,在进行海量数据集的特征重要性计算时,可以通过分析型存储子系统例如ADS,并行对多个用户群的多个特征进行查询和统计,这种方式相对于传统的HIVE计算方式来看,由于分析型存储子系统是基于内存的存储分析系统,数据的存储以及处理都在内存中进行,相比于HIVE的MapReduce处理方式来看,MapReduce架构的数据存储在磁盘,并且在各个计算节点之间配合处理数据时,需要从磁盘读取数据和在节点之间传输数据,而本申请的系统中,基于内存的存储分析系统相比HIVE节省了节点之间的数据读取I/O及传输时间,从而提高了数据处理效率;并且,本申请的数据处理系统,可以并行计算多个特征,相对于HIVE方式中的单次计算单个特征,也显著提高了特征重要性的计算速度。
图6示例了一种数据处理方法,该方法可以由上述例子提供的数据处理系统执行,可以应用于海量数据集的特征重要性的计算。该方法的详细步骤可以参见上面的各个实施例,不再详述。
601、接收待分析的多个数据集的数据集标识、以及待分析的至少一个特征的特征标识,所述特征位于数据集中。
602、根据数据集标识生成用于获取数据集的数据查询逻辑。
603、通过分析型存储子系统根据数据查询逻辑获取多个数据集的数据,并分别在多个数据集中,并行进行特征标识对应的特征的统计,得到特征的统计值;
604、根据特征的统计值,计算特征的重要性。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。