朴素贝叶斯分类及应用

贝叶斯学习

贝叶斯公式

贝叶斯学习器事实上是从经典的贝叶斯概率公式的来的,对于经典的贝叶斯公式:

P(A|B)=P(B|A)P(A)P(B)

式中P(A)表示A的先验概率(即A发生的概率与B无关),P(A|B)表示A的后验概率(即在已知B发生的情况下,A发生的概率)

朴素贝叶斯分类

我们都知道贝叶斯是一个经典的求取概率的公式。那么贝叶斯又是怎么和分类相联系起来的呢?

实际上。在分类的过程中,我们要推断某样本x是否属于某类别A时。能够将这件事看成是个概率问题,即推断x属于A的可能性有多大。如果类别有n种,则仅仅需求取x分别属于每一个样本的概率有多大,概率值最大的。就可以觉得是x的所属类别。

朴素贝叶斯分类的正式定义例如以下:

1. 设x={a1,a2,...,am}为一个带分类项,当中每一个a的为x的一个特征属性.

2. 有类别集合

$C={y1,y2,...yn}

$。

  1. 计算P(y1|x)。P(y2|x),…,P(yn|x)。
  2. 如果P(yk|x)=max{(y1|x),P(y2|x),...,P(yn|x)}

    则x∈yk

如今从定义能够看出每步并不难理解。关键时第三步中的每一个概率值怎么求取。对于单个变量,求取其概率值比較好求,可是这里的x时一个含有m个属性的变量。这样的情况下。该怎么求取其属于某类别yn的概率是多少呢?

以下给出求解推导:

已知我们要求取P(yi|x)的概率值,依据贝叶斯公式能够将其转换为例如以下形式:

P(yi|x)=P(x|yi)P(yi)P(x)

所以求取P(yi|x)就变成了求P(x|yi)P(yi)P(x)。

对于P(x|yi)。由于x含有m个属性变量。因此能够将其写成P({a1,a2,...,am}|yi)。

对于大多数情况。x的各个属性之间都是相互独立,所以有:

P(x|yi)P(yi)=P(a1|yi)P(a2|yi)...P(am|yi)P(yi)=P(yi)∏j=1mP(aj|yi)

因此:

P(yi|x)=P(yi)∏mj=1P(aj|yi)P(x)

至此。便得到了P(yi|x)的概率值求解表达式,只是这里的P(X)的值不知道为多少。可是,依据贝叶斯分类的思想,我们仅仅要找到概率最大的一项即就可以,对于不同的类别yi,P(yi|x)终于的求解表达式中都含有P(X),因此仅仅要求解。使P(yi)∏mj=1P(aj|yi)最大就可以。

朴素贝叶斯分类应用实例(目标跟踪)

对于目标跟踪,眼下用的比較多的方法都是在待跟踪目标区域周围获取候选窗体。然后推断这些候选窗体是否是目标。

在推断的过程中,往往採都是计算候选窗体属于时目标的概率值,值越大,则其时目标的可能性就越大。

这样的思想和朴素贝叶斯分类的思想很类似。

以下以压缩感知跟踪为例。

在感知压缩跟踪。作者将贝叶斯当成了一个在线学习的分类器,此分类器在分为分类和更新參数两个部分。

在分类阶段(第t帧)

首先在目标框(t-1帧确定的位置)周围一定范围内选取m个候选框。

对候选框提取特征。得到特征向量v? =(v1,v2,...,vn)每一个向量都含有n个属性值。现要求v? 是后选框的概率值。依据朴素贝叶斯可知:

P(y=1|v? )=P(y=1)∏ni=1P(vj|y=1)P(v? )

可是要是单纯的求取这个式子并不好求。由于我们并不知道式子中P(v? )的概率值。

只是,注意到既然不能求解P(v? ),那能否够将这一项消去?

因此将求取P(y=1|v? )转化为求取P(y=1|v? )P(y=0|v? )。

P(y=1|v? )P(y=0|v? )=P(y=1)∏ni=1P(vj|y=1)P(y=0)∏ni=1P(vj|y=0)

对上式左右两边同取log(为了方便计算。将累乘变为累加)

H(v)=∑i=1nlogP(y=1)P(vi|y=1)P(y=0)P(vi|y=0)

这里假定先验概率P(y=1)=P(y=0),y代表样本标签。

则可得:

H(v)=∑i=1nlogP(vi|y=1)P(vi|y=0)

当中:

P(vi|y=1)~N(μ1i,σ1i)

P(vi|y=0)~N(μ0i,σ0i)

在參数更新阶段(第t帧)

在分类阶段时,已经确定了第t帧中目标所在的位置,接下来来便更新学习机的參数。

,会在目标框周围一定范围α内获取m个候选框(α代表到目标框中心位置的距离),将其定为正样本。然后在范围(α,β)内获取n个负样本框(m≈n)。

得到正负样本后,便開始跟新分类器的參数,更新方式例如以下:

μ1i←λμ1i+(1?λ)μ1

σ1i←λ(σ1i)2+(1?λ)(σ1)2+λ(1?λ)(μ1i?μ1)2?????????????????????????????????√

式子中的λ时学习參数。

实践代码

这是分类代码

void CompressiveTracker::radioClassifier(vector<float>& _muPos, vector<float>& _sigmaPos, vector<float>& _muNeg, vector<float>& _sigmaNeg,
                                         Mat& _sampleFeatureValue, float& _radioMax, int& _radioMaxIndex)
{
    float sumRadio;
    _radioMax = -FLT_MAX;
    _radioMaxIndex = 0;
    float pPos;
    float pNeg;
    int sampleBoxNum = _sampleFeatureValue.cols;

    for (int j=0; j<sampleBoxNum; j++)
    {
        sumRadio = 0.0f;
        for (int i=0; i<featureNum; i++)
        {
            pPos = exp( (_sampleFeatureValue.at<float>(i,j)-_muPos[i])*(_sampleFeatureValue.at<float>(i,j)-_muPos[i]) / -(2.0f*_sigmaPos[i]*_sigmaPos[i]+1e-30) ) / (_sigmaPos[i]+1e-30);
            pNeg = exp( (_sampleFeatureValue.at<float>(i,j)-_muNeg[i])*(_sampleFeatureValue.at<float>(i,j)-_muNeg[i]) / -(2.0f*_sigmaNeg[i]*_sigmaNeg[i]+1e-30) ) / (_sigmaNeg[i]+1e-30);
            sumRadio += log(pPos+1e-30) - log(pNeg+1e-30);  // equation 4
        }
        if (_radioMax < sumRadio)
        {
            _radioMax = sumRadio;
            _radioMaxIndex = j;
        }
    }
}

这是參数跟新代码

void CompressiveTracker::classifierUpdate(Mat& _sampleFeatureValue, vector<float>& _mu, vector<float>& _sigma, float _learnRate)
{
    Scalar muTemp;
    Scalar sigmaTemp;

    for (int i=0; i<featureNum; i++)
    {
        meanStdDev(_sampleFeatureValue.row(i), muTemp, sigmaTemp);

        _sigma[i] = (float)sqrt( _learnRate*_sigma[i]*_sigma[i] + (1.0f-_learnRate)*sigmaTemp.val[0]*sigmaTemp.val[0]
        + _learnRate*(1.0f-_learnRate)*(_mu[i]-muTemp.val[0])*(_mu[i]-muTemp.val[0]));  // equation 6 in paper

        _mu[i] = _mu[i]*_learnRate + (1.0f-_learnRate)*muTemp.val[0];   // equation 6 in paper
    }
}
时间: 2024-08-08 06:56:01

朴素贝叶斯分类及应用的相关文章

朴素贝叶斯分类器及Python实现

贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进行修正的定理,在概率论中具有重要地位. 先验概率分布(边缘概率)是指基于主观判断而非样本分布的概率分布,后验概率(条件概率)是根据样本分布和未知参数的先验概率分布求得的条件概率分布. 贝叶斯公式: P(A∩B) = P(A)*P(B|A) = P(B)*P(A|B) 变形得: P(A|B)=P(B|A)*P(A)/P(B) 其中 P(A)是A的先验概率或边缘概率,称作"先验"是因为它不考虑B因素. P(A|B)是已知

机器学习之朴素贝叶斯分类

朴素贝叶斯分类 所有贝叶斯分类都是基于贝叶斯定理,朴素贝叶斯分类是贝叶斯分类中运用广泛简单的一种,另外,它还基于特征条件独立假设. 贝叶斯定理 贝叶斯定理是计算条件概率的公式,条件概率即是事件B发生的前提下事件A发生的概率,记作P(A|B),叫做事件B发生的情况下A的条件概率. 公式为:P(B|A)=P(A|B)P(B)P(A) 公式大致推导: 如图,有P(A|B)=P(A?B)P(B) 同样,也有P(B|A)=P(A?B)P(A) 于是,P(A|B)P(B)=P(B|A)P(A) 得到,P(B

朴素贝叶斯分类--python实现

1.概述 朴素贝叶斯分类是贝叶斯分类器的一种,贝叶斯分类算法是统计学的一种分类方法,利用概率统计知识进行分类,其分类原理就是利用贝叶斯公式根据某对象的先验 概率计算出其后验概率(即该对象属于某一类的概率),然后选择具有最大后验概率的类作为该对象所属的类.总的来说:当样本特征个数较多或者特征之间相关性较大时,朴素贝叶斯分类效率比不上决策树模型:当各特征相关性较小时,朴素贝叶斯分类性能最为良好.另外朴素贝叶斯的计算过程类条件概率等计算彼此是独立的,因此特别适于分布式计算.本文详述了朴素贝叶斯分类的统

从朴素贝叶斯分类器到贝叶斯网络(下)

书接上文 :从朴素贝叶斯分类器到贝叶斯网络(上) 三.贝叶斯网络 贝叶斯网络(Bayesian Network)是一种用于表示变量间依赖关系的数据结构.有时它又被称为信念网络(Belief Network)或概率网络(Probability Network).在统计学习领域.概率图模型(PGM,Probabilistic Graphical Models)经常使用来指代包括贝叶斯网络在内的更加宽泛的一类机器学习模型.比如隐马尔可夫模型(HMM,Hidden Markov Model)也是一种PG

朴素贝叶斯分类算法介绍及python代码实现案例

朴素贝叶斯分类算法 1.朴素贝叶斯分类算法原理 1.1.概述 贝叶斯分类算法是一大类分类算法的总称 贝叶斯分类算法以样本可能属于某类的概率来作为分类依据 朴素贝叶斯分类算法是贝叶斯分类算法中最简单的一种 注:朴素的意思是条件概率独立性 P(A|x1x2x3x4)=p(A|x1)*p(A|x2)p(A|x3)p(A|x4)则为条件概率独立 P(xy|z)=p(xyz)/p(z)=p(xz)/p(z)*p(yz)/p(z) 1.2.算法思想 朴素贝叶斯的思想是这样的: 如果一个事物在一些属性条件发生

SparkMLib分类算法之朴素贝叶斯分类

SparkMLib分类算法之朴素贝叶斯分类 (一)朴素贝叶斯分类理解 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.简单来说,朴素贝叶斯分类器假设样本每个特征与其他特征都不相关.举个例子,如果一种水果具有红,圆,直径大概4英寸等特征,该水果可以被判定为是苹果.尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的.尽管是带着这些朴素思想和过于简单化的假设,但朴素贝叶斯分类器在很多复杂的现实情形中仍能够取得相当好的效果.

朴素贝叶斯分类

朴素贝叶斯分类 朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样 的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别.通俗来说,就好比这么个道理,你在街上看 到一个黑人,我问你你猜这哥们哪里来的,你十有八九猜非洲.为什么呢?因为黑人中非洲人的比率最高,当然人家也可能是美洲人或亚洲人,但在没有其它可用信 息下,我们会选择条件概率最大的类别,这就是朴素贝叶斯的思想基础. 朴素贝叶

朴素贝叶斯分类算法原理分析与代码实现

前言 本文介绍机器学习分类算法中的朴素贝叶斯分类算法并给出伪代码,Python代码实现. 词向量 朴素贝叶斯分类算法常常用于文档的分类,而且实践证明效果是挺不错的. 在说明原理之前,先介绍一个叫词向量的概念. --- 它一般是一个布尔类型的集合,该集合中每个元素都表示其对应的单词是否在文档中出现. 对应关系和词汇表一一对应. 比如说,词汇表只有三个单词:'apple', 'orange', 'melo',某文档中,apple和melo出现过,那么其对应的词向量就是 {1, 0, 1}. 这种模型

数据挖掘十大经典算法(9) 朴素贝叶斯分类器 Naive Bayes

贝叶斯分类器 贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类.眼下研究较多的贝叶斯分类器主要有四种,各自是:Naive Bayes.TAN.BAN和GBN. 贝叶斯网络是一个带有概率凝视的有向无环图,图中的每个结点均表示一个随机变量,图中两结点 间若存在着一条弧,则表示这两结点相相应的随机变量是概率相依的,反之则说明这两个随机变量是条件独立的.网络中随意一个结点X 均有一个对应的条件概率表(Con

数据挖掘系列(8)朴素贝叶斯分类算法原理与实践

隔了很久没有写数据挖掘系列的文章了,今天介绍一下朴素贝叶斯分类算法,讲一下基本原理,再以文本分类实践. 一个简单的例子 朴素贝叶斯算法是一个典型的统计学习方法,主要理论基础就是一个贝叶斯公式,贝叶斯公式的基本定义如下: 这个公式虽然看上去简单,但它却能总结历史,预知未来.公式的右边是总结历史,公式的左边是预知未来,如果把Y看出类别,X看出特征,P(Yk|X)就是在已知特征X的情况下求Yk类别的概率,而对P(Yk|X)的计算又全部转化到类别Yk的特征分布上来. 举个例子,大学的时候,某男生经常去图