本文的主要目的是引导读者更加深入的学习数据挖掘和分析技术的同时进一步熟悉Python数据分析的基本流程以及对加深对Python编程的掌握。
贝叶斯理论介绍
在概率和统计学领域,贝叶斯理论基于对某一事件证据的认识,来预测该时间事件的发生概率。比如,如果癌症和年龄相关,在考虑年龄影响的条件下,预测癌症的概率的准确率就会高于不考虑年龄的准确率。贝叶斯理论的表达公式如下所示:
A、B为事件,并且P(B)≠0
P(A)和P(B)为独立观察事件A、B发生的概率
P(A|B),条件概率,即是在B事件发生的情况下,A事件发生的概率
P(B|A),条件概率,即是在A事件发生的情况下,B事件发生的概率
假设药品测试的灵敏度为99%,准确率为99%。意思就是如果使用了药品,那么99%的可能性,会测试结果会显阳性;如果没有用药,那有99%的可能性测试结果显阴性。现在随机抽出一个人,测试结果显阳性,试问用药的可能性有多大。
这个结果与直觉有较大的出入,计算结果表明随机抽出一个人进行用药测试,即使结果呈阳性,没有用药的可能性也要大于用药的可能性。
在机器学习领域,朴素贝叶斯分类器是基于贝叶斯理论并假设各特征相互独立的分类方法。朴素贝叶斯模型构建分类器的基本方法是:使用特征向量来表示某个,并赋给这些实体代表其类别的标签。所有的朴素贝叶斯分类器都假设某个特征的值与另一个特征的值是相互独立的。比如,一种水果,形状为圆形、直径在5cm左右且颜色为红色被分类为苹果。贝叶斯在进行分类的时候,在判别这种水果为苹果时,只考虑这几种特征独自对分类概率的影响,而不去考虑形、颜色、直径这些特征的相关性。贝叶斯分类器可以通过监督式学习的方式非常高效的训练。。
尽管贝叶斯分类器的假设条件过于简单,甚至与实际不符。但大多数时候,它都有较好的表现;它有一个较大的优点是,只需要少量的训练数据,就可以建立起分类所需要的所有参数。
从抽象的角度而言,朴素贝叶斯其实就是条件概率模型:给定一个实体,求解这个实体属于某一个类别的概率,这个实体用一个长度为n的向量来表示,向量中的每一个元素都表示一个特征量的值(相互独立)。
。
使用贝叶斯理论计算上式:
观察上式
对于上式对于某一个实体而言是一个常数,所以某一个实体属于某一类与的大小无关。使用之前的假设特征量之间相互独立以及联合概率的计算公式:
基于介绍的各特征值相互独立的概率模型,再加上一个决策规则,就构成了贝叶斯分类器。决策规则比较常用的是选择最大概率规则来判断对应的类别,即实体的所属类别为下式,最大值时,k所对应的类别。
下面用一个例子,来说明如何应用贝叶斯分类器,假设现在有1000封邮件,其中200封邮件为垃圾邮件,800封为正常。现在一封邮件的特征值为(“ 你好”,”中国”)。假设在垃圾邮件里面出现“你好”的频数为50,“中国”的频数为1。在正常邮件里面出现”你好”的频数为700,“中国”的频数为80。分别计算邮件属于正常邮件和垃圾邮件的概率:
P(垃圾邮件|(“你好”,“中国”))=P(“你好”|垃圾邮件)*P(“中国”|垃圾邮件)=
50/200*1/200=0.125%。
类似的,计算出正常邮件的概率为8.75%。正常邮件的概率大于垃圾邮件的概率,根据最大概率规则判断这封邮件是正常邮件。
bayes分类器的实现