基于密度函数的高斯朴素贝叶斯集成算法研究

2021-06-11 09:36张留决
计算机时代 2021年3期

张留决

摘  要: 本文针对数据挖掘算法中的分类问题,针对连续性数据,提出了基于密度函数的高斯朴素贝叶斯集成算法。首先假设各特征值符合正态分布,计算出各特征值的均值和方差,也就是正态分布的密度函数。然后通过定义的密度函数,计算出其概率密度函数,利用高斯朴素贝叶斯分类器得到预测结果。在对某公司实际分类问题中应用该算法,结果表明该算法的预测能力有很大程度的提升。

关键词: 密度函数; 高斯朴素贝叶斯; 集成算法; 预测能力

中图分类号:TP391          文献标识码:A     文章编号:1006-8228(2021)03-20-03

Research on Gaussian Naive Bayes ensemble algorithm based on density function

Zhang Liujue

(Fuzhou University, Fuzhou, Fujian 35000, China)

Abstract: Aiming at the classification problem in data mining algorithms, this paper proposes a Gaussian Naive Bayes ensemble algorithm based on density function for continuous data. First, assuming that each eigenvalues conforms to a normal distribution, calculate the mean and variance of each eigenvalues, which is the density function of the normal distribution. Then calculate the probability density function through the defined density function, and use the Gaussian Naive Bayes classifier to get the prediction result. The algorithm is applied to an actual classification problem of a company, and the result show that the predictive ability of the algorithm has been greatly improved.

Key words: density function; Gaussian Naive Bayes; ensemble algorithm; predictive ability

0 引言

近年來,随着数据科学的不断进步,朴素贝叶斯算法(Native Bayes,NB)被工业企业、互联网行业、证券分析领域、电子信息产业等广泛应用。朴素贝叶斯算法在数据挖掘领域得到广泛应用,此算法属于监督学习,主要用于解决算法中的分类问题。由于该算法在使用时先要假设变量(特征)值之间是相互独立的,这在一定程度上影响了该算法运用的随机性。

本文针对多个变量都是连续的问题,利用密度函数,计算出各特征的均值和方差,也就是正态分布的密度函数,然后计算出概率密度函数,融合代入高斯朴素贝叶斯分类器实现算法,实现了较好的预测效果。

1 基于密度函数的高斯朴素贝叶斯集成

1.1 贝叶斯算法的理论基础

1.1.1 条件概率

已知事件B发生的条件下,事件A发生的概率称为事件A关于事件B的条件概率,记为[P(A|B)]。对于任意事件A和B,若[P(B)≠0],则“在事件B发生的条件下事件A发生的条件概率”记为[P(A|B)],定义为:

[PA|B=P(AB)P(B)] ⑴

1.1.2 全概率公式

若事件组(A1,A2,…,An)满足以下关系。

⑴ [Ai(i=1,2,…,n)]两两互斥,且[PAi>0]。

⑵ [i=1nAi=Ω,Ω]为样本空间。

则称事件组(A1,A2,…,An)是样本空间[Ω]的一个划分[1]。

全概率公式:设(A1,A2,…,An)是样本空间[Ω]的一个划分,B为任一事件,则有:

[P(B)=i=1nPAiP(B|Ai)]  ⑵

1.1.3 贝叶斯公式

设(A1,A2,…,An)是样本空间[Ω]的一个划分,B为任一事件,则有:

[PAi|B=P(AiB)P(B)=P(Ai)P(B|Ai)j=1nPAjP(B|Aj)] ⑶

式⑶中的[Ai]常被视为导致实验结果B发生的“原因”,[P(Ai)=(i=1,2,…,n)]表示各种原因的可能性大小,故称先验概率[2];[PAi|B (i=1,2,…,n)]则反映当实验产生了结果B之后再对各种原因概率的新认识,故称后验概率[3]。

1.2 朴素贝叶斯分类

定义贝叶斯分类准则如下:

如果[p(c1|x,y)>p(c2|x,y)],那么属于类别[c1];如果[p(c1|x,y)

朴素贝叶斯分类器实现过程相对比较简单,这里给出离散型数据集的朴素贝叶斯分类器的实现原理。对于样本量为[m]、维度为[d]、类别数目为[c]的训练集[D={(xi,yi)}],其中[yi∈{c1,c2,…,cc},xi=(xi1,xi2,…,xid)](i=1,2,…,m)。给定一个待测样本x[=(x1,x2,…,xd)],判断其类别标签[xlabel∈{c1,c2,…,cc}]。

⑴ 计算每个类别的概率

[P(Y=cj),j=1,2,…,c] ⑷

⑵ 计算每个类别下每个特征的条件概率

[P(X=xi|Y=cj)] [⑸]

⑶ 计算

[argmaxP(Y=cj)i=1dP(X=xi|Y=cj)] ⑹

⑷ 計算值最大的类别[cj]值就是待测样本的类别标签。

1.3 密度函数集成

针对连续性变量,在实际应用上大体有两种方法可以处理,一是对数据进行离散化处理,以区间的形式进行划分;二是利用密度函数,计算出各特征值的均值和方差,也就是正态分布的密度函数。其具体算法如下:

⑴ 计算出各特征值的均值。

[X=x1+x2+…+xnn=1ni=1nxi] ⑺

⑵ 计算出各特征值的方差。

[δ2=(x1-X)2+(x2-X)2+(x3-X)2+…+(xn-X)2n] ⑻

⑶ 得到概率密度函数。

[fx=12πσ2e(-(x-μ)22σ2)] ⑼

1.4 高斯朴素贝叶斯集成密度函数算法

为了在采用朴素贝叶斯分类算法提升预测模型精度的同时,进一步提高模型泛化能力,本文融入了密度函数和高斯朴素贝叶斯的思想,提出了基于密度函数的高斯朴素贝叶斯集成算法,具体流程如图1所示。

算法具体步骤如下。

⑴ 根据具体应用场景提取特征属性,并针对每个特征值进行一定程度的划分,然后由人工对一部分待分类项进行详细分类,最后形成训练样本集合。

⑵ 利用密度函数与高斯朴素贝叶斯算法集成,计算每个类别在训练样本中的出现概率及每个特征属性划分对每个类别的条件概率估计,并记录结果。这一阶段由Python程序完成。

⑶ 使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系,这一阶段主要也是由Python程序完成[4]。

2 实验结果与分析

本文数据集样本量采集于某制浆造纸企业生产现场的数据,该数据集包括:反应温度、反应压力、浆浓度、氧化白液用量、O2用量、NaOH用量、浆粘度、气体压力、水用量、电用量等共32个特征。对数据进行分类后,所得预测结果精度对比如图2所示。

由此结果可知,通过对连续性变量数据利用密度函数模型计算,并经高斯朴素贝叶斯分类器集成后,整体的预测能力得到了提升。

3 结束语

本文通过Python语言中sklearn模块中的高斯朴素贝叶斯(Gaussian Naive Bayes)集成密度函数实现算法。除此之外,还有多项式朴素贝叶斯(Multinomial Naive Bayes)、伯努利朴素贝叶斯(Bernoulli Naive Bayes)算法[5]。不管采用哪种算法,其运行结果都会有一定的差异,我们要根据实际情况来对算法予以改进,并使预测结果更符合生产经营的需要。

参考文献(References):

[1] 周志华.机器学习[M].清华大学出版社,2015.

[2] 范明,范宏建.数据挖掘导论[M].人民邮电出版社,2006.

[3] 于祥雨,李旭静等.人工智能算法与实践论[M].清华大学出版社,2020.

[4] 郑秋生,夏敏捷.Python项目案例开发从入门到实践[M].清华大学出版社,2019.

[5] 蔡天新.数学与人类文明[M].浙江大学出版社,2008.