白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现数据之巅

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

其中的符号定义为:

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

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

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

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

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

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

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

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

注意:上述的推导有2个地方比较难懂,1个是把分母p(x)去掉了,应该好理解,分母都一样,比较的时候,直接比较分子就可以了。另外一个是为什么这个公式是成立的:

P(x|yi)=P(a1|yi)*P(a2|yi)*...*P(aj|yi)

这个公式的成立是因为各个属性a1,a2,..,aj都是独立的,才能成立。

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

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

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

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

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

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

选择三个特征属性,在SNS社区中这三项是可以直接从数据库里得到的。粗略划分如下几个区间:

a1:日志数量/注册天数,划分:{a1<=0.05,0.05=0.2}

a2:好友数量/注册天数,划分:{a2<=0.1,0.1=0.8}

a3:是否使用真实头像。划分:{a3=0(不是),a3=1(是)}

使用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

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

P(a1>=0.2|C=1)=0.1;

3)计算已知C=0的条件下,a2属性属于不同划分类别的条件概率

P(a2<=0.1|C=0)=0.1;

P(0.1

P(a2>=0.8|C=0)=0.2;

4)计算已知C=1的条件下,a2属性属于不同划分类别的条件概率

P(a2<=0.1|C=1)=0.7;不真实条件下的帐号,好友数量在这个范围是非常多的

P(0.1

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;

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

某帐号使用非真实头像,日志数量与注册天数的比率为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

=0.5*0.7*0.2*0.89=0.0623

同理:

P(C=1|x)=P(0.05

=0.1*0.2*0.9*0.11=0.00198

所以根据属性结果和计算,当事件X发生时,属于C=0的概率要高得多,是C=1的30倍。因此我们有理由将这个帐号划分为真实帐号的范畴。

当然实际中的情况可能更加复杂,计算量也更加大,朴素贝叶斯不一定能很好的完成复杂的任务。但有些时候,我们将文件简化为朴素贝叶斯也能收获一些意外的东西。下面我们就来看将贝叶斯分类应用到足球彩票胜平负结果的预测中的情况。纯C#代码。欢迎支持。

关于足球彩票预测的几点说明:

1.本文分析的足球胜平负比赛的结果预测,采集的数据有近10年的全世界主要联赛;

2.足球彩票的预测方法各种各样,八仙过海各显神通,我这里也只是初步的测试,还有很多工作待完成,有没有完善的地方大家也不要急。

3.足球比赛的结果不仅与球队实力,状态,伤病,彩票,天气,还与场上的重大随机因素有关,因此想完成预测100%准确是一个不可能的任务,我们只是想在欧赔的概率基础上有少部分(5-10%)的提高,这样才可以做很多有意义的事情。

4.准确的说,足球比赛的很多因素都是有关联的,我也只是处于好奇,先使用了朴素贝叶斯来进行了一些工作,同时也在着手开始研究贝叶斯网络的预测方法,比较复杂,还在学习与堆码中。

5.1场足球比赛的基本要点有:主队,客队,比分,结果,至于辅助的因素有很多,如赛前的主客队积分,进球率,失球率,净胜球等等。

为了简单起见,我暂时只选取2个属性:主客队总积分的差;主队主场积分与客队客场积分的差;结果有胜平负3种类别,分别记为(3,1,0)。属性集的划分我们在程序中动态获取,这样可以计算各种不同划分的准确率,更加方便,这和上面的例子是不一样的。当然上面的例子也可以这样做,只是一个小的技巧而已。

在这个测试过程中,我们是选取前N轮的比赛场次数据,然后对后M轮的结果进行预测。所有首先要从数据库获取贝叶斯的训练数据,看代码:

1///

获取属性分割的区间,根据断点确定,data应该是从小到大的点排列2///3staticdouble[][]GetRulesByPoint(Listdata)4{5double[][]res=newdouble[data.Count+1][];6res[0]=newdouble[]{-1000,data[0]};//下限-1000,不可能达到7for(inti=0;i

1.几个基本的属性。注意字典存储条件概率,直接全部计算,对数据量大的情况,可能会吃不消,应该按需计算比较好。不过这里是测试,无所谓了。先看看效果才行。

预测的过程也和第2节的例子一样,只不过是程序化了。预测的方法是每次一条记录的数据,并计算属于每一类的概率,所以返回的是一个字典,key为类别,value为概率。具体方法如下所示:

1///

分类:key为类别,value为概率2publicDictionaryClassificationForDic(double[]data)3{4//先要计算每个当前属性的划分集合的顺序,找出每个属性所属于的区间5ListattIdList=newList();6for(inti=0;ires=C_Ratio.ToDictionary(n=>n.Key,n=>15{16doublemultip=n.Value;17for(inti=0;i

基本过程和代码完成了,我们采集5大联赛(西甲,德甲,英超,意甲,法甲)的数据进行测试,看看贝叶斯预测算法的准确性如何。测试的核心代码如下:

我们可以看到,针对不同的划分集,指数1的准确率都超过了57%,比正常的欧赔指数45-50%,高出了5-10%。结果还是比较可观的。但是我们也看到指数3的比例都有22%,说明对于一些特别冷门的场次,算法还是做不到,这些特殊情况不是简单2个因素就可以左右的,因此还有待对模型更深一步的研究,找出这些特别冷门场次的一些共同因素,从而进行一定程度的防范,减少指数3的比例,从而提高指数1,2的比例。

2.同时,我们对上一步的测试方法进行了一定的更改,将预测结果和欧赔bet365指数1结果一致的比赛拿出来进行统计;将预测结果和欧赔bet365指数1,2结果一致的比赛进行统计:

同样是上述481场比赛进行筛选和属性划分,我们对实际的准确率进行比较:

通过结合欧赔指数,进行一定的过滤后,预测的整理准确率有了一定的提高。这个结果还是很理想的,懂的人应该知道里面的含义。所以贝叶斯理论的确是非常强大,当然这里只采用了2个因素,而且本身是关联的,但实际中没有考虑关联性,看成了朴素贝叶斯,必定会对问题结果产生一定的影响。这和我解决问题的思路有关系,先简单,后复杂,逐步过渡,延伸。。

1.在博客正文加上本文的链接,当然部分网站会无良的把所有链接给去掉,但可以防范部分,另外水印这些也有点用,只是比较麻烦,懒得搞

THE END
1.双色球杀红球精准公式大汇总如何准确选择红球号码呢?下面总结一些红球经典杀号公式,进行一些简单的计算过程,就极可能轻松锁定红球奖号啦!赶快来试试。 一、 蓝号杀下期红球。 二、 AC值杀下期红球。 三、 蓝号+AC值杀下期红球。 四、 红号尾数之和杀下期红球。 五、 蓝号+质数个数杀下期红球。 https://www.17500.cn/arts/sdetail-10565914.html
2.一看就会使用的《双色球尾数计算法及应用》有一个双色球红球尾数计算法?,想信大多数人都知道,但是,各有各的应用方法。 这个尾数公式是: 尾数=(红球和值 - 每一个红球)÷这个红球=商余数。 实例展示: 202077期开奖号码,预测78期红、兰尾数? 第77期开奖: 03,10,16,21,25,27+12. https://www.360doc.cn/article/31201632_1119325580.html
3.双色球命中率是多少?让我们来聊聊中奖的机会和概率吧!双色球命中率计算公式 双色球命中率是指在购买双色球彩票时,所选号码与实际开奖结果相符的比例。其计算公式为:命中率 = (命中号码数量 / 购买号码数量) × 100%。例如,如果你购买了6个号码,实际开奖结果中有3个与之相符,那么命中率为(3/6) × 100% = 50%。命中率可以帮助玩家更好地评估自己的选号策略http://haitong-auto.cn/gonglue/1440.shtml
4.最准的彩票计算公式理想股票技术论坛在这里,你可以找到最准确的彩票计算公式,分享彩票数学公式,以及了解彩票中奖的计算方法。如果您想增加中奖概率,这里提供了一些有用的公式和技巧,帮助您在彩票游戏中获得更好的结果。 ,理想股票技术论坛https://www.55188.com/tag-7219805.html
5.双色球计算公式最准的是怎么计算双色球双色球计算公式最准的是怎么计算,接下来唯彩看球小编给大家介绍一下中国福利彩票双色球的更多玩法及双色球的专家资讯推荐方案,如果你对此也感兴趣的话,赶紧过来看看吧。https://www.vipc.cn/tags/shuangseqiujisuangongshizuizhundeshizenmejisuan
6.3d和值怎么计算最准确–手机爱问因此,在计算3D彩票的和值时,你应该考虑这些因素。3。 使用数学公式数学公式可以帮助你更准确地计算3D彩票的和值。 例如,你可以使用组合公式来计算不同数字组合的可能性。 你还可以使用概率公式来计算特定数字组合的概率。这些公式可以帮助你更好地理解3D彩票,并提高你的预测准确率。总的来说,计算3D彩票的和值需要https://m.iask.sina.com.cn/b/5afOSflGTNh.html
7.彩票双色计算公式.docx该【彩票双色计算公式 】是由【艾米】上传分享,文档一共【27】页,该文档可以免费在线阅读,需要了解更多关于【彩票双色计算公式 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。彩票双色计算公式 https://www.taodocs.com/p-818562768.html
8.七星彩最准的计算公式就这样杀号七星彩最准的计算公式 就这样杀号 以下介绍七星彩13个杀号公式 1、和值乘以百位加1除3的余数再减去3,杀与余数同尾的和值。 2、和值乘以百位加上1除以3的余数,杀与余数同路的和值。 3、相邻奖号的个位数差的和,杀和值及和尾。 4、杀上期跨度和值及和尾。http://www.china-lottery.net/news/383334.html
9.生活中的概率(精选十篇)我们在日常生活中的好多事情都多多少少牵扯到了统计或者概率计算的问题,例如人口普查,粮食生产状况的研究,交通状况的研究,体育项目成绩的研究;天气预报中的降水概率,买彩票的中奖概率,患有某种遗传病的概率等。生活中的概率问题往往让我们意想不到,学会怎样运用概率,可以让我们简单的解决生活中遇到的一些问题,有时候还https://www.360wenmi.com/f/cnkeybrueeyc.html
10.双色球公式计算法2017(双色球计算公式表)高兴情感双色球复式7+2的中奖金额是根据中奖情况来计算的,复式投注按所覆盖的单注计算中奖情况,然后根据中奖的情况来计算中奖金额。 双色球复式玩法计算公式:[这是网友 韩伟一号 提供的公式,网址忘记了。 双色球9+1复式有168注彩票组合,需要332元的投注金额。双色球9+1复式投注相当于前区复式投注的方式,也就是从红色http://www.gxmao.com/12857.html
11.大乐透选号计算方法关注3个公式专题:彩票技巧 大乐透选号计算方法 关注3个公式 对于大乐透如何选号,可根据以下三个公式进行计算: 公式1、计算平均值 将大乐透前区号码相加,和值除以6,所得数值按四舍五入进行选取,得出的数值为大乐透均 值。 一般2个号码相加的平均和值是36,与它相邻左右两边的和值分别是35、37。这3个平均和值 https://www.ydniu.com/info/dlt/cpjq/624907.html
12.3下面的公式适用于任何电场强度的计算公式是()【模拟试题】:,用悬链线公式计算在最高气温时档内线长为( )。 A. 1220.67 B. 1218.46 C. 1230.22 D. 1211.55 查看完整题目与答案 在进行动物胸肺部叩诊时,不可能叩出的音响是 A. 水平浊音 B. 鼓音 C. 空瓮音 D. 金属音 查看完整题目与答案 危险品生产区运输危险品的主干道中心线距1https://www.shuashuati.com/ti/0d79ab119f3e49eca1d08530f9938f7f.html
13.投1万注,中2.2亿彩票?我用代码算下80个号开20个号的万能公式结果搜出了一堆观点,有说4万分之一的,还有5万分之一的,还有更离谱的说620万分之一。总之,没有人去验证下对错,果然大部分读者数学都还给老师了(笔者也是)。其实验证不难,这种彩票有专门的数学公式可以计算(这一步容易忽悠),最后用代码随机跑十几万次验证下就可以。https://blog.csdn.net/weixin_42475018/article/details/135184940
14.双色球胆拖特点及计算公式:投注上限为22880元在胆拖投注中,有两个限制:一是拖码的个数最多为20个,原因是彩票打印时宽度的要求;二是为了避免彩民非理性投注,对胆拖投注总金额进行了限制,单票投注金额不能超过22880元。 胆拖投注注数计算公式: 设红色球区胆码个数为n(1≤n≤5),红色球区拖码个数为m(6-n≤m≤20),蓝色球区所选个数为w,则此胆拖投注http://caipiao.sohu.com/20110303/n279634424.shtml
15.竞彩名词——奖金计算单场投注,单注最高奖金限额10万元; 2场和3场过关投注,单注最高奖金限额20万元。 4场和5场过关投注,单注最高奖金限额50万元。 6场和6场以上过关投注,单注最高奖金限额100万元。 彩票中奖后,若单注应兑奖金高于对应的最高奖金限额,则只兑付本规则设定的对应最高限额奖金。https://www.sxlottery.net/07-00000451-1.html