【温故】金融数据挖掘之朴素贝叶斯

你和我之前的人生,

就像是来自同一个分布族的共轭曲线,

即使有各自的参数空间,

也注定要相识相念。

你和我之后的人生,

是我们相扶相持下不离不弃的最大似然,

用“信任与珍惜”的先验去修正所有后验,

用“包容和分享”的样本去做无悔一生的推断。

这是朴素的贝叶斯思想,

也是我们朴素的爱情宣言。


一、贝叶斯的故事

“托马斯.贝叶斯……这个生性孤僻,哲学气味重于数学气味的学术怪杰,以其一篇遗作的思想重大地影响了两个世纪以后的统计学术界,顶住了统计学的半边天”。

——中国科学院院士陈希孺

  • 托马斯·贝叶斯(ReverendThomas Bayes, 1702-1761)是对归纳推理给出精确定量表达方式的第一人,他死后发表的论文,可以作为科学史上最著名的论文之一(Press,1989:P181)。
  • 40岁当选英国皇家学会会员,相当于今天的英国科学院院士。
  • 即使这样,他在18世纪上半叶欧洲学术界也不算一个起眼的人物。在他生前,没有片纸只字的科学论著发表。那时,传播和交流科学成果的一种方式,是学者间的私人通信。这些信件许多都得以保存下来并发表传世。
  • 他最伟大的论文《机遇理论中一个问题的解》,在他死后第三年才发表,1764年被发表在伦敦皇家学会的《Philosophical Transactions》上。
  • 贝叶斯开创了统计学的贝叶斯学派,用先验知识和逻辑推理来处理不确定命题,与古老的频率学派分庭抗礼,频率学派只从数据中获得信息,完全不考虑先验知识,即人的经验。

二、贝叶斯定理

如果想判断未知样本的类别,比如,现在我们有三个自变量X1、X2、X3,通过这三个变量来判断它是属于第一类(C=1)还是第二类(C=2),我们可以用KNN、也可以用决策树算法来分析,本文介绍贝叶斯的思路:

  • P ( C=c | X1=x1, X2=x2, X3=x3 ) ,代表当一个样本X1、X2、X3三个变量值分别为x1、x2、x3时,该样本类别为c的概率。
  • 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。

OK,那么如何得到

P(C=1|X1,X2,X3)

P(C=2|X1,X2,X3)

这两个概率呢?

答案是——得不到。但是没关系,因为,只要知道这两个谁大谁小就可以进行判断,即:

  • P(C=1|X1,X2,X3) > P(C=2|X1,X2,X3),则判定类别为1;
  • P(C=1|X1,X2,X3) < P(C=2|X1,X2,X3),则判定类别为2;

贝叶斯定理就提供了方法进行这种比较。

(以上就是贝叶斯的思想,以下内容涉及到定理、公式、推导,如不感兴趣可以直接跳到「三、金融应用实例部分」)

  • 贝叶斯定理

贝叶斯定理用如下公式表示:

P(C|X)是给定属性X下,C的后验概率,P(C)是C的先验概率,该公式被称为“贝叶斯定理”。根据贝叶斯定理,我们想找出最大的P(C|X),只要找出最大的P(X|C)P(C)即可,因为P(X)对所有类为常数,这便是朴素贝叶斯分类的基础。

  • 朴素贝叶斯分类

利用贝叶斯定理,找出最大的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)利用上交所中所有股票的基本会计和价格信息,用朴素贝叶斯法来辨别那些超过市场指数而可望获得额外汇报的股票。

(2)由朴素贝叶斯法选择的股票所组成的同等权重证券组合,1年半内总共获得21%的回报,明显优于市场指数的-9%的回报。

  • 反洗钱

西安交通大学的张成虎、赵小虎(2009)利用朴素贝叶斯分类来识别可疑金融交易,发现洗钱行为。在他们的论文“基于贝叶斯分类的可疑金融交易识别研究”中提到,从反洗钱检测实践来看,可疑金融交易行为主要有以下几类特征:

(1)交易金额、交易频率的异常。

如短期内发生资金收付行为,长期闲置的账户不明原因突然启用等。

(2)交易流向、交易来源的异常。

如与来自贩毒、走私、恐怖活动、赌博严重的地区或者避税型离岸中心客户之间的资金往来活动在短期内增多;多个境内居民接受一个离岸账户汇款等。

(3)交易用途或交易性质异常。

如没有正常原因的多头开户、销户,且销户前发生大量资金收付;保险机构通过银行频繁大量对同一家投保人发生赔付或者办理退保等。

论文中他们先用聚类分析、小波分析、链接分析来分别对以上几种可疑行为进行识别,并对识别有问题的交易行为标注为1,在利用贝叶斯来对整个交易行为进行判定。

四、软件实现

本文主要介绍Python和MATLAB的实现思想,仅以分类变量为例:

  • PYTHON

如果现在有已知数据data:

分类向量c_value=[“yes”,”no”]两类,未知数据test:

test={"outlook":"sunny","temp":"cool","humidity":"high","wind":"strong"}

那么如何在python中实现对未知样本test的朴素贝叶斯分类呢?主要需要三段代码:

  • MATLAB

Matlab最好先把分类变量值以字符串形式转变为数字形式,在上个例子中,

(1)outlook有三个分类:sunny、overcast、rain,分别赋值为1、2、3;

(2)temp有三个分类:hot、mild、cool,分别赋值为1、2、3;

(3)humidity有两个分类:high、normal,分别赋值为1、2;

(4)wind有两个分类:strong、weak,分别赋值为1、2;

(5)class有两个分类:yes、no,分别赋值为1、2;

data = [

1 1 1 2 2;

1 1 1 1 2;

2 1 1 2 1;

3 2 1 2 1;

3 3 2 2 1;

3 3 2 1 2;

2 3 2 1 1;

1 2 1 2 2;

1 3 2 2 1;

3 2 2 2 1;

1 2 2 1 1;

2 2 1 1 1;

2 1 2 2 1;

3 2 1 1 2;

]

我们把Python实现思想转化成MATLAB形式:

function p =p(data,c_id,c_value)

count=0.0;

for i=1:size(data,1)

   if data(i,c_id)==c_value

       count=count+1;

   end

end

p=count/size(data,1)

end
function pp=pp(data,c_id,c_value,a_id,a_value)

   count1=0.0;

   count2=0.0;

   for l=1:size(data,1)  

       if data(l,c_id)==c_value

           count1=count1+1;

           if data(l,a_id)==a_value

               count2=count2+1;

           end

       end

   end

pp=count2/count1;

end
function nb(data,test,c_id,c_value)

pv=0*c_value

for i=1:size(c_value,2)

   pv(1,i)=p(data,c_id,c_value(1,i));

end

for i=1:size(c_value,2)

   for j=1:size(test,2)

       pv(1,i)=pv(1,i)*pp(data,c_id,c_value(1,i),j,test(1,j));

   end

end

pv

end

- END -

原文发布于微信公众号 - 数说工作室(shushuojun)

原文发表时间:2017-06-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

AI开学第一课!CMU深度学习秋季课程开课了,PPT & 视频同步

以深度神经网络为代表的“深度学习”系统越来越多地在各种AI任务中大显神威,包括语言理解、语音和图像识别、机器翻译、规划、甚至游戏和自动驾驶。因此,掌握深度学习方...

24410
来自专栏机器学习之旅

理论:Logistic使用前提

工程效果经验,坏样本个数至少要是你的特征变量个数的10倍以上;总样本个数要是你的特征变量个数的20-30倍以上。比如假设你会采用10变量,理论上,你例子中的高血...

7520
来自专栏AI科技评论

视频 | 2分钟论文:用谷歌「AI可解释性」看懂机器学习

AI 科技评论按:这里是,雷锋字幕组编译的 Two minutes paper 专栏,每周带大家用碎片时间阅览前沿技术,了解AI领域的最新研究成果。 原标题:B...

370100
来自专栏人工智能头条

机器学习 —— 浅谈贝叶斯和MCMC

25520
来自专栏AI科技大本营的专栏

浅谈贝叶斯和MCMC

‍‍Abstract:最近课业内的任务不是很多,又邻近暑假了,就在网上搜了一些有关于机器学习和深度学习的课程进行学习。网上的资料非常繁多,很难甄别,我也是货比三...

19930
来自专栏CDA数据分析师

【从零开始学统计】2.可决系数真的决定一切么?

【从零开始学统计】可决系数真的决定一切么? 前几天逛知乎的时候看到一个帖子,学计量的和学统计的在争论关于anova里的可决系数的问题。突然萌生了一个念头,想听听...

21560
来自专栏AI科技大本营的专栏

刚毕业就能拿到56万年薪?对!看看Twitter机器学习大牛写给你的进阶手册吧

年薪十万?对于程序员来说,这仅仅是温饱水平。 根据国家统计局今年上半年发布的消息,2016 年信息传输、软件和信息技术服务业的平均工资为 122478 元,首次...

39070
来自专栏LhWorld哥陪你聊算法

【机器学习】--隐含马尔科夫模型从初识到应用

马尔可夫(1856~1922),苏联数学家。切比雪夫的学生。在概率论、数论、函数逼近论和微分方程等方面卓有成就。     马尔可夫模型(Markov Mode...

26420
来自专栏新智元

深度学习盛会 ICLR-17 最佳论文出炉!机器自主编程 NPI 再称雄

1 新智元编译 来源:iclr.cc、openreview.net 编译:闻菲、张易、刘小芹 【新智元导读】深度学习盛会 ICLR 2017 日程及最佳论文...

441130
来自专栏IT派

浅谈贝叶斯和MCMC

‍‍Abstract:最近课业内的任务不是很多,又邻近暑假了,就在网上搜了一些有关于机器学习和深度学习的课程进行学习。网上的资料非常繁多,很难甄别,我也是货比三...

20230

扫码关注云+社区

领取腾讯云代金券