`
san_yun
  • 浏览: 2638102 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Naive Bayes Classifer介绍

 
阅读更多

Naive Bayes属于机器学习算法中的一种,机器学习分为监督学习和非监督学习,监督学习通常用于预测分类,简单的讲监督学习是需要人为参与给数据添加标签,比如人为地判断某段评论是正面还是负面。非监督学习是直接根据数据特征进行处理,常见的有聚类算法。
最基本的Naive Bayes公式为


其中P(A|B)表示B发生情况下A发生的概率,P(B|A)表示A发生情况下B发生的概率,P(A)表示A发生的概率,P(B)表示B发生的概率。
当条件变量为多个时,则公式扩展为

其中Y有不同的取值,yk表示其中的某一个值,X1...Xn为不同的特征,为了简化公式,其中分母项可以表示成

因为,最初公式可以表示为

为了简化问题,Naive Bayes假设X各变量在Y给定条件下条件独立,即

因此,最初公式可以表示为


简单的说,我们想要达到的目的是,当我面知道Xi的值的时候,我们根据之前已有的数据来判断Y的取值,因为对于Y的不同取值,分母的值是一样的,因此预测分类时,只需要计算Y为不同取值时的分子值即可得到其概率,选取最大的概率值对应的Y值即为我们想要的预测结果。


 实例:

为了更好地理解算法,我举一个简单的例子执行该算法并加以解释。
假设有如下数据:

是否购房 是否单身 是否拖欠贷款
单身 NO
已婚 NO
单身 NO
已婚 NO
单身 YES
已婚 NO
单身 YES
单身 YES
已婚 NO

这里一共有9条数据,为了检验方便,我选取前7条作为训练数据,后两条作为检验数据。
由此我们可以得到以下数据:
某人拖欠贷款的概率为
P(YES)=2/7
某人没有拖欠贷款的概率为
P(NO)=5/7

当一个人拖欠贷款时其同时为单身的概率则为
P(单|Yes)=2/2=1
当一个人拖欠贷款时其同时为非单身的概率则为
P(已|Yes)=0
当一个人拖欠贷款时其同时已经购房的概率则为
P(是|Yes)=0
当一个人拖欠贷款时其同时还未购房的概率则为
P(否|Yes)=2/2=1

当一个人未拖欠贷款时其同时为单身的概率则为
P(单|NO)=2/5
当一个人未拖欠贷款时其同时为非单身的概率则为
P(已|NO)=3/5
当一个人未拖欠贷款时其同时已经购房的概率则为
P(是|NO)=2/5
当一个人未拖欠贷款时其同时还未购房的概率则为
P(否|NO)=3/5

下面我们即可以利用Naive Bayes Classifier进行预测分类
对于检验数据第一条否,单,Yes。假设我们不知道其是否贷款,需要通过前两个信息来进行判断,即判断某人未购房且单身时是否拖欠贷款
P(Yes|否,单)=P(Yes)*P(否|Yes)*(单|Yes)=2/7 * 1 * 1 =2/7=10/35
P(No|否,单)=P(No)*P(否|No)*(单|No)=5/7 * 3/5 * 2/5 =6/35
我们可以发现P(Yes|否,单)大于P(No|否,单),因此我们的预测结果为Yes,与实际相符合

同样的也可以检验第二条检验数据得到结果。

在这个例子中,我们的特征变量为离散值,即其取值只能有是,否或者已婚,单身等。如果特征变量为连续函数呢?
其实解决办法也很简单,根据现有数据,得到该特征变量的概率密度函数,然后就可以得到其取某值的概率,代入公式即可。

总结:
鉴于Naive Bayes Classifier原理简单,实时性强,通用性比较好且其实际效果并不会比SVM等复杂算法差太多,我于本文介绍了其基本实现原理希望能够有所帮助。另外,目前各语言都有成熟的库可以调用,我曾用过的有Java的Weka和python的scikit-learn,matlab也有现成的函数可以调用,比较方便。

分享到:
评论

相关推荐

    NaiveBayes分类器介绍

    NaiveBayes分类器是一种基于贝叶斯定理和事件独立性假设的统计分类方法。在机器学习领域,它被广泛用于文本分类、垃圾邮件过滤、情感分析等任务,因其简单高效而备受青睐。 首先,我们需要理解贝叶斯定理的基本概念...

    naive bayes在hadoop上的实现

    Naive Bayes是一种基于概率的分类算法,以其简单高效的特点被广泛应用在文本分类、垃圾邮件检测、情感分析等领域。在大数据处理中,结合Hadoop的MapReduce框架,Naive Bayes可以有效地处理大规模数据集。 MapReduce...

    Naive Bayes and Logistic Regresion

    标题中的"Naive Bayes and Logistic Regression"涉及的是两种常用的数据分类算法,它们在机器学习领域扮演着重要的角色。Naive Bayes是基于贝叶斯定理的一种简单但高效的分类方法,而Logistic Regression则是一种...

    Hadoop mapreduce 实现NaiveBayes朴素贝叶斯

    本主题将深入探讨如何使用 Hadoop MapReduce 实现 NaiveBayes 朴素贝叶斯算法,这是一种经典的概率分类模型,常用于文本分类、垃圾邮件过滤等领域。 NaiveBayes 朴素贝叶斯算法基于贝叶斯定理,其“朴素”在于假设...

    Naive Bayes Classifier_NavieBayes_naivebayes_

    **朴素贝叶斯分类器(Naive Bayes Classifier)** 朴素贝叶斯分类器是一种基于概率理论的机器学习算法,其核心思想是利用贝叶斯定理进行预测。该算法假设特征之间相互独立,这也是“朴素”一词的由来。尽管在现实...

    naive bayes

    MATLAB中的`NaiveBayes`函数提供了一个简洁的接口来构建和应用朴素贝叶斯分类模型。在文件`NaiveBayes.m`中,我们可以看到MATLAB如何通过该函数实现朴素贝叶斯分类的过程。以下将详细介绍朴素贝叶斯算法的核心概念...

    Generative and Discriminative Classifiers: Naive Bayes and Logistic Regression

    本知识点将对生成模型和判别模型的特点进行解释,并着重探讨两种常见的分类算法:朴素贝叶斯(Naive Bayes)和逻辑回归(Logistic Regression)。 **生成模型和判别模型** 生成模型关注于学习不同类别数据的生成...

    C#实现Naive Bayes源码

    朴素贝叶斯(Naive Bayes)是一种基于概率的分类算法,源于贝叶斯定理。在机器学习领域,它因其简单、高效而被广泛应用于文本分类、垃圾邮件过滤、情感分析等多个场景。C#是一种面向对象的编程语言,常用于开发...

    Naive Bayes的实现

    在提供的文件中,"www.pudn.com.txt"可能包含训练或测试数据,而"NaiveBayes(版本1)"可能是实现Naive Bayes算法的源代码文件。源代码可能会包括读取数据、预处理、训练模型、预测和评估性能等功能。 在实际应用中...

    NaiveBayes算法

    NaiveBayes算法

    机器学习算法之NaiveBayes算法实现.zip

    在压缩包中的"机器学习算法之NaiveBayes算法实现"文件,很可能是包含了有关如何实现Naive Bayes算法的代码示例、教程或者案例研究。通过阅读这些材料,你可以更深入地理解该算法的工作原理以及如何在实际项目中应用...

    Naive bayes_naivebayes_

    朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理和特征条件独立假设的分类算法。在机器学习领域,朴素贝叶斯因其简单、高效而被广泛应用,尤其是在文本分类、垃圾邮件过滤、情感分析等领域。 **贝叶斯定理** 贝叶斯...

    Naive-Bayes-Classifier-master_naivebayes_

    朴素贝叶斯(Naive Bayes)是一种基于概率论的分类算法,因其简单高效而广泛应用于文本分类、垃圾邮件过滤、情感分析等多个领域。在这个"Naive-Bayes-Classifier-master"项目中,我们将深入探讨朴素贝叶斯的理论基础...

    ApMl.rar_CRAWL_classify Bayes_naive bayes_naive bayes for web

    ApMl provides users with the ability to crawl the web and download pages to their computer in a directory structure suitable for a Machine Learning ... Classification Algorithms include Naive Bayes, KNN

    mnist手写字的knn ,naive bayes,svm实现

    这个项目利用MATLAB对MNIST数据集进行了处理,并应用了三种不同的分类算法:K近邻(KNN)、朴素贝叶斯(Naive Bayes)以及支持向量机(SVM)。下面我们将详细探讨这三个算法以及它们在MNIST数据集上的应用。 1. **...

    email data for naive bayes filter

    标题中的“email data for naive bayes filter”指出这是一个与电子邮件数据和朴素贝叶斯过滤相关的项目。朴素贝叶斯过滤是一种常见的文本分类方法,尤其在垃圾邮件检测领域中应用广泛。接下来,我们将深入探讨这个...

    [Mahout] 使用Mahout 对Kddcup 1999的数据进行分析 -- Naive Bayes

    【标题】:“Mahout与Kddcup 1999数据集:Naive Bayes分析” 在大数据和机器学习领域,Apache Mahout是一个强大的库,它提供了多种算法用于构建推荐系统、分类和聚类。本篇文章将深入探讨如何使用Mahout来对Kddcup ...

    python实现 朴素贝页斯分类器 Naive Bayes classifier

    这是我用python写的朴素贝页斯分类器(Naive Bayes classifier)

    Assignment 2 naive Bayes.py

    Coursera NLP课程第二周Assignment

    Naive Bayes算法python,Bayes.py

    Naive Bayes算法

Global site tag (gtag.js) - Google Analytics