前言

  • 文章来源: LawsonAbs@CSDN
  • 弄懂一个算法是快乐的,V(^-^)V
  • 是生成模型,是分类算法。使用的参数估计方法是极大似然估计(其实就是频率统计)

在定义朴素贝叶斯之前,先给出如下几个变量的定义:

  • X X X 是定义在n维向量上的随机变量,表示特征。设 x x x是其中的一个样本
  • Y Y Y 是定义在 c 1 , c 2 , . . . , c k {c_1,c_2,...,c_k} c1​,c2​,...,ck​ 上的随机变量,表示类别。设 y y y是其中的一个样本
  • x j x^j xj表示特征向量 x x x的第j
  • c k c_k ck​表示第k

接着来讨论朴素贝叶斯问题。

1.定义

1.1 朴素贝叶斯是干什么的?

朴素贝叶斯算法目的是为了计算在给定特征数据 x x x下, y y y的取值情况,是一种分类算法。

1.2 朴素贝叶斯怎么做的?

朴素贝叶斯的思想基于贝叶斯定理,这个定理是朴素贝叶斯成立的关键,这个有点儿等价转换的思想在里头,即求A复杂,那么我们能不能转换成求B?
贝叶斯定理其实就是基于条件概率得到的定理,如下:
p ( y ∣ x ) = p ( x , y ) p ( x ) = p ( x ∣ y ) p ( y ) p ( x ) p(y|x)= \frac{p(x,y)}{p(x)} = \frac{p(x|y)p(y)}{p(x)} p(y∣x)=p(x)p(x,y)​=p(x)p(x∣y)p(y)​

  • 贝叶斯定理的解释
    目标是计算后验概率 p ( y ∣ x ) p(y|x) p(y∣x),根据上述公式,因为 p ( x ) p(x) p(x)是已知的【因为 x x x是给出的样本数据】,所以我们只需要知道 p ( x , y ) p(x,y) p(x,y)。那么该怎么求 p ( x , y ) p(x,y) p(x,y)呢?我们可以学习先验概率分布 p ( y = c k ) p(y=c_k) p(y=ck​)以及条件概率分布来获取 p ( x ∣ y = c k ) p(x|y=c_k) p(x∣y=ck​),从而获取到 p ( x , y ) p(x,y) p(x,y)。即:
    P ( y = c k ) , k = 1 , 2 , 3 , . . . K P ( x ∣ y = c k ) = P ( x 1 , . . . x n ∣ y = c k ) = > P ( x , y ) = P ( x ∣ y = c k ) ∗ P ( y = c k ) \begin{aligned} &P(y=c_k) , k = 1,2,3,... K\\ &P(x|y=c_k) = P(x^1,...x^n| y=c_k)\\ &=>P(x,y) = P(x|y=c_k) * P(y=c_k) \end{aligned} ​P(y=ck​),k=1,2,3,...KP(x∣y=ck​)=P(x1,...xn∣y=ck​)=>P(x,y)=P(x∣y=ck​)∗P(y=ck​)​
    这里的 x 1 x^1 x1 的含义是:随机变量 x x x的第一维特征的取值。

2.表达式

根据上述,那么在给定数据 x x x的情况下,得到其分类的结果则是:
y = a r g m a x c k P ( y = c k ) ∏ j P ( x j ∣ y = c k ) y=argmax_{c_{k}} \quad P(y=c_k)\quad \prod_{j} P(x^j | y = c^k) y=argmaxck​​P(y=ck​)j∏​P(xj∣y=ck)

3.为什么说它是朴素的?

因为该模型假设在类确定的条件下,其各个特征是相互独立的。 (独立性体现在上面的这个累乘操作)

4.条件独立性假设有什么用?具体说明。

条件独立性假设是用于简化计算才提出的。因为每个特征都有不同个数的取值,假设 x j x^j xj的取值有 S j S_j Sj​个,因为需要遍历取值,那么对于计算 P ( X = x ∣ Y = c k ) = P ( X 1 = x 1 , . . . X n = x n ∣ Y = c k ) P(X=x|Y=c_k) = P(X^1=x^1,...X^n=x^n| Y=c_k) P(X=x∣Y=ck​)=P(X1=x1,...Xn=xn∣Y=ck​) 的复杂度就是 K ∏ j n S j K \prod_{j}^{n} S_j K∏jn​Sj​。这个复杂度是很高的。所以可以简化成
P ( X = x ∣ Y = c k ) = P ( X 1 = x 1 ∣ Y = c k ) . . . P ( X n = x n ∣ Y = c k ) = ∏ j = 1 n P X j = x j ∣ Y = c k \begin{aligned} P(X=x|Y=c_k) &= P(X^1=x^1| Y=c_k) ... P(X^n=x^n| Y=c_k) \\ &= \prod_{j=1}^{n}P{X^j=x^j|Y=c_k}\\ \end{aligned} P(X=x∣Y=ck​)​=P(X1=x1∣Y=ck​)...P(Xn=xn∣Y=ck​)=j=1∏n​PXj=xj∣Y=ck​​
变成一个连乘的形式。

5.实际应用

这里我们尝试使用朴素贝叶斯做一个文本分类。文本不同于图像,比如说:MNIST手写数据集中,图像是有固定大小的(28*28=784),这样就可以得到一个784维的向量,然后这每一维都可以看作是特征,但是文本该怎么做呢?这就涉及到特征工程 这门儿手艺,即怎么从文本中获取各个特征?
我个人思考的方法有:

  • 使用 TF-IDF 获取一个文本中的常用词,这样我们可以按照其得分排列,组合成一个固定维数的向量。但这又涉及到另外一个问题,即各个变量的不同维度上的特征可能不是同性质的东西,比如: x 1 1 x^1_1 x11​ 与 x 2 1 x^1_2 x21​ 的这个第一维特征是同类特征吗?如果不是同类特征就不具备计算 p ( x ∣ y ) p(x|y) p(x∣y)的前提。

参考资料

  • 李航《统计学习方法》

算法工程师面试之朴素贝叶斯相关推荐

  1. 【白话机器学习】算法理论+实战之朴素贝叶斯

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  2. 【手写算法实现】 之 朴素贝叶斯 Naive Bayes 篇

    [手写算法实现] 之 朴素贝叶斯 Naive Bayes 篇 朴素贝叶斯模型(naive bayes)属于分类模型,也是最为简单的概率图模型,对于之后理解HMM.CRF等模型,大有裨益.这里手写算法介 ...

  3. 白话 贝叶斯公式_【白话机器学习】算法理论+实战之朴素贝叶斯

    来自于: AI蜗牛车团队(作者:Miracle8070) 公众号: AI蜗牛车 原文链接:[白话机器学习]算法理论+实战之朴素贝叶斯​mp.weixin.qq.com 有兴趣的同学可以关注我的公众号: ...

  4. 机器学习算法(7)—— 朴素贝叶斯算法

    朴素贝叶斯算法 1 朴素贝叶斯介绍 2 贝叶斯公式 3 拉普拉斯平滑系数 4 朴素贝叶斯api使用 5 朴素贝叶斯算法总结 5.1 朴素贝叶斯优缺点 5.2 朴素贝叶斯疑难点 5.3 与逻辑回归的区别 ...

  5. 《数据分析实战》总结二之分类算法:决策树,朴素贝叶斯,SVM,KNN,Adaboost

    1 决策树 1.1 工作原理 把以前的经验总结出来,最后得到结果 比如打篮球,一般会根据"天气"."温度"."湿度"."刮风&qu ...

  6. 机器学习算法(8)——朴素贝叶斯、最小风险贝叶斯决策

    最后以巨佬--"贝叶斯大爷"作为基本机器学习算法学习的压轴算法>>>>>>>>>>>>>膜拜!!!!! ...

  7. 算法的优缺点_朴素贝叶斯算法的优缺点

      机器学习算法与自然语言处理推荐  来源:http://www.cnblogs.com/pinard/p/6069267.html 作者:刘建平Pinard [机器学习算法与自然语言处理导读]朴素贝 ...

  8. 【机器学习算法笔记系列】朴素贝叶斯(NB)算法详解和实战

    朴素贝叶斯(NB)算法概述 朴素贝叶斯(Naïve Bayes, NB)算法,是一种基于贝叶斯定理与特征条件独立假设的分类方法.朴素:特征条件独立:贝叶斯:基于贝叶斯定理.属于监督学习的生成模型,实现 ...

  9. 02-分类算法:knn、朴素贝叶斯、决策树和随机森林

    目录 sklearn数据集 一.数据集划分 二. 数据集获取 三.sklearn机器学习算法的实现-估计器 分类算法-k近邻算法(KNN) 一.定义: 二.公式: 三.语法: 四.模型调优方法: 1. ...

最新文章

  1. 使用阿里云OSS上传文件
  2. englis translate,word
  3. xps数据怎么导出为txt_使用ExportAsFixedFormat方法将数据导出到PDF或XPS.docx
  4. 【教程】Linux DNS 服务器安装、配置及维护
  5. 2021年office2010每次打开都要配置进度解决方法
  6. Golang 垃圾回收剖析
  7. std::thread 不 join
  8. 动手造轮子:基于 Redis 实现 EventBus
  9. 面试被问进线程的区别
  10. 朴素贝叶斯与贝叶斯网络
  11. java 难题_您可以避免的6种组织成长难题
  12. Python 命令行库的大乱斗 | 凌云时刻
  13. 《HBase权威指南》一第1章 简介
  14. excel教程自学网_Excel零基础入门到高级自学视频教程
  15. 820操作系统(2)进程管理
  16. 【阿里—云计算】从飞天系统到飞天2.0(核心组成:飞天洛神)
  17. 正点原子Lora无线串口的透明传输点对点通信及其注意事项
  18. 【RedisTemplate】Set数据类型的常用操作
  19. vue 安装(看图就够了,皮卡皮卡)
  20. 蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 蓝牙和无线有什么区别?

热门文章

  1. 基于Python实现期权定价和股票技术指标
  2. 2840页的计算机毕业论文!德州奥斯汀华人博士究竟写了啥?
  3. Windows 版本说明,Enterprise、Ultimate、Home、Professional知多少?
  4. 说,有一群 小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在有多少小孩在玩,请用面向对象的思想编写程序解决
  5. 2019年昆明理工大学计算机设计大赛,昆明理工大学计算中心网站
  6. java前后端分离框架,SpringCloud开发微服务平台
  7. 袋鼠云春季生长大会圆满落幕,带来数实融合下的新产品、新方案、新实践
  8. E融汇移动端灰度发布功能演进
  9. 湖南长沙湖南长沙长郡中学长郡中学——循环简单普及题开业了开业了!
  10. template 的用法