美文网首页十分钟阅读:机器学习与数据挖掘
机器学习基础算法(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. 我们根据后验概率的向量形式,构建出分类函数,这点需要根据二分类或者多分类问题的不同。接下来,就可以导入测试集进行测试了

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

    相关文章

      网友评论

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

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