本发明属于机器学习技术领域,具体涉及一种基于cfs_kl(correlation-basedfeatureselection_kullback-leibler)的新型贝叶斯加权方法。
背景技术:
贝叶斯算法作为机器学习的十大经典算法之一,在众多领域都有很多应用,且都表现出非常不错的效果,例如,根据电子邮件的标题和内容判断其是否为垃圾邮件。但由于学习最优的贝叶斯分类器就如同学习贝叶斯网络一样,是个np难问题,所以学习朴素贝叶斯分类器就得到了众多学者的青睐,而朴素贝叶斯往往基于一个简单但却不现实的假设:训练数据的特征之间相互独立,这个强条件在现实生活中是很难达到的,甚至在现实中逻辑上已经表明特征之间相互独立的数据集,实际的数据中并没有那么强的独立性,这就极大的限制了朴素贝叶斯的分类效果。于是,许多学者开始尝试缓解朴素贝叶斯要求特征之间相互独立的条件。
技术实现要素:
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于cfs_kl的新型贝叶斯加权方法,缓解朴素贝叶斯特征之间相互独立的条件,进而提高了朴素贝叶斯的分类精度。
本发明采用以下技术方案:
一种基于cfs_kl的新型贝叶斯加权方法,包括以下步骤:
s1、分析nmap指纹库中的操作系统识别规则,拆解nmap指纹库,使用指纹库中的指纹名称作为模型的标记数据,指纹名称下的响应序列标志位构成训练数据;
s2、对训练数据进行封箱预处理操作;
s3、使用kl散度计算属性与类之间的关联度作为每个属性的权值;
s4、使用特征选择方法选出42个维度;
s5、使用cfs选出的维度修正kl散度计算出的权重;
s6、使用加权贝叶斯算法进行训练;
s7、取步骤s1的训练数据,通过封箱操作将向量输入训练好的指纹模型,通过基于cfs_kl的加权贝叶斯算法,计算出每条流量的最大后验概率,完成模拟数据测试;
s8、通过向目标网段发包的方式,采集真实流量,将真实流量输入指纹模型,预测结果;计算真实流量的测试精度。
具体的,步骤s1中,以fingerprint行代表的是该指纹所属的操作系统,以此作为分类的类标记,将每个响应序列加上标志位作为特征进行拆分,在选择维度时删除seq.sp特征,得到118个特征;按照规则集拆分指纹库,对于标志位取值sp=0-5拆解成sp=0,sp=1到sp=5;对于标志位取值gcd=b8|114|170|1cc拆解成gcd=b8,gcd=114,并映射成118列的数字向量;按照蒙特卡洛方法,从拆分出的数据集中抽出90万数据作为训练数据。
进一步的,蒙特卡洛方法具体为:
分别获取响应序列的全集,当全集数量大于500时,从全集随机挑选4个样本;当全集数量大于10小于等于500时,从全集随机挑选2个样本;当全集数量小于10时,随机挑选1个样本,获得90万数据作为模拟测试集。
具体的,步骤s2中,在训练数据中,对于每一个维度,取所有值,去重,按照从小到大排序,将所有数据平均分散到40个区间内,取每个区间的首尾,将区间内的数据全部映射成另外一个数字。
具体的,步骤s3中,第i个属性ai对应的权值mi为:
其中,p(ai)为第i个属性ai的取值的概率,p(c)为类别c的先验概率,p(c|ai)为第i个属性ai的取值上类别为c的条件概率。
具体的,步骤s4具体为:
s401、输入训练数据集d并进行数据预处理,获得数据集d的特征属性集合a={a1,a2,...an}和类集合属性c={c1,c2...cm},然后对供选择的属性构成的集合selectingset赋初值为特征属性集合a,已选择的属性够成的集合selectedset赋初值为空;
s402、使用
s403、从selectingset中选择相关系数取值最大的那个属性ai,将其从selectingset中剔除,并把它加入到selectedset中,并初始化max(merit(as))为merit(asi);
s404、对selectingset中余下的每一个属性aj(j≠i),根据
s405、对步骤s404求得的各个merit(asj)进行比较并选出最大的子集评估值max(merit(asj)),将其和max(merit(as))进行比较,若max(merit(asj))大于max(merit(as)),此时把aj从selectingset中剔除同时将其加入到selectedset中,并把max(merit(asj))赋值给max(merit(as)),继续步骤s404,若max(merit(asj))不大于max(merit(as)),获得selectedset为所求的最佳属性子集,返回selectedset。
具体的,步骤s5中,维度修正kl散度计算出的权重为:
其中,
具体的,步骤s6中,设输入空间
其中,ajl表示第j个特征的第l个取值,sj代表第j个特征的取值范围,ck表示第k个类别,λ表示拉普拉斯平滑时的参数,n表示训练样本个数;先验概率的贝叶斯估计为:
其中,k代表标记类的个数。
具体的,步骤s8中,朴素贝叶斯分类时,对给定的输入x,通过学习到的模型计算后验概率分布p(y=ck|x=x),将后验概率最大的类作为x的类输出,根据贝叶斯定理计算后验概率,基于cfs_kl加权的贝叶斯算法对朴素贝叶斯算法进行修改,在分类时引入权重概念,最终的最大后验概率对应的类别y为:
其中,ck表示第k个类别,x(j)为第j个特征,x(j)为第j个特征的取值,wj为计算出的第j个特征的权重。
进一步的,带入独立性的后验概率为:
其中,k=1,2,...,k;
朴素贝叶斯分类器为:
与现有技术相比,本发明至少具有以下有益效果:
本发明针对于朴素贝叶斯由于特征间不独立而造成的分类效果不理想的问题,提出了一种新型的属性加权方法,缓解了朴素贝叶斯特征间要求独立的条件,提升了贝叶斯算法的分类效果,并成功的应用于了资产识别领域。
进一步的,nmap拥有丰富的操作系统指纹库nmap_os_db,内部包含上千种已知的指纹特征,拆分nmap指纹库可得到大量的唯一指纹,可为算法提供训练数据,将其转化为向量,以便算法的识别训练。
进一步的,由于某些特征在指纹库的取值范围是上亿的,例如’seq.gcd’,经过映射规则处理后的取值范围为1-3458752002,但观察到实际取值比较分散,所以将数据进行封箱处理,钝化辨识度,提高算法分类准确率。
进一步的,朴素贝叶斯算法要求特征之间保持强独立,而实际情况中,这往往是很难实现的,这也极大的限制了贝叶斯算法的分类精度,使用kl散度给每个维度计算初始权重,缓解维度之间的独立要求,为计算最终权重做准备。
进一步的,使用cfs特征选择方法选出与类别关联度比较大的特征,为计算最终权重做准备。
进一步的,结合cfs选出的与类别关联度大的特征,进一步修正kl计算出的缓解维度独立性的权重,计算出更加准确的最终权重。
进一步的,nb算法作为机器学习的十大算法之一,在许多领域已经表现了很好的分类效果,最重要的是,对于我们的数据来源,由于网络等原因,会有许多缺失值出现,而nb算法天然具有的对于缺失值不敏感的特性,使得nb算法非常适合我们的数据特点,进而表现出较好的分类效果,进一步的我们使用加权后的nb算法,有效的规避了朴素贝叶斯需要特征之间相互独立的弱点,使朴素贝叶斯算法进一步贴近实际问题,提高算法的精确度。
进一步的,采集真实网络流量,输入算法模型,验证算法在真实环境中的效果。
综上所述,本发明通过结合kl散度和cfs特征选择提出一种新的贝叶斯特征权重计算方法,缓解了贝叶斯算法对于特征独立的要求,提高了贝叶斯算法的识别精度,并在操作系统识别场景下验证其效果。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明方法的流程图;
图2为cfs算法的流程图;
图3为本发明算法验证结果在类别上的效果对比图;
图4为本发明算法验证结果在大版本上的效果对比图;
图5为本发明算法验证结果在小版本上的效果对比图。
具体实施方式
本发明一种基于cfs_kl的新型贝叶斯加权方法,包括以下步骤:
s1、数据收集阶段,拆解nmap指纹库,得到训练数据,模拟测试数据;
分析nmap指纹库中的操作系统识别规则,nmap指纹库会发送16个数据包,来对应生成响应序列,每个响应序列会对应一些标志位。nmap的指纹库包含了nmap已知的操作系统对nmap的16个探测包的回应数据包中所包含的该操作系统的指纹信息。因此,使用指纹库中的指纹名称来作为模型的标记数据,指纹名称下的响应序列的标志位来构成训练数据。如下为nmap指纹库的一条指纹:
fingerprintlinux3.10
classlinux|linux|3.x|generalpurpose
cpecde:/o:linux:linux_kernel:3.10auto
seq(sp=100-10a%gcd=1-6%isr=106-110%ti=z%ci=z%ii=i%ts=c)
ops(o1=mffd7st11nw7%o2=mffd7st11nw7%o3=mffd7nnt11nw7%o4=mffd7st11nw7%o5=mffd7st11nw7%o6=mffd7st11)
win(w1=aaaa%w2=aaaa%w3=aaaa%w4=aaaa%w5=aaaa%w6=aaaa)
ecn(r=y%df=y%t=3b-45%tg=40%w=aaaa%o=mffd7nnsnw7%cc=y%q=)
t1(r=y%df=y%t=3b-45%tg=40%s=o%a=s %f=as%rd=0%q=)
t2(r=n)
t3(r=n)
t4(r=y%df=y%t=3b-45%tg=40%w=o%s=a%a=z%f=r%o=%rd=o%q=)
t5(r=y%df=y%t=3b-45%tg=40%w=o%s=z%a=s %f=ar%o=%rd=o%q=)
t6(r=y%df=y%t=3b-45%tg=40%w=o%s=a%a=z%f=r%o=%rd=0%q=)
t7(r=y%df=y%t=3b-45%tg=40%w=o%s=z%a=s %f=ar%o=%rd=0%q=)
u1(df=n%t=3b-45%tg=40%ipl=164%un=o%ripl=g%rid=g%ripck=g%ruck=g%rud=g)
ie(dfi=n%t=3b-45%tg=40%cd=s)
其中,fingerprint行代表的是该指纹所属的操作系统,以此作为分类的类标记,接下来的seq、ops、win、ecn、t1、t2、t3、t4、t5、t6、t7、u1、ie为响应序列,每个响应序列会有后面的标志位,例如:seq的标志位为sp、gcd、isr、ti、ci、ii、ts,将每个响应序列加上他的标志位作为特征,例如:seq.sp、seq.gcd等,这样拆出119个特征。
其中,seq.sp表示tcpisn序列可预测性指数,isn是nmap接收的syn/ack包,包含的32位初始序列号,sp用于预测下一个isn,计算时需要的参数有seq_rates和gcd,其中seq_rates的计算方法为:diff1/两个探针之间经过的时间量(单位:s-0.1)=seq_rates数组,diff1表示对于namp接收的syn/ack包,包含的32位初始序列号(isn),diff1中第一个元素是第一和第二个探测包响应的isn的差异;第二个元素是第二和第三个探测包响应的isn的差异;如果接收了所有6个包,会有5个元素,diff1存放差值。
sp的计算方法为:
如果先前计算的gcd值大于9,则先前计算的seq_rates数组的元素除以该值,获取所得值的阵列的标准偏差,如果值为1或者更小,sp为0;否则计算结果的log2n;
然后将其乘以8,四舍五入到最接近的整数,并存储为sp;由于sp对于gcd逻辑上的强依赖关系,在选择维度时人为的删除seq.sp特征,为了尽量保持朴素贝叶斯维度间独立的条件,得到118个特征;
接下来,按照规则集拆分指纹库,指纹库包含的标志位取值的方法主要有:‘-’和‘|’。对于标志位取值类似于‘sp=0-5’,需要拆解成‘sp=0’,‘sp=1’到‘sp=5’6个取值;对于标志位取值类似于‘gcd=b8|114|170|1cc’,需要拆解成‘gcd=b8’,‘gcd=114’等4个值,并映射成118列的数字向量;
按照蒙特卡洛方法,从拆分出的大量数据集中抽出90万数据作为训练数据,具体做法为:
分别获取响应序列的全集,当全集数量大于500时,从全集随机挑选4个样本;
当全集数量大于10小于等于500时,从全集随机挑选2个样本;
当全集数量小于10时,随机挑选1个样本,从而获得90万数据作为模拟测试集;
为了加大测试样本和训练样本的不同性,在挑选测试集时,用同样的方法,但不从响应序列(例如gcd)而从单独的标志位(例如sp)作为标准衡量,即当单个特征的所有取值集合数量大于15,挑选数量为3,获得样本量为425096的测试集合。
s2、对训练数据进行封箱预处理操作;
由于某些特征在指纹库的取值范围是上亿的,例如'seq.gcd',经过以上处理的取值范围为1-3458752002,但观察到实际取值比较分散,所以将数据进行封箱处理,具体做法为:在训练数据中,对于每一个维度,取所有值,去重,按照从小到大排序,将所有数据平均分散到40个区间内,取每个区间的首尾,将区间内的数据全部映射成另外一个数字。例如:
某维度的取值为:[2,6,22,4,6,1,8,5,3,15,34,25,67,23]
去重排序后:[1,2,3,4,5,6,8,15,22,23,25,34,67]
均分到k个区间内(例如k=3):[1,2,3,4],[5,6,8,15],[22,23,25,34,67]
则该维度上1、2、3、4被映射成1,5、6、8、15被映射成2,22、23、25、34、67被映射成3。
实际测试得知该做法比较适用于实际情况
s3、kl散度计算权重阶段
相对熵,又被称为kullback-leibler散度(kullback-leiblerdivergence)或信息散度(informationdivergence),是两个概率分布(probabilitydistribution)间差异的非对称性度量。
在信息理论中,相对熵等价于两个概率分布的信息熵的差值。本算法中使用kl散度来计算属性与类之间的关联度作为每个属性的权值,以此来缓解朴素贝叶斯要求特征间相互独立的强条件,是一种过滤的属性加权方法,本发明中,第i个属性ai对应的权值wi为:
其中,p(ai)为第i个属性ai的取值的概率,p(c)为类别c的先验概率,p(c|ai)为第i个属性ai的取值上类别为c的条件概率。
s4、使用特征选择方法cfs选择维度
在信息论中,用熵来表示一个随机变量的不确定程度或一个变量包含信息量的大小。假设p(x)表示属性x取值为x的概率,熵h(x)定义为:
另外,条件熵h(x|y)表示在已知y属性的前提下,x属性的熵的大小,用以下公式进行计算,其中,p(x|y)表示当属性y取值为y时属性x取值为x的概率:
为了表示两个属性x和y间相关性的大小,故而引入信息增益的概念。他被定义为属性x的熵与已知属性y的条件熵h(x|y)的差值即属性x的熵的减少量,其计算公式为:
gain=h(x)-h(x|y)=h(x) h(y)-h(y,x)=h(y)-h(y|x)
从上述公式可以看出,在保持熵h(x)不变的情况下,条件熵h(x|y)的取值越大即属性x与属性y之间的相关性越高,此时信息增益gain的取值越小,为了保证就算结果的准确性,防止其向含有较多信息的属性偏移,对信息增益gain的取值进行规格化处理,结合对称不确定方法,通过以下公式将信息增益gain的取值规格化到[0,1],而在cfs算法中,即通过以下公式来计算属性与类属性间相关性的大小以及属性与属性间相关性的大小。
使用cfs算法进行属性选择时,其思想是根据相关性的大小来评价一个属性子集的优良,他以属性间相关性的启发式评价函数为标准来评价属性子集,在这里,将属性集合中每个单独的属性作为度量类属性的一个单一测试,因此,根据合成测试的原理公式,在使用cfs算法进行属性选择时,包含k个属性的属性子集as的评价函数可表示为:
故cfs算法的具体执行步骤为:
s401、输入训练数据集d并进行数据预处理,获得数据集d的特征属性集合a={a1,a2,...an}和类集合属性c={c1,c2...cm},然后对供选择的属性构成的集合selectingset赋初值为特征属性集合a,已选择的属性够成的集合selectedset赋初值为空;
s402、使用公式
s403、从selectingset中选择相关系数取值最大的那个属性ai,将其从selectingset中剔除,并把它加入到selectedset中,并初始化max(merit(as))为merit(asi);
s404、对selectingset中余下的每一个属性aj(j≠i),根据公式
s405、对上步骤中求得的各个merit(asj)进行比较并选出最大的子集评估值max(merit(asj)),将其和max(merit(as))进行比较。若max(merit(asj))大于max(merit(as)),此时把aj从selectingset中剔除同时将其加入到selectedset中,并把max(merit(asj))赋值给max(merit(as)),继续上个步骤,若max(merit(asj))不大于max(merit(as)),此时获得的selectedset即为所求的最佳属性子集,返回selectedset。
具体地,通过cfs方法选出了win.w1、ops.o2、seq.ts、seq.ci、t3.f、ie.t、seq.isr、ecn.o、t7.a、t2.df、seq.gcd、seq.ii、ie.dfi、t3.df、t4.a、win.w3、seq.ss、t3.a、u1.ruck、ecn.q、t1.df、ops.o6、t2.s、u1.ripck、seq.ti、t4.w、t7.q、ie.cd、t3.s、t6.df、t7.t、ecn.cc、ecn.w、t4.q、u1.ipl、ecn.df、t2.a、t3.o、t6.a、t7.s、t5.q、u1.df共42个维度。
s5、使用cfs选出的维度修正kl散度计算出的权重
其中,
s6、使用加权贝叶斯算法进行训练
设输入空间
朴素贝叶斯法通过训练数据集学习联合概率分布p(x,y)。具体地,学习先验概率分布及条件概率分布。
先验概率分布:
p(y=ck)
其中,k=1,2...k;
条件概率分布:
p(x=x|y=ck)=p(x(1)=x(1),...,x(n)=x(n)|y=ck)
其中,k=1,2,...,k。
朴素贝叶斯对条件概率分布坐了条件独立性假设,具体地,条件独立性假设是:
采用贝叶斯估计,具体地,条件概率的贝叶斯估计是:
其中,ajl表示第j个特征的第l个取值,sj代表第j个特征的取值范围,ck表示第k个类别,λ表示拉普拉斯平滑时的参数,常取1,n表示训练样本个数;
先验概率的贝叶斯估计是
其中,k代表标记类的个数。
s7、模拟数据测试阶段
取第一步的40万模拟数据,通过同样的封箱操作,将向量输入训练好的指纹模型,通过基于cfs_kl的加权贝叶斯算法,计算出每条流量的最大后验概率,计算出测试精度等衡量指标。
s8、真实流量测试阶段
通过向目标网段发包的方式,采集真实流量,将真实流量输入指纹模型,预测结果;计算真实流量的测试精度。
朴素贝叶斯分类时,对给定的输入x,通过学习到的模型计算后验概率分布p(y=ck|x=x),将后验概率最大的类作为x的类输出,后验概率计算根据贝叶斯定理进行:
将独立性带入有:
其中,k=1,2,...,k;
于是,朴素贝叶斯分类器可表示为:
注意到,分母对所有ck都是相同的,所以,
基于cfs_kl加权的贝叶斯算法对朴素贝叶斯算法进行修改,为了缓解朴素贝叶斯特征之间相互独立的强特征,在分类时引入权重的概念,条件概率的计算方式有所修改,最终的最大后验概率的计算公式为:
分类出来的结果一般是类别 大版本 小版本的形式,例如:fingerprntlinux3.10,fingerprintwindows7.1,将linux,windows这样的结果称为类别,linux3,windows7称为大版本,linux3.10,windows7.1称为小版本,以此可以在三个层次上计算精度。
连续5天在某网段扫描,得到五批数据,每批有300条流量数据,其中主要包括80条windows类别,127条linux类别,93条vmware类别,且包含多种大小版本,转化向量后输入算法模型,输出结果,计算准确度,得到以下验证效果(横轴为5批数据编号,实线表示cfs_kl加权贝叶斯算法的效果,短虚线表示kl加权贝叶斯算法的效果,长虚线表示朴素贝叶斯算法的效果),图3表示类别层次上的分类效果对比图,图4表示大版本层次上的分类效果对比图,图5表示小版本层次上的分类效果对比图。可以明显看到使用cfs_kl加权贝叶斯算法缓解了朴素贝叶斯特征独立的要求后,在测试的三个层次上,无论是类别、大版本还是小版本都有不同程度的提升,尤其在大小版本上的提升比较明显。表明了本方法的有效性。
综上所述,本发明创造性的将kl(kullback-leibler)散度和cfs的特征选择方法结合在一起,成为一种新的特征加权方式,在缓解朴素贝叶斯“朴素”的特点上也表现了较好的效果,并且成功的应用于操作系统的识别上。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
1.一种基于cfs_kl的新型贝叶斯加权方法,其特征在于,包括以下步骤:
s1、分析nmap指纹库中的操作系统识别规则,拆解nmap指纹库,使用指纹库中的指纹名称作为模型的标记数据,指纹名称下的响应序列标志位构成训练数据;
s2、对训练数据进行封箱预处理操作;
s3、使用kl散度计算属性与类之间的关联度作为每个属性的权值;
s4、使用特征选择方法选出42个维度;
s5、使用cfs选出的维度修正kl散度计算出的权重;
s6、使用加权贝叶斯算法进行训练;
s7、取步骤s1的训练数据,通过封箱操作将向量输入训练好的指纹模型,通过基于cfs_kl的加权贝叶斯算法,计算出每条流量的最大后验概率,完成模拟数据测试;
s8、通过向目标网段发包的方式,采集真实流量,将真实流量输入指纹模型,预测结果;计算真实流量的测试精度。
2.根据权利要求1所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,步骤s1中,以fingerprint行代表的是该指纹所属的操作系统,以此作为分类的类标记,将每个响应序列加上标志位作为特征进行拆分,在选择维度时删除seq.sp特征,得到118个特征;按照规则集拆分指纹库,对于标志位取值sp=0-5拆解成sp=0,sp=1到sp=5;对于标志位取值gcd=b8|114|170|1cc拆解成gcd=b8,gcd=114,并映射成118列的数字向量;按照蒙特卡洛方法,从拆分出的数据集中抽出90万数据作为训练数据。
3.根据权利要求2所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,蒙特卡洛方法具体为:
分别获取响应序列的全集,当全集数量大于500时,从全集随机挑选4个样本;当全集数量大于10小于等于500时,从全集随机挑选2个样本;当全集数量小于10时,随机挑选1个样本,获得90万数据作为模拟测试集。
4.根据权利要求1所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,步骤s2中,在训练数据中,对于每一个维度,取所有值,去重,按照从小到大排序,将所有数据平均分散到40个区间内,取每个区间的首尾,将区间内的数据全部映射成另外一个数字。
5.根据权利要求1所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,步骤s3中,第i个属性ai对应的权值mi为:
其中,p(ai)为第i个属性ai的取值的概率,p(c)为类别c的先验概率,p(c|ai)为第i个属性ai的取值上类别为c的条件概率。
6.根据权利要求1所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,步骤s4具体为:
s401、输入训练数据集d并进行数据预处理,获得数据集d的特征属性集合a={a1,a2,...an}和类集合属性c={c1,c2...cm},然后对供选择的属性构成的集合selectingset赋初值为特征属性集合a,已选择的属性够成的集合selectedset赋初值为空;
s402、使用
s403、从selectingset中选择相关系数取值最大的那个属性ai,将其从selectingset中剔除,并把它加入到selectedset中,并初始化max(merit(as))为merit(asi);
s404、对selectingset中余下的每一个属性aj(j≠i),根据
s405、对步骤s404求得的各个merit(asj)进行比较并选出最大的子集评估值max(merit(asj)),将其和max(merit(as))进行比较,若max(merit(asj))大于max(merit(as)),此时把aj从selectingset中剔除同时将其加入到selectedset中,并把max(merit(asj))赋值给max(merit(as)),继续步骤s404,若max(merit(asj))不大于max(merit(as)),获得selectedset为所求的最佳属性子集,返回selectedset。
7.根据权利要求1所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,步骤s5中,维度修正kl散度计算出的权重为:
其中,
8.根据权利要求1所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,步骤s6中,设输入空间
其中,ajl表示第j个特征的第l个取值,sj代表第j个特征的取值范围,ck表示第k个类别,λ表示拉普拉斯平滑时的参数,n表示训练样本个数;先验概率的贝叶斯估计为:
其中,k代表标记类的个数。
9.根据权利要求1所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,步骤s8中,朴素贝叶斯分类时,对给定的输入x,通过学习到的模型计算后验概率分布p(y=ck|x=x),将后验概率最大的类作为x的类输出,根据贝叶斯定理计算后验概率,基于cfs_kl加权的贝叶斯算法对朴素贝叶斯算法进行修改,在分类时引入权重概念,最终的最大后验概率对应的类别y为:
其中,ck表示第k个类别,x(j)为第j个特征,x(j)为第j个特征的取值,wj为计算出的第j个特征的权重。
10.根据权利要求9所述的基于cfs_kl的新型贝叶斯加权方法,其特征在于,带入独立性的后验概率为:
其中,k=1,2,...,k;
朴素贝叶斯分类器为: