一种基于朴素贝叶斯的银行卡批量业务预测方法
2017-11-29罗鸣中国银联股份有限公司上海201201
罗鸣(中国银联股份有限公司, 上海 201201)
一种基于朴素贝叶斯的银行卡批量业务预测方法
罗鸣
(中国银联股份有限公司, 上海 201201)
目前银行卡批量业务已成为一种比较常见且重要的金融产品,其交易来源于收单机构以结算文件的形式批量上送,对后台处理系统的性能要求较高。基于朴素贝叶斯理论提出了银行卡批量业务日最大TPS(每秒交易笔数)的预测方法。利用生产数据在测试环境的回放,得到测试环境最大TPS与生产实际值的回归关系,进而在测试环境拟合得到大量样本数据作为训练集,并取其中的20%数据作为测试集,实际验证了该方法具有准确度高、鲁棒性强的特点。
朴素贝叶斯; 银行卡批量业务; 每秒交易笔数最大值预测
0 引言
银行卡批量业务产品可以实现企事业单位从自身单位结算账户向持卡人指定银行卡账户进行款项划付,用与实现商户账户向其用户之间不同账户的跨行资金实时划转。目前银联批量业务可广泛应用于各行业,包括但不限于保险赔付及分红、农资产品收购、薪资发放、财税库银退税等领域。
批量业务来源主要为收单机构的交易上送,通过银行卡转接系统发送到发卡机构,批量交易存在批处理时短时TPS(每秒交易笔数)较大的特点,对于银行卡交易转接系统、发卡机构处理系统均存在短时交易压力增大,从而对系统处理性能提出了一定要求,故银行卡批量业务最大TPS预测尤为必要。通过对最大TPS的预测,提出对系统的可预期的性能需求,从而指导系统进行架构设计。
朴素贝叶斯方法作为数据挖掘领域的经典算法,在不同的领域有着广泛的应用场景[1-3]。本文中利用生产数据在测试环境的回放,得到测试环境最大TPS与生产实际值的回归关系,进而在测试环境拟合得到大量样本数据作为训练集,并取其中的20%数据作为测试集,使用朴素贝叶斯方法进行特征项提取,进而求出不同类别出现的概率,取出现概率最大的类别作为TPS预测结果。
1 系统概述
本系统实现包括
(1)样本获取:系统中采用机构每日上送文件明细数作为贝叶斯概率计算中的特征项。输出类别即为每日生产系统上批量应用达到的最大TPS值。为了提高预测的准确性,需要获取大量样本值。为此样本获取模块中采用了生产数据回放方法,即将生产数据获取到测试环境进行回放测试,获取不同明细数文件上传情况下的最大TPS值,并与生产实际TPS值进行线性拟合,从而得到大量样本数据。
(2)样本文件制作:取特征项为每日机构及大商户上送明细数,类别为每日最大TPS值。获取最近一年的数据作为样本。
(3)系统训练及验证:基于Python语言进行代码编写。取样本数据的80%作为训练集,20%作为测试集,使用朴素贝叶斯方法进行条件概率计算,进而获得TPS预测值,通过测试集数据验证预测精度[5-7]。
2 基于朴素贝叶斯的预测系统实现及验证
2.1 朴素贝叶斯定理
朴素贝叶斯方法[4]即在满足指定的特征项条件下,求不同类别出现的概率,然后选择出现概率最大的类别作为预测结果。
根据贝叶斯定理,对一个分类问题,给定样本特征X,样本属于类别Y的概率是:
朴素贝叶斯分类的正式定义如下:
(1)设:X={a1,a2,…,am}为一个待分类项,而每个a为X的一个特征属性。
(2)有类别集合
Y={y1,y2,…,yn}
(3)计算
P(y1|x),P(y2|x),…,P(yn|x)
(4)如果
P(yk|x)=max{P(y1|x),P(y2|x),…,P(yn|x)}则x∈yk
2.2 预测系统样本获取
本预测系统中设X={a1,a2,…,am}为一个特征项集合,表示收单机构1上传明细数a1、收单机构2上传明细数a2……收单机构m上传明细数am。这里收单机构取每日上送交易笔数为200笔以上的机构,因为每日上送200笔以下的收单机构交易对预测结果总体影响可忽略。
设Y={y1,y2,…,yn}为每日最大TPS值,即将每日最大TPS作为分类项。为概率计算的准确性,这里对yn取范围值,即100-150作为类别1、150-200作为类别2、200-250作为类别3等。
另外为了预测结果的准确,需要足够大的数据作为贝叶斯条件概率计算的训练样本。为此这里样本的获取采用生产数据在测试环境的回放得到,即获取每日生产上各机构上传文件明细数据后在测试环境进行回放测试,在测试环境模拟各个机构的文件上传动作,这里模拟上传的各个时间段及明细数与生产完全保持一致,测试得到最大每日TPS值,然后与生产TPS值进行拟合。通过在测试环境进行大量模拟测试来获取大量样本数据,这样得到的样本数据可以涵盖目前生产已存在的及生产上未发生的场景,使得我们的预测结果更准确。
2.3 条件概率计算
这里我们推导条件概率计算过程。为得到每日最大TPS预测值,即目标是计算P(yk|x)=max{P(y1|x),P(y2|x),…,P(yn|x)}
以计算P(y1|x)为例:
根据2.1节朴素贝叶斯的基本定理,可以得到式(1)
(1)
而每个收单机构每日上送的批量交易明细数是相互独立的,故得到式(2)。
P(X|y1)P(y1)=P(a1|y1)P(a2|y1)…P(am|y1)P(y1)
(2)
am为前述的X的特征向量值。
P(a1|y1)表示某日达到最大TPS值时,收单机构1上送批量交易明细数为a1的概率。
因特征值服从高斯分布即式(3)。
(3)
因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即可得到需要的估计值。把计算结果代入(2)式中即得到P(X|y1)的值,又因(1)式计算各个特征值的条件概率时分母均相同,所以只要计算出P(X|y1)P(y1),P(X|y2)P(y2),…P(X|yn)P(yn)中的最大值,由此得到的最大值即为朴素贝叶斯预测概率。
2.4 预测系统样本训练及验证
这里取样本数据的80%作为训练集进行概率计算,20%作为测试集进行结果验证。鉴于Python语言已广泛应用与科学计算领域,且提供了丰富的科学计算第三方包。这里我们基于Python的sklearn包进行代码编写,实现基于高斯朴素贝叶斯方法的条件概率计算及预测。为了检查测试集数据预测精度是否准确,为此使用Python sklearn包的classification_report模块生成预测报告:
PrecisionRecallF1⁃Score100⁃1501.001.001.00150⁃2000.811.000.89200⁃2501.001.001.00250⁃3001.000.850.92…………………………………………950⁃10001.000.950.97
其中第一列为预测值即当日最大TPS。Precision表示正确预测的比例,Recall表示正确识别的比例或称为真阳性率,F1-Score为precision和recall的调和平均数。实验证明,使用朴素贝叶斯的预测方法精度满足需要。
3 总结
本文使用基于朴素贝叶斯理论提出了一种银行卡批量业务预测方法,通过对系统最大TPS值的预测,为应用系统架构设计提供了性能参数需求依据。
文中介绍了预测系统的功能及实现过程,重点描述了基于朴素贝叶斯的概率计算过程,通过样本训练及测试数据的验证,证明该方法是确实有效的。
[1] Simonetta Balsamo,Antinisca Di Marco,Paola Inverardi,el a1.Model—Based Performance Prediction in Software Development:A Survey[J].IEEE Transactions on Software Engineering,2004,30(5):295-310.
[2] Pedro Domingos,Miehael Pazzzani.On the Optimality of the Simple Bayesian Classifier under Zero:One Loss[J].Mach ine Learning,1997(29):103-130.
[3] 李静梅,孙丽华.一种文本处理中的朴素贝叶斯分类器[J].哈尔滨工程大学学报,2003,24(1)
[4] Friedman N.Bayesian network classifiers[J].Machine Learning,1997,29(2.3):131-163.
[5] 林士敏,田凤占,陆玉昌.用于数据挖掘的贝叶斯分类器研究.计算机科学,2000,27(10):73-76.
[6] 张延松,焦敏,王占伟,等. 海量数据分析的One-size-fits-all OLAP 技术[J]. 计算机学报,2011,34(10):1936-1946.
[7] 罗福星,刘卫国. 一种朴素贝叶斯分类增量学习算法[J].微计算机应用,2008,29(6):107-112.
ABankCardBatchServicePredictionMethodBasedonNativeBayesClassification
Luo Ming
(China UnionPay Co Ltd, Shanghai 201201, China)
The bank card batch service has become a more commom and important financial product. The transaction comes from the acquire institution in the form of batch delivery. So high performance requirements for background processing system are proposed. This paper proposes a bank card batch service max TPS (tranction per second) prediction method. We use the production data to be played back in the test environment. And the training set is collected by the test result, twenty percent of the data is used to be the training set. Native Bayes method is introduced to train the classifier. Experiments show that our method has the characteristics of high accuracy and strong robustness.
Native bayes classification; Bank card batch service; Prediction of max TPS (tranction per second)
罗鸣(1982-),男,硕士研究生,工程师,研究方向:运维自动化,数据分析.
1007-757X(2017)11-0079-02
TP311
A
2017.04.21)