前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【彩票】白话贝叶斯理论及在足球比赛结果预测中的应用

【彩票】白话贝叶斯理论及在足球比赛结果预测中的应用

作者头像
统计学家
发布2019-04-10 16:42:41
3.7K0
发布2019-04-10 16:42:41
举报
文章被收录于专栏:机器学习与统计学

1.贝叶斯及其相关的理论

1.1 贝叶斯

贝叶斯是一名1702年出生于伦敦的英国数学家,他首先将归纳推理法用于概率论基础理论,并创立了贝叶斯统计理论,对于统计决策函数、统计推断、统计的估算等做出了贡献,对于现代概率论和数理统计都有很重要的作用。所以看到的 贝叶斯 其实都是为了纪念这位伟大的数学家的贡献,贝叶斯公式也是他提出的,所以都是根据他的名字命名。

1.2 贝叶斯方法的来源

贝叶斯方法来源于贝叶斯本人在生前写过(死后朋友代为发表)的一篇关于“逆向概率”的文章,当时,人们已经可以根据实际的数据来计算“正向概率”。下面是一个“正向概率”的例子:

  “假设袋子里面有M个白色球,N个黑色球,如果伸手进去摸出一个球,那么摸出白色球的概率是多大?”。从这个问题,贝叶斯自然而然想到了“逆向概率”的问题: “假设我们事先并不知道袋子里面黑白球的个数,而是先闭着眼睛摸出一个(或好几个)球,然后观察这些取出来的球的颜色之后,那么根据取出的球的信息,对袋子里面的黑白球的比例作出什么样的推测”。

这个问题,就是所谓的逆概问题。从我个人的理解就是如何根据有限的已知信息来推断未知情况的概率。

贝叶斯的这篇论文虽然只是对这个问题的一个直接的求解尝试,并没有意识到这里面包含着的深刻的思想。由于复杂问题,贝叶斯推断需要大量的计算,因此在计算机未出现之前,并没有得到重视和广泛应用;计算机诞生以后,人们发现许多统计量是无法事先进行客观判断的,而互联网时代出现的大型数据集,再加上高速运算能力,为验证这些统计量提供了方便,也为应用贝叶斯推断创造了条件,它的威力正在日益显现[]。现在贝叶斯方法已经在各个领域得到大量的应用,也成为机器学习的核心算法之一。因为这个世界越来越复杂,影响事物发展的因素也越来越多,不确定性和随机性也不断增加,这个时候贝叶斯就发挥了他的优势。

1.3 贝叶斯公式与定理

贝叶斯定理是概率论中的一个结论,它跟随机变量的条件概率以及边缘概率分布有关。贝叶斯定理能够告知我们如何利用新证据修改已有的看法。作为一个普遍的原理,贝叶斯定理对于所有概率的解释是有效的;通常,事件A在事件B(发生)的条件下的概率,与事件B在事件A的条件下的概率是不一样的;然而,这两者是有确定的关系,贝叶斯定理就是这种关系的陈述。

设P(A|B)表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。下面就是贝叶斯公式:

其中的符号定义为:

  • P(A)是事件A的先验概率或边缘概率,它不考虑任何B方面的因素。
  • P(A|B)是已知B发生后A的条件概率,也由于得自B的取值而被称作A的后验概率
  • P(B|A)是已知A发生后B的条件概率,也由于得自A的取值而被称作B的后验概率
  • P(B)是事件B的先验概率或边缘概率,也作标准化常量(normalizing constant)。

  按这些术语,贝叶斯定理可表述为:后验概率 = (相似度*先验概率)/标准化常量。简单的讲,贝叶斯定理是基于假设的先验概率,给定假设条件下,观察到不同数据的概率,提供一种计算后验概率的方法。

  贝叶斯决策就是在不完全的信息下面,对部分未知的状态用主观概率来进行估计,然后用贝叶斯公式对发生概率进行修正,最后再利用期望值和修正概率做出最优决策。贝叶斯决策理论方法是统计模型决策中的一个基本方法,其基本思想是:

1、已知类条件概率密度参数表达式和先验概率。

2、利用贝叶斯公式转换成后验概率。

3、根据后验概率大小进行决策分类。

  贝叶斯的这种基本思想可以在大量的实际案例中得到使用,因为很多现实社会中,积累了很多历史先验数据,想进行一些决策推理,也可以说是预测,就可以按照上面的步骤进行,当然贝叶斯理论的发展中,出现了很多新的推理算法,更加复杂,和面向不同的领域。一般来说,使用贝叶斯推理就是,预测某个事件下一次出现的概率,或者属于某些类别的概率,使用贝叶斯来进行分类的应用应该是最广泛的,很多实际的推理问题也可以转换为分类问题。下面将介绍一些贝叶斯理论的应用例子。

1.4.贝叶斯的类型和应用

  在人工智能领域,贝叶斯方法是一种非常有代表性的不确定性知识表示和推理方法。目前贝叶斯的应用非常广泛,如文本分类,问题分类,反垃圾邮件等等,根据问题特征因素的独立性可以分为:朴素贝叶斯和贝叶斯网络。

  1.朴素贝叶斯的核心在于它假设向量的所有分量之间是独立的。(这一点在很多复杂的实际情况中都不太容易达到,各个因素直接可能都有一定的关联);

  2.贝叶斯网络又叫概率因果网络或者知识图,是相对于朴素贝叶斯而言的。它是一种有方向的无环关系图;贝叶斯网络用图形来表示变量之间的连接个概率关系;它是为了解决不确定性问题和不完整性问题而提出的,在如文字处理,图像处理,决策支持等很多领域都得到广泛的应用。

  相关的学术研究进展,主要集中在贝叶斯网络的研究中:

贝叶斯网络推理是指在给定证据条件下查询贝叶斯网络中某些节点的后验信息,其推理算法分为精确推理算法和近似推理算法两大类,至于这些算法的细节可以参考本后的文献“贝叶斯网络研究综述”,这玩意太复杂,一时半会我也没研究透彻,所以还是先搞懂下面几个简单的例子,对贝叶斯理论的应用有一个初步的认识比较好。

2.朴素贝叶斯分类及例子

贝叶斯分类的基础是概率推理,就是在各种条件的存在不确定,仅知其出现概率的情况下,如何完成推理和决策任务。概率推理是与确定性推理相对应的。而朴素贝叶斯分类器是基于独立假设的,即假设样本每个特征与其他特征都不相关。举个例子,如果一种水果其具有红,圆,直径大概4英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。朴素贝叶斯分类器依靠精确的自然概率模型,在有监督学习的样本集中能获取得非常好的分类效果。在许多实际应用中,朴素贝叶斯模型参数估计使用最大似然估计方法,换而言之朴素贝叶斯模型能工作并没有用到贝叶斯概率或者任何贝叶斯模型。尽管是带着这些朴素思想和过于简单化的假设,但朴素贝叶斯分类器在很多复杂的现实情形中仍能够取得相当好的效果。我们先看看一个简单的例子,这里要特别感谢博客园网友:leoo2sk,因为这一节的内容和例子基本都来自他的这篇关于朴素贝叶斯分类器的简单介绍的文章:文章链接,只不过我整理了一下,鉴于文章编辑不方便,我在word中编辑好了,截图上来:

2.1 朴素贝叶斯分类的定义

注意:上述的推导有2个地方比较难懂,1个是把分母p(x)去掉了,应该好理解,分母都一样,比较的时候,直接比较分子就可以了。另外一个是为什么这个公式是成立的: P(x|yi) = P(a1|yi)*P(a2|yi)*...*P(aj|yi) 这个公式的成立是因为各个属性a1,a2,..,aj都是独立的,才能成立。

根据上述原理,朴素贝叶斯分类主要分为三个阶段: 1.准备阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。 2.分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算。 3.应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。

  至于贝叶斯的其他问题如 估计类别下特殊属性划分的条件概率,以及分类器的评价问题,我认为对于初学者可以暂时跳过,等把基本流程理顺了,懂了,越到更多的问题后再回过头来反思后,按需学习。

2.2 朴素贝叶斯分类实例:检测不真实账号

  这个例子完全取自于博客园网友:leoo2sk,的文章“算法杂货铺——分类算法之朴素贝叶斯分类”,因为这个例子很短,而且有现成数据,手动计算量很小,所以我认为非常适合在这里使用。所以冒昧借用一下,同时3.3节中,我会介绍一个更加复杂的朴素贝叶斯分类器的代码。这个例子适合入门,而且最好是动手拿笔在纸上画一画,这样更容易理解,光看公式和数据虽然简单,但未必能了解整个过程,要想自己写出类似的代码,这个过程还是要清楚的,至少我是这么过来的。看看SNS社区不真实帐号问题

  对于SNS社区来说,不真实账号(使用虚假身份或用户的小号)是一个普遍存在的问题,作为SNS社区的运营商,希望可以检测出这些不真实账号,从而在一些运营分析报告中避免这些账号的干扰,亦可以加强对SNS社区的了解与监管。如果通过纯人工检测,需要耗费大量的人力,效率也十分低下,如能引入自动检测机制,必将大大提升工作效率。这个问题说白了,就是要将社区中所有账号在真实账号和不真实账号两个类别上进行分类。

  下面我们一步一步的使用朴素贝叶斯实现这个过程。

2.2.1 准备阶段:特征属性及划分

1.首先设C=0表示真实账号,C=1表示不真实账号。其他例子中不一定只有2类,也可以是N个类别,只不过计算更复杂,要借助计算机和程序了。

2.找出可以区分真实与不真实账号的特征属性,实际应用中,特征属性的数量可能很多,划分也会更细致。作为例子,这里只用少量的特征属性以及较粗的划分,并对数据做了修改。同时我们也假设这3个属性是独立的,这是使用朴素贝叶斯的基本要求。

选择三个特征属性,在SNS社区中这三项是可以直接从数据库里得到的。粗略划分如下几个区间: a1:日志数量/注册天数,划分:{a1<=0.05, 0.05<a1<0.2, a1>=0.2} a2:好友数量/注册天数,划分:{a2<=0.1, 0.1<a2<0.8, a2>=0.8} a3:是否使用真实头像。 划分:{a3=0(不是),a3=1(是)}

2.2.2 训练阶段:训练样本数据

这里并没有提供实际的数据,而是直接提供了相关整理后的数据,实际例子中,也应该是这样,这些基础数据是可以获取得到的。 使用1万个人工检测过的账号作为训练样本。我们根据上面特征属性的划分计算每个类别的频率以及各个类别在各个条件下的条件概率,以供后面的预测需要。 计算类别频率 P(C=0) = 0.89; 也就说这1万个人工检测过的帐号中,有89%是真实的 P(C=1) = 0.11;人工检测的帐号中,有11%是不真实的 计算条件概率 1)计算已知C=0的条件下,a1属性属于不同划分类别的条件概率 P( a1<=0.05| C=0) = 0.3 ; 在帐号真实的情况下,日志数量/注册天数的值<=0.05的比例有30% p(0.05<a1<0.2 | C=0) = 0.5 ; P( a1 >=0.2 | C=0) = 0.2 ; 2)计算已知C=1的条件下,a1属性属于不同划分类别的条件概率 P( a1<=0.05| C=1) = 0.8 ; 在帐号不真实的情况下,日志数量/注册天数的值<=0.05的比例有80% p(0.05<a1<0.2 | C=1) = 0.1 ; P( a1 >=0.2 | C=1) = 0.1 ; 3)计算已知C=0的条件下,a2属性属于不同划分类别的条件概率 P( a2 <= 0.1 | C=0) = 0.1 ; P( 0.1<a2<0.8| C=0) = 0.7 ;在帐号真实条件下,好友数量/注册天数在0.1-0.8范围的比例是70% P( a2 >= 0.8 | C=0) = 0.2 ; 4)计算已知C=1的条件下,a2属性属于不同划分类别的条件概率 P( a2 <= 0.1 | C=1) = 0.7 ;不真实条件下的帐号,好友数量在这个范围是非常多的 P( 0.1<a2<0.8| C=1) = 0.2 ; P( a2 >= 0.8 | C=1) = 0.1 ; 5)计算已知C=0的条件下,a3属性属于不同划分类别的条件概率 P(a3 = 0 | C=0) = 0.2 ; P(a3 = 1 | C=0) = 0.8 ;真实帐号中,使用真实图像的比例是80% 6)计算已知C=1的条件下,a3属性属于不同划分类别的条件概率 P(a3 = 0 | C=1) = 0.9 ;不真实帐号中,使用不真实图像的比例是90% P(a3 = 1 | C=1) = 0.1 ;

  上面这些数据从样本中可以直接统计得到。我也手动对几个条件概率进行了解释,我们假设还是比较符合真实情况的,虽然这个数据是原作者修正过的。

2.2.3 应用阶段:获取分类概率

  根据上面贝叶斯公式得到的相关条件概率数据,那么如何来进行一个实际的预测分类。假设我们有一个如下的预测需求:

某帐号使用非真实头像,日志数量与注册天数的比率为0.1好友数与注册天数的比率为0.2。这些数据是从该数据库直接获取的。 那么这个人的账户是真实账户 还是 不真实账户呢?相应的概率又有多少呢?

直接使用3.1节中的公式,我们计算在当前数据x发生的情况下,属于不同类别的概率,这里有2类,所以要计算一下2个东西:

  要计算 P(C=0|x) 和 P(C=1|x)的概率,然后比较大小,取最大值所在的类别就是我们分类的类别。当然我们不一定非要分类,而是可以将求出的概率提供给客户,作为一个参考值等等。而根据3.1节的推导,上述2个值的计算完整公式应该是下面这样的: P(C=0|x) = P(x|C=0)*P(C=0)      = P(a1|C=0)*P(a2|C=0)*P(a3|C=0)*P(C=0) 根据x的属性范围选择对应的概率      = P(0.05<a1<0.2|C=0) * P(0.1<a2<0.8|C=0)*P(a3=0|C=0) *P(C=0)      = 0.5 * 0.7 * 0.2 * 0.89 = 0.0623 同理: P(C=1|x) = P(0.05<a1<0.2|C=1) * P(0.1<a2<0.8|C=1)*P(a3=0|C=1) *P(C=1)       = 0.1 * 0.2 * 0.9 * 0.11 = 0.00198 所以根据属性结果和计算,当事件X发生时,属于C=0的概率要高得多,是C=1的30倍。因此我们有理由将这个帐号划分为真实帐号的范畴。

当然实际中的情况可能更加复杂,计算量也更加大,朴素贝叶斯不一定能很好的完成复杂的任务。但有些时候,我们将文件简化为朴素贝叶斯也能收获一些意外的东西。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.贝叶斯及其相关的理论
    • 1.1 贝叶斯
      • 1.2 贝叶斯方法的来源
        • 1.3 贝叶斯公式与定理
          • 1.4.贝叶斯的类型和应用
          • 2.朴素贝叶斯分类及例子
            • 2.1 朴素贝叶斯分类的定义
              • 2.2 朴素贝叶斯分类实例:检测不真实账号
                • 2.2.1 准备阶段:特征属性及划分
                • 2.2.2 训练阶段:训练样本数据
                • 2.2.3 应用阶段:获取分类概率
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档