算法工程师面试之朴素贝叶斯
前言
- 文章来源:
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=argmaxckP(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∏jnSj。这个复杂度是很高的。所以可以简化成
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∏nPXj=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. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...
- 【手写算法实现】 之 朴素贝叶斯 Naive Bayes 篇
[手写算法实现] 之 朴素贝叶斯 Naive Bayes 篇 朴素贝叶斯模型(naive bayes)属于分类模型,也是最为简单的概率图模型,对于之后理解HMM.CRF等模型,大有裨益.这里手写算法介 ...
- 白话 贝叶斯公式_【白话机器学习】算法理论+实战之朴素贝叶斯
来自于: AI蜗牛车团队(作者:Miracle8070) 公众号: AI蜗牛车 原文链接:[白话机器学习]算法理论+实战之朴素贝叶斯mp.weixin.qq.com 有兴趣的同学可以关注我的公众号: ...
- 机器学习算法(7)—— 朴素贝叶斯算法
朴素贝叶斯算法 1 朴素贝叶斯介绍 2 贝叶斯公式 3 拉普拉斯平滑系数 4 朴素贝叶斯api使用 5 朴素贝叶斯算法总结 5.1 朴素贝叶斯优缺点 5.2 朴素贝叶斯疑难点 5.3 与逻辑回归的区别 ...
- 《数据分析实战》总结二之分类算法:决策树,朴素贝叶斯,SVM,KNN,Adaboost
1 决策树 1.1 工作原理 把以前的经验总结出来,最后得到结果 比如打篮球,一般会根据"天气"."温度"."湿度"."刮风&qu ...
- 机器学习算法(8)——朴素贝叶斯、最小风险贝叶斯决策
最后以巨佬--"贝叶斯大爷"作为基本机器学习算法学习的压轴算法>>>>>>>>>>>>>膜拜!!!!! ...
- 算法的优缺点_朴素贝叶斯算法的优缺点
机器学习算法与自然语言处理推荐 来源:http://www.cnblogs.com/pinard/p/6069267.html 作者:刘建平Pinard [机器学习算法与自然语言处理导读]朴素贝 ...
- 【机器学习算法笔记系列】朴素贝叶斯(NB)算法详解和实战
朴素贝叶斯(NB)算法概述 朴素贝叶斯(Naïve Bayes, NB)算法,是一种基于贝叶斯定理与特征条件独立假设的分类方法.朴素:特征条件独立:贝叶斯:基于贝叶斯定理.属于监督学习的生成模型,实现 ...
- 02-分类算法:knn、朴素贝叶斯、决策树和随机森林
目录 sklearn数据集 一.数据集划分 二. 数据集获取 三.sklearn机器学习算法的实现-估计器 分类算法-k近邻算法(KNN) 一.定义: 二.公式: 三.语法: 四.模型调优方法: 1. ...
最新文章
- 使用阿里云OSS上传文件
- englis translate,word
- xps数据怎么导出为txt_使用ExportAsFixedFormat方法将数据导出到PDF或XPS.docx
- 【教程】Linux DNS 服务器安装、配置及维护
- 2021年office2010每次打开都要配置进度解决方法
- Golang 垃圾回收剖析
- std::thread 不 join
- 动手造轮子:基于 Redis 实现 EventBus
- 面试被问进线程的区别
- 朴素贝叶斯与贝叶斯网络
- java 难题_您可以避免的6种组织成长难题
- Python 命令行库的大乱斗 | 凌云时刻
- 《HBase权威指南》一第1章 简介
- excel教程自学网_Excel零基础入门到高级自学视频教程
- 820操作系统(2)进程管理
- 【阿里—云计算】从飞天系统到飞天2.0(核心组成:飞天洛神)
- 正点原子Lora无线串口的透明传输点对点通信及其注意事项
- 【RedisTemplate】Set数据类型的常用操作
- vue 安装(看图就够了,皮卡皮卡)
- 蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 蓝牙和无线有什么区别?
热门文章
- 基于Python实现期权定价和股票技术指标
- 2840页的计算机毕业论文!德州奥斯汀华人博士究竟写了啥?
- Windows 版本说明,Enterprise、Ultimate、Home、Professional知多少?
- 说,有一群 小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在有多少小孩在玩,请用面向对象的思想编写程序解决
- 2019年昆明理工大学计算机设计大赛,昆明理工大学计算中心网站
- java前后端分离框架,SpringCloud开发微服务平台
- 袋鼠云春季生长大会圆满落幕,带来数实融合下的新产品、新方案、新实践
- E融汇移动端灰度发布功能演进
- 湖南长沙湖南长沙长郡中学长郡中学——循环简单普及题开业了开业了!
- template 的用法