加权朴素贝叶斯算法及其weka程序分析20151216A

上传人:re****.1 文档编号:546548602 上传时间:2023-05-20 格式:DOCX 页数:17 大小:38.20KB
返回 下载 相关 举报
加权朴素贝叶斯算法及其weka程序分析20151216A_第1页
第1页 / 共17页
加权朴素贝叶斯算法及其weka程序分析20151216A_第2页
第2页 / 共17页
加权朴素贝叶斯算法及其weka程序分析20151216A_第3页
第3页 / 共17页
加权朴素贝叶斯算法及其weka程序分析20151216A_第4页
第4页 / 共17页
加权朴素贝叶斯算法及其weka程序分析20151216A_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《加权朴素贝叶斯算法及其weka程序分析20151216A》由会员分享,可在线阅读,更多相关《加权朴素贝叶斯算法及其weka程序分析20151216A(17页珍藏版)》请在金锄头文库上搜索。

1、局部加权朴素贝叶斯算法及其Weka程序分析i张伟(北京交通大学计算机与信息技术学院,北京,100044)摘要: 局部加权朴素贝叶斯是一种改进朴素贝叶斯算法独立性假设缺陷的算 法通过实验证明加权朴素贝叶斯算法具有很好的效果,比朴素贝叶斯和 K 最近 邻方法的效果都要好。关键字:局部加权,朴素贝叶斯在机器学习中直接使用贝叶斯定理是不现实的,因为训练集不足以获得全概率分布的 准确估计。朴素贝叶斯分类算法是一种优秀的分类算法,但由于其必须满足属性独立性假 设,使得该算法具有了一定的局限性。局部加权朴素贝叶斯算法为了从该算法的弱点独立 性假设入手,对朴素贝叶斯算法进行改进,提出了一种基于K近邻法的局部加

2、权朴素贝叶 斯分类算法。实验表明该算法提高了分类的可靠性与准确率。1 局部加权朴学习局部加权学习(locally weighted learning,简称LWL),既可用于回归问题(如局部加 权线性回归),又可用于分类问题(如局部加权朴素贝叶斯)。局部加权分类是一种比较新 的方式,在一些实验中表现出更高的准确率。分类过程需要对训练实例根据它们离测试实 例的距离进行加权。在传统的加权学习算法中通常使用欧几里德距离来度量实例间的距离局部加权学习是方法是懒惰学习(lazy learning)和基于记忆学习(memory-based learning)的一种形式,它需要存储数据集,当需要对一个新实例进

3、行处理,通过距离函数 计算训练实例和测试实例的距离以确定和测试实例相关的训练实例的加权集合构,然后用 该集合构造一个新的模型来处理新实例。1本文是多年来经过无数次修正的版本,其中融入了许多学生的建议而且也是时时更新 的特别地,本文仅供学生学习使用,并不适合于发表在任何公开媒体上,也不允许任何 学生将之存放到互联网上另外,与一般学术论文不同,本文许多地方采用第 1 人称进行 讲述1.1局部加权朴素贝叶斯原则上,贝叶斯定理保证了对一个给定属性值向量的新实例的类标的最优预测。不幸 的是,直接将贝叶斯定理用于机器学习是不现实的,因为不可避免训练数据不足以获得全 概率分布的精确估计。为了使推理可行必须先

4、满足一些独立性假设。朴素贝叶斯方法把独 立性假设发挥到了极致,假定属性对于给定的类标值是统计上独立的。虽然这个假设在实 际中并不成立,朴素贝叶斯在许多分类问题上表现的非常好。此外,朴素贝叶斯计算效率 训练在实例个数和属性个数上都是线性的且易于执行。机器学习相关文章开始关注朴素贝叶斯学习算法归功于Clark和Niblett的有关CN2规 则学习的文章。在这篇文章中他们在实验评估中使用了一个简单的贝叶斯分类器(朴素贝 叶斯)作为对比,朴素贝叶斯分类器比其他更成熟的学习算法表现更好。虽然已经对朴素 贝叶斯在一些违反属性独立假设的情况下具有良好表现进行了解释,但一个基本事实没有 改变,那就是当独立性假

5、设不成立时,概率估计精度和效果都会下降。很多用于提高朴素贝叶斯效果的方法被提出,其中许多方法在保持原算法的简单性和 计算高效性的同时降低算法的“朴素性” Zheng和Webb在这个领域的工作进行了很好的 总结。最有效的方法包括:贝叶斯网络的限制子类、结合了属性选择的朴素贝叶斯或者将 朴素贝叶斯模型结合到其他分类器(例如决策树)。事实证明局部加权的朴素贝叶斯算法具有很好的效果,比朴素贝叶斯和K最近邻方法 的效果都要好。我们用来加权朴素贝叶斯的方法是从一项源于用来对非线性回归模型进行估计的技术 中借鉴而来,线性回归模型适合基于加权函数的数据,这个加权函数用来处理要进行预测 的实例。由于加权函数随着

6、每个需要处理的实例改变,所以由此产生的估计是非线性的。 本文我们研究了用于分类的局部加权学习,局部加权学习在机器学习中没有得到很多关注。 Loader (1999)和Hastie(2001)从统计学角度研究了所谓的“局部可能性”方法,包括局部 加权线性逻辑回归和局部加权密度估计。朴素贝叶斯是用密度估计进行分类的例子。和逻 辑回归相比它具有优势:在属性个数上是线性的,这是这种方法在具有多属性的学习问题 上具有更高的计算有效性。我们使用朴素贝叶斯的方式和在局部加权线性回归中使用线性回归的方式一样:一个 局部朴素贝叶斯模型适合于用来预测类属性实例(我们称这个实例为测试实例)的领域中 的数据集的子集。

7、此领域中的训练实例是加权的,距离测试实例越远的例子具有的权重越 小。然后一个分类器可以从朴素贝叶斯模型获得,朴素贝叶斯模型将测试实例的属性值作 为输入。用来训练每个局部加权朴素贝叶斯模型的数据集的子集由最近邻算法决定。用户指定 的参数k控制使用多少个实例。这通过使用具有紧支撑的加权函数和为k最近邻的距离设 定宽度(或带宽)来实现。1.2 属性处理令 di 表示测试实例到第 i 个最近邻点 xi 的欧几里德距离。我们假设所有属性在计算距 ii离前都被标准化为 0 到 1 之间的数值,名称型属性都进行二值化处理。令 f 为一个加权函数对所有的y 1有f (y) = 0。接下来我们设每个实例xi的权

8、重叫为w = f (d / d )ii k这意味着实例 xk 的权重为 0,所有距离测试实例很远的实例的权重都为 0,和测试实例相 k同的实例权重为1。所有具有以上性质的单调递减函数都可以作为加权函数。在我们的实验中使用的如下线性加权函数fUnear,对于y e 0,1,有 f(y) =1 - ylinear即,我们令权重随距离线性递减。更高的 k 值导致模型对数据中的波动变化很小,而较小的 k 值使得模型和数据保持 致。过小的k值可能导致模型和数据中的噪声匹配。我们的实验表明这种方法对于k值的 选择在不是特别小的情况下是不敏感的。有一点需要说明。为了避免零频率的出现,我们在实现朴素贝叶斯的过

9、程中使用Laplace 估计对名称型属性的条件概率进行估计,这与加权方案进行交互。我们的经验发现 适当的划分权重可以使得用来生成朴素贝叶斯模型的实例的总权重逼近k。假定有r个训 练实例x.满足d.dk。那么重新调整的权重计算公式如下ii k w x r& = Li 工n Wq = 0 q其中 n 是训练实例的总个数。朴素贝叶斯计算具有属性值 a1, a2, a3,,a测试实例的类属性q的后验概率的公式如下:p(c |a ,a ,., a )=q=1qj =1j qp (c )口” p (a I c )Tp (c )Sm p (a I c )其中 o 是类属性的总数。等式右边的单个个体的概率根据

10、加权后的数据进行估计,类属性c1的先验概率为()1 + 口 I (C = C )w,pic 丿=i=0 i 1 i1o + Sn Wi=0 i其中c是序号为i的训练实例的类属性值,当x = y时指标函数I (x = y)为1,其他为0。假设属性j是名称型的,兮(属性在测试实例中对应的值)的条件概率计算公式如下:()1 + IC = a )I (c = c )w,p a I c =.=0 j (ij.) 1 ij 1n +Sn Ma = a 丿wj i=0 j ij i其中n属性j取值的个数,a.是属性j在实例i中的值。如果数据中包含数值属性,我们用Fayyad和I rani的基于MDL准则的离

11、散化方案,将 结果视作名称型属性,也可以做一个名称型假设,基于加权数据集对均值和方差进行估计。 我们将给出两种方法的实证结果。2 加权朴素贝叶斯的实现分析我们将详细分析Weka-3-6-13平台下,LWL.java源代码之中的所有成员变量与方法。2.1 成员变量在Weka-3-6-13平台下的LWL.java类共定义了 13个成员变量,现逐一介绍所有成员 变量如下:(1 )序列化 serialVersionUID简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一 致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与

12、本地相应实 体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否 则就会出现序列化版本不一致的异常。( 2)训练实例集合 m_Train用于分类的训练实例的集合。(3)邻接点数目 m_kNN用来对核的带宽进行选择的邻接点数目。( 4)加权核方法 m_WeightKernel目前选择使用的加权核方法。( 5)布尔型变量 m_UseAllK用来决定是否对每个实例设置邻接点数目m_kNN。( 6)抽象类对象 m_NNSearch用来设置使用的最近邻搜索算法。( 7) 五个静态最终变量 LINEAR、EPANECHNIKOV、TRICUBE、INVERSE、

13、 GAUSS、CONSTANT分别代表了五种不同可用的核权重方法。这五个静态最终变量代表了可使用核加权方法。( 6)分类器 m_ZeroR以防当不能从数据集中建立分类器时有ZeroR模型可用。ZeroR指建立和使用0-r分类 器类。可预测均值(数值型类)或模型(名称型类)。2.2 辅助性的方法在Weka-3-6-13平台下的LWL.java类共定义了 25个方法,首先简单介绍这25个方法, 然后对其中的 7 个方法我们做重点介绍。现逐一介绍所有方法如下:(1)类的说明信息 globalInfo() 这个方法就是返回描述这个类的一串字符主要是对相应分类模型的说明。在浏览器(explorer)或W

14、eka实验环境(experimenter)下,通过这串字符来显示这个类的功能。这 个方法的实现机制依赖于 Weka.core 之下的 TechnicalInformation 类与 Technical InformationHandler 接口。这个方法主要用于:01:/*02: * Returns a string describing classifier.03: * return a description suitable for04: * displaying in the explorer/experimenter gui05: */( 2)列出参考文献所有著录项 getTechn

15、icalInformation()这个方法用于01:/*02: * Returns an instance of a TechnicalInformation object, containing03: * detailed information about the technical background of this class,04: * e.g., paper reference or book this class is based on.05: *06: * return the technical information about this class07: */(3) 构造器 LWL() 用来实例化一个决策树树桩分类器对象。(4) 列出描述默认分类器的字符串 defaultClassifierString() 这个方法用于返回用于描述默认分类器的字符串。01:/*02: * String describing default classifier.03: *04: * return the default classifier classname05: */( 5)返回枚举对象 enumerateMeasures() 这个方法用于返回其他测试名字

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号