首页 > 编程语言 >第五课 朴素贝叶斯算法

第五课 朴素贝叶斯算法

时间:2023-05-30 17:24:47浏览次数:39  
标签:概率 公式 第五课 贝叶斯 算法 计算 朴素

     朴素贝叶斯算法是机器学习中目前一个还在使用的算法,其依托于贝叶斯公式的概率计算,可用于NLP等分类任务。朴素贝叶斯算法的朴素,是因为其有2个较强或较主观的前提假设:

  • 样本间的特征(属性)是相互独立的
  • 样本特征(属性)取值服从高斯(正态)分布

      由于自然界的数据分布五花八门,给定一个数据集,但其服从什么样的数据分布,是不得而知的,工程上为简化计算,就将数据集的数据分布默认为自然界中存在最普遍的正态分布,所以如果数据的真实分布接近于正态分布,那么用贝叶斯算法的推理效果就会比较好,反之则会不是太理想。

      下面将从贝叶斯定理开始讲起。

1、贝叶斯定理

      大学时学习的《概率论与数理统计》,其中有一个很重要的公式是贝叶斯公式:

       同理,将A、B的位置互换一下,上面的公式仍然成立,即:

       通过P(AB)为桥梁,联立以上2个公式,可得到下式:

       贝叶斯公式看起来非常简单,但它其实是一个非常伟大的思想,简单说,有些条件概率不容易或无法计算求出,比如P(A|B),但如果换个思路,反过来通过P(B|A)来求P(A|B),而P(B|A)又是很容易计算得到,那么P(A|B)将迎刃而解。

2、贝叶斯定理在机器学习中的应用

       机器学习中的数据集,一般表示为X和y两个集合,X为输入样本集合,y为X对应的标签集合,对某个输入X,求取其对应的y,可表示为条件概率的形式P(y | X),即求X为y的概率。

       将X, y代入贝叶斯公式,可得:

       而X是由一系列特征x1, x2, …, xn组成的集合,可将上式变换为

       一般的贝叶斯公式计算到这里,难点就是如何求出概率P(x1, x2, x3, …, xn | y), 这个条件概率一眼看过去非常难求,所以朴素贝叶斯算法提出了第一个假设:假设x1, x2, x3, …, xn这些特征是相互独立的,所以可将上式变换为

       目前阶段,上式有所简化,但看上去还是比较难计算,因为P(xn|y)如何计算也是个比较麻烦的问题,所以朴素贝叶斯算法提出了第2个假设:假设P(xn|y)服从高斯分布,也就是正态分布,所以可用下式计算P(xn|y):

       至此,P(y | X)已经可以通过贝叶斯公式计算得到,但是,我们还可以对贝叶斯公式进一步简化,因为在机器学习领域,我们使用贝叶斯公式,主要是计算分类任务下当前样本取各分类类别的概率相对大小,而对各类别概率的具体取值并不关心,下面公式中的P(X),对所有分类类别是一样的,所以在计算各类别概率时,可省略掉计算P(X)。

      然后,可以得到下式最终用于计算各类别概率的公式组:

      P(y=yi)可通过计算原始样本集中y=yi的个数,再除以总的样本个数,即可计算得到P(y=yi),这样计算下来,可以得到P(y=0|X)、P(y=1|X)、P(y=2|X)、…、P(y=n|X)的概率,最终分类出为这n个概率中的最大者。

       以上描述皆为对朴素贝叶斯算法原理推导的大概描述,有些细节就暂且忽略,具体精准的算法原理,见以下代码实现:

 

  MyGaussionNB类是对高斯朴素贝叶斯算法的封装实现。

 

       朴素贝叶斯算法应用于乳腺癌预测数据集上,准确率达到94.7%,效果似乎还可以,后面会对比较常见的机器学习算法在准确率和耗时维度上进行比较。

标签:概率,公式,第五课,贝叶斯,算法,计算,朴素
From: https://www.cnblogs.com/tgltt/p/17443750.html

相关文章

  • 算法刷题记录:译码
    题目链接https://ac.nowcoder.com/acm/contest/19306/1046解题思路:10进制转x进制,只要反复%x、/x即可。%x取出末尾的数字,因为末尾的数字已经取出,所以将该数字\掉可以一起算也可以循环,取模不会影响除数。AC代码#include<iostream>usingnamespacestd;intT,n;//将......
  • IO调度算法的简单学习与整理
    IO调度算法的简单学习与整理前言前几天整理了/sys/block/sda/queue/nr_requests以及/sys/block/sda/device/queue_depth的两个参数#没别的意思我就是再背一遍,怕自己记性不好记不住.其实队列数量和队列参数之外还有一些调度算法.所以今天想继续研究一下IO的调度算......
  • 算法与数据结构高手养成-求职提升特训
    算法与数据结构高手养成-求职提升特训download:3w51xuebccom算法和数据结构是计算机科学中非常重要的概念。它们不仅在编程中扮演了关键角色,而且在其他领域如人工智能、机器学习和物联网等也具有广泛的应用。本文将介绍算法和数据结构的定义和重要性。算法的定义算法是指一组用于......
  • hmac(md5,sha256) 魔改算法逆向
    2bebb2b85345bac93a790d1a6986b3d5经验1貌似特征码,需要在从伪代码切换到汇编模式,再点击看具体值2找出特征码,然后google再带算法,再带csource如md50x242070DBcsource3md5和sha1在transfrom4个特征相同,sha1多两个重命名经验根据上下文关系,需要点进去发现特征量,验......
  • 一文通吃:从 ZooKeeper 一致性,Leader选举讲到 ZAB 协议与 PAXOS 算法(上)
    本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"或慕课网公众号!作者:大能|慕课网讲师本文将从ZooKeeper集群如何保证一致性,讲到zookeeper保证数据一致性的协议,然后展开讲Zookeeper集群Leader选举,包括集群三种节点的类型,ZAB协议中节点的四种状态,以及两种......
  • 代码随想录算法训练营第二十一天|530. 二叉搜索树的最小绝对差、
    【参考链接】530.二叉搜索树的最小绝对差【注意】1.二叉搜索树采用中序遍历,其实就是一个有序数组。2.使用双指针,更快。【代码】1#Definitionforabinarytreenode.2#classTreeNode(object):3#def__init__(self,val=0,left=None,right=None):4#......
  • 每天一颓: 均摊分析, pi函数和KMP算法
    资料内容:https://oi-wiki.org/string/kmp/很久以前学过,写一些笔记作复习资料一些概念:真前缀,真后缀等等不作介绍(真前后缀匹配函数)前缀函数(pi函数):\[\pi[i]=\max_{k=0\dotsi}\{k:s[0\dotsk-1]=s[i-(k-1)\dotsi]\}\]特别规定,\[\pi[0]=0\]/......
  • 代码随想录算法训练营第21天 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中
     第六章 二叉树part07今日内容    详细布置   530.二叉搜索树的最小绝对差  需要领悟一下二叉树遍历上双指针操作,优先掌握递归 题目链接/文章讲解:视频讲解:  501.二叉搜索树中的众数  和 530差不多双指针思路,不过 这里涉及到一个很巧妙的代码......
  • 代码随想录算法训练营第15天 | ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉
     第六章二叉树 part02 今日内容:  ●  层序遍历  10 ●  226.翻转二叉树 ●  101.对称二叉树 2    详细布置   层序遍历  看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。 题目链接/文章讲解/视频讲解:htt......
  • 代码随想录算法训练营第16天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111
     第六章二叉树part03 今日内容:  ●  104.二叉树的最大深度  559.n叉树的最大深度●  111.二叉树的最小深度●  222.完全二叉树的节点个数 迭代法,大家可以直接过,二刷有精力的时候 再去掌握迭代法。  详细布置   104.二叉树的最大深度 (优先掌......