[置顶]白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现

本文深入浅出地介绍了贝叶斯理论,包括其来源、公式与定理,以及在朴素贝叶斯分类中的应用。通过一个具体的足球比赛结果预测案例,展示了如何使用C#实现贝叶斯分类器,分析了预测过程并测试了预测准确性,结果显示朴素贝叶斯在预测中提高了5-10%的准确率。
摘要由CSDN通过智能技术生成
   离去年“ 马尔可夫链进行彩票预测”已经一年了,同时我也计划了一个彩票数据框架的搭建,分析和预测的框架,会在今年逐步发表,拟定了一个目录,大家有什么样的意见和和问题,可以看看,留言我会在后面的文章中逐步改善: 彩票数据框架与分析预测总目录。同时这篇文章也是“ 【彩票】彩票预测算法(一):离散型马尔可夫链模型C#实现”的兄弟篇。所以这篇文章还有一个标题,应该是: 【彩票】彩票预测算法(二):朴素贝叶斯分类器在足球胜平负预测中的应用及C#实现 

   以前了解比较多的是SVM,RF,特征选择和聚类分析,实际也做过一些分类预测的任务。在近1年多的时间中,开始接触足球赛事的预测,刚开始也想使用SVM,Rf来进行预测,一方面效果太差,二是其理论也的确不满足我自己想法的要求。所以也一直在看很多机器学习,数据挖掘的文章。直到看到了贝叶斯的相关文章,在这2个多月的研究中,也积累了很多经验,同时也在使用C#来完成自己的想法,在这个过程中,夹杂很多的知识要点,我自己也很乱,所以趁假期总结一下,由于写太多的公式大家也不一定能耐心看,也不易于理解,所以我把这篇文章叫做“大话贝叶斯”,目的就是尽量通过自己的简单语言和描述(当然如果确实需要学习贝叶斯来解决问题,有些基本概念,如条件概率,边缘分布,分布函数等等还是需要自己搞清楚)让大家更容易的懂得和理解贝叶斯相关理论及其应用。同时我通过实际的C#代码来进行演示,如何来用程序和贝叶斯理论来解决生活中的一些预测问题。在接触所谓的贝叶斯理论和公式之前,先简单了解一下 贝叶斯。

  预告,下一篇文章将是本站第100篇正式文章,将与近期发布一个.NET平台机器学习资源汇总的随笔,信息量很大,敬请关注,机不可失失不再来。。。。

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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值