0、叶斯定理可表述为:
后验概率 = (似然性*先验概率)/标准化常量
后验概率与先验概率和相似度的乘积成正比。
另外,P(B|A)/P(B)也有时被称作标准似然度(standardised likelihood),贝叶斯定理可表述为:
后验概率 = 标准似然度*先验概率
---------------------
作者:kongkongqixi
原文:https://blog.csdn.net/kongkongqixi/article/details/82866365
1. 贝叶斯算法是什么?贝叶斯算法基本原理是什么?构建原理是什么?
2. 为什么要求贝叶斯算法是朴素贝叶斯?
3. 贝叶斯分类器中的平滑系数是什么?有什么作用
4. 贝叶斯分类器的理论推导式?
5. 贝叶斯分类器的损失函数是什么?
6. 贝叶斯算法的调优策略?
7. 你觉得贝叶斯算法有什么局限性吗?那你觉得这个局限性怎么解决?优缺点
8. 过拟合和欠拟合的解决方案?
9. 贝叶斯分类器有哪些应用场景?
10.朴素贝叶斯、MAP、MLE、EM 的关系?
1. 贝叶斯算法是什么?贝叶斯算法基本原理是什么?构建原理是什么?
贝叶斯分类器是一种根据贝叶斯公式,在假设特征属性之间相互独立的条件下,由先验概率p(x|y)求最大后验概率(p(y|x)),
最大后验概率率所对应的y值即为预测值。贝叶斯分类器是最大后验概率算法MAP的一种应用。
2. 为什么要求贝叶斯算法是朴素贝叶斯?
朴素贝叶斯分类器指的是训练集特征属性之间是相互独立的,为了使得贝叶斯公式分子的联合概率可以用单个特征属性概率的乘积
来表示。
3. 贝叶斯分类器中的平滑系数是什么?有什么作用
我们都知道朴素贝叶斯使用单个特征属性的条件概率的乘积 == 特征属性联合的条件概率,由于在单个特征属性条件概率中会出
现 0 的情况,这会导致整个特征属性联合条件概率 == 0,这显然是不合法的问题,因此我们在计算单个特征的条件概率时会在
分子分母上加上一个较小的值,防止出现=0的情况,平滑系数多出现在多项式朴素贝叶斯的模型中。
4. 贝叶斯分类器的理论推导式?
下文
5. 贝叶斯分类器的损失函数是什么?
贝叶斯没有类似其他模型的损失函数,详情下文
6. 贝叶斯算法的调优策略?
① 处理特征时,为了满足朴素的特性,需要将相关性特征去掉(例如 PCA降维后特征会相互独立)
② 构建贝叶斯网络一定程度上会缓解特征之间相互依赖的问题
7. 你觉得贝叶斯算法有什么局限性吗?那你觉得这个局限性怎么解决?优缺点
优点:
① 贝叶斯分类器模型速度很快,因为他没有损失函数,不需要训练模型,仅仅是贝叶斯公式的乘法运算(实际上内部会转化为
加法运算)
② 对于文本多分类问题很有效,而且模型的复杂度不会有大幅度的提升
③ 对于类别型特征,在特征相互独立的条件下,效果十分好
缺点:
① 贝叶斯分类要求特征属性之间越独立越好(PCA降维独立特征),实际数据往往不满足(也就是说NB很适合短文本)
② 对于连续性数值变量特征,贝叶斯分类器太要求它要符合正态分布
8. 过拟合和欠拟合的解决方案?
9. 贝叶斯分类器有哪些应用场景?
① 垃圾识别 ② 文本分类 ③ 情感分析(一般可以转换为文本分类) ④ 多分类实施预测(因为速度很快)
⑤ 推荐系统(朴素贝叶斯与协同过滤是一对好搭档,详情见书籍)
10.朴素贝叶斯、MAP、MLE、EM 的关系?
朴素贝叶斯:MAP(最大后验概率)的一种应用
MAP:最大后验概率,是一种特殊的MLE(极大似然估计,先验概率p(y)不同),即 先验概率p(y) * 似然函数(p(x|y),y是带
预测参数)
MLE:极大似然估计
EM:y值是一个未知变量,即EM算法常用作聚类,虚拟出一个先验概率P(z) * 似然函数,然后不断更新迭代模型参数θ。
上文
朴素贝叶斯计算图解
注意:多项式朴素贝叶斯需要加入平滑系数
目的:平滑的主要作用是可以克服条件概率为0的问题,因为某一个特征属性有可能只有在某一个类别中存在,其他类别为特征属性值
为零,即计算其他类别时条件概率为零,会导致整个特征属性条件概率为零,从而造成预测错误。
未做平滑系数求解:
做平滑系数求解:
贝叶斯分类器训练过程与预测过程?
贝叶斯分类器与前面学习的很多算法不同,他没有很明显的模型参数,也不需要多次迭代不断减少损失函数,也没有类似其他模型的训
练过程,仅仅使用统计学的贝叶斯公式由测试集的所有单独特征先验概率的乘积来求最大后验概率的算法。
1、原因:存在着特征属性之间存在着依赖关系
2、概念:贝叶斯网络(Bayesian Network),又称有向无环图模型(directed acyclic graphical model, DAG)
3、优缺点:
优点:考虑到了朴素贝叶斯无法解决特征属性存在着依赖关系的问题
缺点:贝叶斯网络依赖关系较难获取。
4、贝叶斯网络 与 朴素贝叶斯 计算的区别?
1、朴素贝叶斯 计算条件联合概率 p(x1,x2..xn | yi) = p(x1|yi) * ... * p(xn|yi)
2、贝叶斯网络 计算条件联合概率 p(x1,x2..xn | yi)要利用全概率公式计算,其他均一样。
注意点:
① 当C给定的情况下,a、b相互独立的。
② 当C不给定时,a、b相互依赖。
注意点:
① 当C给定的情况下,a、b相互独立的。
② 当C不给定时,a、b相互依赖。
注意点:
① 当C不给定的情况下,a、b相互独立的。
② 当C给定时,a、b相互依赖。
pass
1、EM算法的作用:
是一种求出含有未知量(不可观测确只是存在)混合模型的最优参数的一种算法,也就是说它是一种求解思想,不是一个模型。
2、EM使用场景:
无监督学习数据没有y值(y值作为隐藏变量),因此EM算法通常用作无监督模型最优参数求解。代表GMM
3、EM算法与极大似然估计MLE的区别?
① 模型没有未知参量时,用MLE或者MAP
② 模型有未知参量时,用EM
3、EM算法过程:类似于KMeans循环迭代更新,每次都是期望最大(期望每个蔟的似然函数最大)。
1、EM算法是一种迭代类型的算法,是一种在概率模型中寻找参数最大似然估计或者最大 后验估计的算法,其中概率模型依赖于无
法观测的隐藏变量。
2、• EM算法流程:
• 初始化分布参数/模型参数
• 重复下列两个操作直到收敛:
• E步骤:估计隐藏变量的概率分布期望函数;
• M步骤:根据期望函数重新估计分布参数。
1、贝叶斯估计:最大后验概率(MAP)估计,它是一种标签先验不是处处相等的极大似然估计,通常用来做文本分类问题,即监督学习。
2、极大似然估计:MLE,它是一种特殊的MAP算法,它是有监督的算法。
3、EM算法:它是一种无监督的聚类算法;思想与KMeans迭代思想相同,
它与MAP、MLE不同的是:① EM算法需要迭代不段更新 ② EM算法模型含有未知参量。
1、GMM的基本思想:
任何形态都可以用多个不同权重系数的高斯函数叠加而成。
而GMM作为聚类算法时,假设了多蔟数据均符合高斯分布。它是一种基于最大概率的算法。
2、GMM:多个高斯分布(一元或多元,一个高斯分布相当于一个蔟)线性叠加而成的模型。 ---------- 无监督聚类算法,高斯
模型的个数 = 聚类蔟的个数。
3、GMM模型中因为有未知参量,所以它需要使用EM算法来求解模型最优参数。
4、GMM模型的优缺点:
优点:
① 多维情况下,高斯混合模型在计算均值和方差使用了协方差矩阵,应用了不同维度之间相互约束的关系,在各类尺寸不同、
聚类之间有相关关系时,GMM比K-means聚类更加适合。
② GMM 基于概率密度函数进行学习,所以除了聚类以外,还常用于密度检测
③ KMeans是硬聚类,要么属于这个蔟,要么属于哪个蔟;EM算法是软聚类,一个样本预测时会计算它属于每一个蔟的概率,只
是取一个最大的蔟概率而已
缺点:
① 在蔟与蔟差异较小的分类效果较差。
② 假设了蔟数据符合高斯分布
③ 蔟个数只能靠猜
④ 结果受初始值影响。
5、GMM使用场景?
① 假设数据多蔟符合高斯分布 聚类
② 密度检测
库地址:sklearn.naive_bayes: Naive Bayes
from sklearn.naive_bayes import GaussianNB
class sklearn.naive_bayes.GaussianNB(priors=None)
'''
priors=None ------- 自定义先验概率,默认即可
'''
class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
'''
alpha=1.0 --------- 多项式朴素贝叶斯的平滑系数,默认即可
fit_prior=True --------- 是否训练先验概率,默认即可
class_prior=None --------- 类的先验概率。如果指定,则不根据数据调整先验;默认即可
'''
与高斯贝叶斯相同
class sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
与多项式贝叶斯用法相同
与高斯贝叶斯用法相同
CountVectorizer 类 负责将文档集合转化为词频矩阵,TfidfTransformer 类负责将词频矩阵转化为归一化TF或TF-IDF表示
1、将文本数据转换为向量的形式(词袋法) 要求给定的数据中单词是以空格隔开的。
2、API默认至少统计长度为2的单词的词袋法(类似:的 我 是 ... 不会统计)
===============================================================================
参数:
stop_words = [...] 指定那些单词不能用作特征属性,传入参数是一个列表。
实例:
可以帮助我们完成向量化,TF-IDF和标准化三步。当然,还可以帮我们处理停用词
sklearn.mixture: Gaussian Mixture Models
class sklearn.mixture.GaussianMixture(n_components=1, covariance_type='full', tol=0.001,
reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans', weights_init=None,
means_init=None, precisions_init=None, random_state=None, warm_start=False, verbose=0,
verbose_interval=10)
class sklearn.mixture.BayesianGaussianMixture(n_components=1, covariance_type='full',
tol=0.001, reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans',
weight_concentration_prior_type='dirichlet_process', weight_concentration_prior=None,
mean_precision_prior=None, mean_prior=None, degrees_of_freedom_prior=None,
covariance_prior=None, random_state=None, warm_start=False, verbose=0,
verbose_interval=10)