美文网首页十分钟阅读:机器学习与数据挖掘
机器学习基础算法(2)--朴素贝叶斯

机器学习基础算法(2)--朴素贝叶斯

作者: 美队庆 | 来源:发表于2018-01-07 23:32 被阅读0次

理工科的我们早在高中时期就听闻贝叶斯公式大名,我们接触较多的是条件概率公式,即P(X,Y|C)此类,完整的贝叶斯公式,是条件概率公式的升级版。

我们需要基础概率知识作为前提:

  • 条件概率,事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。
  • 先验概率,普通的已知事件的概率。(这个人来自赵家堡的概率?)
  • 后验概率,比较重要,已知一个事实条件,对于另一事件的概率。(已知这个人姓赵,那么他来自赵家堡的概率?)
  • 推导了这个贝叶斯公式就能看懂后面了:


    贝叶斯公式变形,后面会用

同时我们需要理解,朴素的概念。朴素贝叶斯用在算法中,是考虑了最理想的情况,每一个特征/数据都是独立的,即特征与特征之间不考虑相关性。虽然在现实中看似不现实,但是在实际算法中,“朴素”使得数据降维,避免了模型的过度复杂。

我们举垃圾邮件分类的例子来理解这个算法。
对于电子邮件;

  1. 垃圾邮件的垃圾词汇,假设构建一个垃圾词汇列表,假设列表有m个特征;
    每一封邮件包含N个词汇;那么对于这封邮件,用来判断的样本数为 m*N
  2. 我们将这N个词汇,看作N个向量(简化认为无重复词汇);每一个向量,在列表中遍历一次,对比有无和垃圾词汇重合,记为0或1。此时得到的向量形如[0, 0, 1, 0, 1, 1, 1, 0, 0, 0...0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0](1*N)
  3. 我们此时开始训练贝叶斯函数;在训练函数的过程中,我们拿出相当一部分垃圾邮件和正常邮件(即有标注的训练数据)
  • 容易计算训练集中,邮件类型的概率。
  • 循环遍历所有词汇,我们能够计算,每个词汇的类型(是否为垃圾词汇)的概率
  • 对于任意一个词汇我们得到他的后验概率。(已知文档类型,词汇类型的概率)
  • 训练集中的邮件,有N个词汇,我们得到1*N的后验概率向量,这
    一向量非常重要,要用来构建分类函数。示例一段简明的Python分类函数代码。
    def train(train_matrix, train_category):
     # 朴素贝叶斯分类器训练函数
     num_train = len(train_matrix)
     num_words = len(train_matrix[0])
     p_abusive = sum(train_category)/float(num_train)
     p0num = np.ones(num_words)
     p1num = np.ones(num_words)
     p0_denom = 2.0  #取2.0使得计算结果不会过小
     p1_denom = 2.0
     p0vec = []
     p1vec = []
     for i in range(num_train):
         if train_category[i] == 1:
             p1num += train_matrix[i]
             p1_denom += sum(train_matrix[i])
         else:
             p0num += train_matrix[i]
             p0_denom += sum(train_matrix[i])
     for i in range(num_words):
         p0vec.append(math.log(p0num[i] / p0_denom))
         p1vec.append(math.log(p1num[i] / p1_denom))
         # 取对数了防止多个很小的数相乘使得程序下溢出
     return p_abusive, p0vec, p1vec
    
    
  1. 我们根据后验概率的向量形式,构建出分类函数,这点需要根据二分类或者多分类问题的不同。接下来,就可以导入测试集进行测试了

朴素贝叶斯在机器学习中,初步展示给我们训练和测试的意义所在,训练是从部分已知中寻找特定规律来推测未知。个人愚钝,文字描述还有不清晰的地方,必须尽快提高。

相关文章

  • 问题list

    一、机器学习相关 1、 基本概念 2、 经典机器学习 特征工程 基础算法原理和推倒 Knn 支持向量机 朴素贝叶斯...

  • 朴素贝叶斯

    学习机器学习最简单的算法可以说就是 朴素贝叶斯了,今天分享下自己的学习心得。 什么是贝叶斯,什么是朴素贝叶斯 贝叶...

  • 机器学习 Day 12 | 朴素贝叶斯基础

    机器学习第十二天 基于概率论的分类方法:朴素贝叶斯 朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均...

  • 朴素贝叶斯

    概率论是许多机器学习算法的基础。贝叶斯算法是一类算法,这是一类以条件概率的计算为核心进行分类的算法,而朴素贝叶斯算...

  • 轻松带你搞懂朴素贝叶斯分类算法

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 机器学习算法朴素贝叶斯分类

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 监督学习之概率模型

    贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类...

  • 朴素贝叶斯分类算法

    朴素贝叶斯分类算法多项式和高斯朴素贝叶斯的解释 朴素贝叶斯是一种有监督的机器学习方法,是概率分类器家族的一员。它采...

  • 朴素贝叶斯算法

    问题 1. 什么是朴素贝叶斯 2. 怎么理解贝叶斯公式和朴素贝叶斯公式 3. 朴素贝叶斯算法流程是怎样...

  • 机器学习基础算法(2)--朴素贝叶斯

    理工科的我们早在高中时期就听闻贝叶斯公式大名,我们接触较多的是条件概率公式,即P(X,Y|C)此类,完整的贝叶斯公...

网友评论

    本文标题:机器学习基础算法(2)--朴素贝叶斯

    本文链接:https://www.haomeiwen.com/subject/xxhlnxtx.html