朴素贝叶斯算法在条件完全不独立时的问题

数据挖掘中基于贝叶斯技术的分类问题的研究(专业)计算机软件与理论。声明:知识..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
数据挖掘中基于贝叶斯技术的分类问题的研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口【数说工作室】金融数据挖掘之朴素贝叶斯
【数说工作室】金融数据挖掘之朴素贝叶斯
编辑日期: 字体:
你和我之前的人生,
就像是来自同一个分布族的共轭曲线,
即使有各自的参数空间,
也注定要相识相念。
你和我之后的人生,
是我们相扶相持下不离不弃的最大似然,
用“信任与珍惜”的先验去修正所有后验,
用“包容和分享”的样本去做无悔一生的推断。
这是朴素的贝叶斯思想,
也是我们朴素的爱情宣言。
一、贝叶斯的故事
“托马斯.贝叶斯……这个生性孤僻,哲学气味重于数学气味的学术怪杰,以其一篇遗作的思想重大地影响了两个世纪以后的统计学术界,顶住了统计学的半边天”。
——中国科学院院士陈希孺
托马斯·贝叶斯(Reverend Thomas Bayes, )是对归纳推理给出精确定量表达方式的第一人,他死后发表的论文,可以作为科学史上最著名的论文之一(Press,1989:P181)。
40岁当选英国皇家学会会员,相当于今天的英国科学院院士。
即使这样,他在18世纪上半叶欧洲学术界也不算一个起眼的人物。在他生前,没有片纸只字的科学论著发表。那时,传播和交流科学成果的一种方式,是学者间的私人通信。这些信件许多都得以保存下来并发表传世。
他最伟大的论文《机遇理论中一个问题的解》,在他死后第三年才发表,1764年被发表在伦敦皇家学会的《Philosophical Transactions》上。
贝叶斯开创了统计学的贝叶斯学派,用先验知识和逻辑推理来处理不确定命题,与古老的频率学派分庭抗礼,频率学派只从数据中获得信息,完全不考虑先验知识,即人的经验。
二、贝叶斯定理
如果想判断未知样本的类别,即,已知它的三个属性X1、X2、X3,判断它是属于第一类(C=1)还是第二类(C=2),前面有介绍过如何用Knn邻均值和决策树来判断分类,本文介绍用这种新的思路:
P(C=1|X1,X2,X3)&P(C=2|X1,X2,X3),给定数据的X1、X2、X3后,数据属于类别1的概率要大于属于类别2,即说明现有样本支持未知样本属于类别1,判定为类别1。
P(C=1|X1,X2,X3)&P(C=2|X1,X2,X3),则说明现有样本支持未知样本属于类别2,判定为类别2。
如何得到P(C=1|X1,X2,X3)和P(C=2|X1,X2,X3)这两个概率呢?答案是——得不到。但是没关系,因为,只要知道这两个谁大谁小就可以进行判断:
l P(C=1|X1,X2,X3)&P(C=2|X1,X2,X3),则判定类别为1;
l P(C=1|X1,X2,X3)&P(C=2|X1,X2,X3),则判定类别为2;
贝叶斯定理就提供了方法进行这种比较。
1. 贝叶斯定理
P(C|X)是给定属性X下,C的后验概率,P(C)是C的先验概率,该公式被称为“贝叶斯定理”。根据贝叶斯定理,我们想找出最大的P(C|X),由于P(X)对所有类为常数,只要找出最大的P(X|C)P(C)即可,这便是朴素贝叶斯分类的基础。
2. 朴素贝叶斯分类
利用贝叶斯定理,找出最大的P(X|C)P(C)即可对未知样本进行分类,如max{P(X|C)P(C)}=P(X|C=n)P(C=n),则说明未知样本属于第n类,其中,
(1)P(C=i)=Si/S,Si是类Ci中的训练样本数,S是训练样本总数;
(2)P(X|C=i)的计算开销可能非常大,因为会涉及到很多属性变量,这里可以做“属性值互相条件独立”的假定,即属性间不存在依赖关系:
即,如果用三个属性值X1、X2、X3,来推测类别C,那么有:
P(X1,X2,X3|C=i)=P(X1|C=i)*P(X1|C=i)*P(X1|C=i)
这一假定是为了简化所需计算,也因此该算法被冠以“朴素的”定语。
(3)要注意的是,在计算P(Xk|C=i)时,要看Xk是分类属性还是连续属性:
如果Xk是分类属性,则
比如即在类别C=1的样本中,X1占的比例;
如果Xk是连续属性,则通常做正态分布假定:
是属性Xk的密度函数,为平均值和标准差。
朴素贝叶斯分类模型,与前面介绍的决策树一样被用于分类。它发源于贝叶斯定理,有着坚实的数学基础和稳定的分类效率,但受制于一些假定的不准确性(如类条件独立),以及缺乏可用的概率数据,该算法的准确率可能没有理论表现的那么美好。然而,它的计算量比第一集中的Knn要小很多,其简单的算法又可以与第二集介绍的决策树和以后要接受的神经网络相媲美,是使用最广泛的分类模型之一。
三、金融应用实例
复旦大学的钱颖能、胡运发用朴素贝叶斯分类法进行选股,在给定上海证券交易所中所有交易的股票的基本会计和价格信息的情况下,他们试图用朴素贝叶斯法来辨别那些超过市场指数而可望获得额外汇报的股票。由朴素贝叶斯法选择的股票所组成的同等权重证券组合1年半内总共获得21%的回报,明显优于市场指数的-9%的回报。
西安交通大学的张成虎、赵小虎(2009)利用朴素贝叶斯分类来识别可疑金融交易,发现洗钱行为。在他们的论文“基于贝叶斯分类的可疑金融交易识别研究”中提到,从反洗钱检测实践来看,可疑金融交易行为主要有以下几类特征:
(1) 交易金额、交易频率的异常。
如短期内发生资金收付行为,长期闲置的账户不明原因突然启用等。
(2) 交易流向、交易来源的异常。
如与来自贩毒、走私、恐怖活动、赌博严重的地区或者避税型离岸中心客户之间的资金往来活动在短期内增多;多个境内居民接受一个离岸账户汇款等。
(3) 交易用途或交易性质异常。
如没有正常原因的多头开户、销户,且销户前发生大量资金收付;保险机构通过银行频繁大量对同一家投保人发生赔付或者办理退保等。
论文中他们先用聚类分析、小波分析、链接分析来分别对以上几种可疑行为进行识别,并对识别有问题的交易行为标注为1,在利用贝叶斯来对整个交易行为进行判定。
在聚类分析、小波分析、链接分析的基础上,他们利用朴素贝叶斯进行整体判断,结果证明,比单独应用一类检测方法效果更好,这是因为贝叶斯分类具备整体的判定优势,通过计算完整的后验概率分布,充分汇总了可疑金融交易识别中涉及的各类可疑特征的全部信息,可以从总体和细节两方面把握可疑金融交易特征,比起单一可疑金融交易监测方法,在推理预测的准确性上有明显的提高。
3. 银行还款风险预测
黄静、赵庆祯(2009)年用朴素贝叶斯分类,预测供应链金融中的还款风险。供应链金融,指银行围绕一个核心企业,以该企业为出发点,管理上下游企业的资金和物流,即,将供应商、制造商、分销商、零售商、直到最终用户连成一个整体,全方位地为链条上的“N”家企业提供融资服务,通过相关企业的只能分工合作,实现整个供应链的不断增值。
供应链金融与传统银行融资的区别在于:(1)对供应链成员的信贷准入评估不是孤立的,其重点在于它对整个供应链的重要性、地位,以及与核心企业既往交易史;(2)对成员的融资严格限于其与核心企业之间的贸易背景,并以针对性的技术措施引入核心企业的资信,作为控制授信风险的辅助手段。
因此,在该论文中,作者试图预测成员企业的还款风险时,除了考虑企业规模、有形资产债务率、资产投资率、营业活动收益质量之外,还考虑了核心企业的信用度、上下游合作密切度,见下表:
资产投资率
&15,8-15,&8
大,中,小
营业活动收益质量
有形资产债务率
核心企业信用度
上下游合作密切度
高,中,低
文章用已知样本的这几个因素,去预测了未知样本的还款风险。
四、软件实现
本文主要介绍Python和MATLAB的实现思想,仅以分类变量为例:
如果现在有已知数据data:
{"outlook":"sunny", "temp":"hot", "humidity":"high", "wind":"weak", "class":"no" },
{"outlook":"sunny", "temp":"hot", "humidity":"high", "wind":"strong", "class":"no" },
{"outlook":"overcast", "temp":"hot", "humidity":"high", "wind":"weak", "class":"yes" },
{"outlook":"rain", "temp":"mild", "humidity":"high", "wind":"weak", "class":"yes" },
{"outlook":"rain", "temp":"cool", "humidity":"normal", "wind":"weak", "class":"yes" },
{"outlook":"rain", "temp":"cool", "humidity":"normal", "wind":"strong", "class":"no" },
{"outlook":"rain", "temp":"mild", "humidity":"high", "wind":"strong", "class":"no" },
分类向量c_value=[“yes”,”no”]两类,未知数据test:
test= {“outlook”:”sunny”,”temp”:”cool”,”humidity”:”high”,”wind”:”strong”}
那么如何在python中实现对未知样本test的朴素贝叶斯分类呢?主要需要三段代码:
Matlab最好先把分类变量值以字符串形式转变为数字形式,在上个例子中,
outlook有三个分类:sunny、overcast、rain,分别赋值为1、2、3;
temp有三个分类:hot、mild、cool,分别赋值为1、2、3;
humidity有两个分类:high、normal,分别赋值为1、2;
wind有两个分类:strong、weak,分别赋值为1、2;
class有两个分类:yes、no,分别赋值为1、2;
我们把Python实现思想转化成MATLAB形式:
文章来源:数说工作室
本文固定链接:
转载请注明:
作者:PPV课 小编
我们用数据说话,传播正能量,执着探索大数据价值!
您可能还会对这些文章感兴趣!数据挖掘 朴素贝叶斯分类_百度知道
数据挖掘 朴素贝叶斯分类
谁有例题?现谢啦
我有更好的答案
按默认排序
完全不懂等高手来
其他类似问题
朴素贝叶斯的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读朴素贝叶斯分类器的应用 - 阮一峰的网络日志

我要回帖

更多关于 朴素贝叶斯算法 的文章

 

随机推荐