分类预测:Bayes Classifier -2|学习笔记

简介: 快速学习分类预测:Bayes Classifier -2

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践分类预测:Bayes Classifier -2】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15446


分类预测:Bayes Classifier -2

 

内容介绍:

一、朴素贝叶斯分类器

二、朴素贝叶斯分类算法完整示例

三、条件概率的 m 估计

四、总结

 

一、朴素贝叶斯分类器

在刚刚的推导过程当中,最关键的是给定每个类别,求每个属性取值的概率。

下面我们通过例子来把这个最关键的内容来感性认识一下。我们左边这张表是一个样本数据有十条记录,然后它的属性值有是否还款、婚姻状况、最后收入以及有没有欺诈行为,注意我们的类别C是有欺诈行为,我们需要计算给定每一个类别取每一个属性的概率,我们的类别有Yes和No就取每一个Yes每一个No,然后它在每一个属性里面取某个值的概率,计算的话,我们先来看一下我们整个C的类别,整个C的概率是多少,我们要分别求是No和Yes的概率,它的计算公式就是C的数量除以总数,这就是概率的最基本的公式,因为类别有两个值Yes和No,我们分别求一下,比如说No的概率在样本里面,No是有七个,总样本是十个,所以No的单独概率是7/10, Yes是有三个,所以Yes的单独概率是3/10,这是先把类别的概率求出来。然后下面我们来看给定类别求属性的概率,属性大家要注意了,我们有两类属性。一类是Refund,它是离散的属性,一类是Income,收入是连续属性。

首先对于离散属性怎么来求,离散属性我们要求给定类别,然后求每一个属性值的概率,公式是每一个属性值它在那个类别上面的数量除以那个类别的整数,下面通过一个计算理解一下,如果是给定类别是No,就是欺诈行为是No,它的婚姻状况是已婚的概率,给定了类别No求婚姻状况是已婚的概率等于分母应该是No的单独概率7/10,再是计算一下在No的情况下Married的概率,公式是A和C的联合概率除以A的单独概率,A和C的联合概率,联合就共同发生的,A就是这个类别是取No的,在No的情况下面C发生的次数也就是在左边的表里面在No的情况下面Married的数量,在No的情况下有四条,在A的样本里面有七条,所以是4/7。

再举个例子,在类别是Yes情况下面还款是Yes的概率,类别是Yes有三条,还款是Yes,这三条里还款都是No,所以整个这个概率就是0,我们就利用这个例子的相似的操作方法,我们可以算出给定每一个C求Ai的概率,C有两种Yes和No,Ai要看具体属性,每一个属性里面有几个值就要计算几次,所以这个计算过程的工作量是比较大,但是计算的难度应该不大的。

连续属性如何求给定类别求连续属性的概率值,这个计算方法有以下几种,第一个,我们前面刚刚算的是离散属性,我们可以把连续属性把它转换成离散属性来进行计算,要转换的话,一种办法是我们将连续属性转换到一个区间里面,也就是通过我们分享的方法把连续属性转换成离散属性;第二种方法是比较简单的离散属性的转换方法,即将连续属性进行二分,也就上连续属性A小于一个阈值,小于就是零,大于等于就是1,通过简单的二分方法将连续属性转换成离散属性;第三种方法,应该是比较合理的方法,是用连续密度空气的方法,它还保留了连续属性的很多信息,我们可以假设这个连续属性符合正态分布,使用正态分布里面分布的相关信息,比如说均值和方差,来计算给定了一个类别值,然后这个连续属性值取值的概率。

对于连续属性用概率密度估计来计算给定类别求连续属性值的概率方法。首先这个样本数据里面连续属性就一列收入,收入我们假设它符合正态分布,对于这样一个连续属性我们给定了类别值,Cj就是某一个类别值,这里有两种一个是No一个是Yes。某一个类别值Cj求连续属性Ai然后它某一个值的概率,比如说我们取No这个欺诈是No,收入是120k这样的概率,概率公式公式是等于右边的分母是根号下2π乘以方差的平方,也就是这一个类别结,在这个收入这个属性上的方差,分子是E的,因为这是一样,所以分子是e的负的分母是2方差的平方分之收入属性里面某一个值,比如120k减去现在类别全是No,在No的情况下的平均值,然后它的平方。整体公式看起来似乎很复杂,但是里面的计算都是常规的,里面基本上都是可以求出来的,方差平均值然后Ai的话就是我们要求那个连续属性它的每一个值,就可以求了,所以在求的过程当中,我们要求出来每一个类别C对每一个连续属性,这样是一对一对来求的,我们下面来求一个具体的值试一下,我们求的这个C的类别是No,我们这个属性是收入,因为我们就一个连续属性,如果是多个连续属性的话这个Ai的话就有多个,我们现在Ai等于固定了只有输入,求它里面的每一个连续值的概率,我们求一个看看,如果我们Class等于No,首先Class等于No的情况下面它的整个平均值就是110,在左边的样本数据里面,它的方差在类别等于No的情况下是2975,这两个值有了以后,我们来求一下类别是No,就是欺诈行为是No,收入是120k的概率,我们代到公式里去,2π是常测量可求出来,因为我们的方差是2975代到公式里去开平方是54.54,它的分子是e的负的2乘以2975,属性值是120k均值是110,然后这个属性值减均值的平方,最终的值是0.0072,这个例子就给大家演示了给定类别值,它的属性是连续值使用概率密度分布的计算方法,尽管计算的过程看起来复杂,但是计算的难度还是不大的。


二、朴素贝叶斯分类算法完整示例

朴素贝叶斯分类器进行样本分类的完整示例,我们给定一条样本还款等于No,已婚,收入是120k,给定了这个X里面的一条记录,我们要求它属于哪个类别,也就是求y是多少,利用贝叶斯分类器来解决X到y的映射关系,解决这个分类问题。我们来看一下朴素贝叶斯分类器,我们的样本里面的类别,它的值是Yes和No,就是有无欺诈行为,分别来看一下Yes和No它对应的属性,对应给定的那个那几个属性,已婚还款等于No,输入120k它的概率,那欺诈行为是No,还款是Yes的概率是3/7,欺诈行为是No还款是No的概率是4/7,类别是Yes欺诈行为Yes还款是Yes的概率是零,欺诈行为是Yes还款是No的概率1,等于100%,类别欺诈行为是No婚姻状况是Single的是2/7,还款是No婚姻状况是离婚的1/7,还款状况是No婚姻状况是Married的是4/7,同样的类别是Yes婚姻状况是Single的是2/7,类别是Yes是离婚的概率1/7,类别是Yes已婚的概率是0,对连续属性收入的这个连续属性,如果类别是No的话,它的平均值110,方差是2975,对于类别是Yes的,它的均值是90,方差是25,我们这些基础的这些计算,计算好了以后,我们下面要来看。刚刚给定的这个X,它到底属于哪一个类,如果哪个类的概率大,哪个类也就是Yes和No,哪个概率大这个样本就属于哪一类。我们来把这两类它的概率求一下,我们假设首先这个类别是No,给定到前面的X,我们利用啊利用条件独立性假设,然后变成每个属性概率的乘积,就是等于No的时候,我们的还款是No,因为我们这里给定的数据是No,我们的类别是No,我们是已婚,给定的类别是已婚,收入是120k,我们的类别是在No的情况下收入120k的概率。我们用前面的基础的计算代到公式里去,概率是0.0024,同样的类别是Yes的情况下,给定的这个X同样的计算以后它的概率是0。很显然类别是No给定到属性的概率,我们的公式里还要单独乘于这个类别的概率是大于类别等于Yes给定属性的概率单独乘以这个类别的概率,因为一个是0,一个是0.0024,它最终的类别应该是No,也就是给定的X它的类别应该是No,这是一个完整的朴素贝叶斯分类法的计算过程。


三、条件概率的 m 估计

有这样一个特殊情况,就是我们要计算朴素贝叶斯的过程当中,我们要用到给定类别,求属性概率连乘,连乘时如果某一个条件概率是零的话,则整个乘积表达式就是零。为了解决这个问题或者有这样一个漏洞,我们就要用一个条件概率m估计的方法。我们来看一下原始的这个求给定类别求属性概率,它是等于这个类别在属性上的数量除以这个类别的总数量,这个值有可能是有可能为零。

对于这个表达式对这个公式如果想要让它不等于零的话,那在公式分子分母上各加一个常量,那这个公式就永远不能为零了,这个加常量的过程当中比较科学的可能要用一个m的一个参数来估计,至于这个具体的原理可以查点资料。我们只要知道这里面加上一个m的估计这个表达式就不会为零了,这就是条件概率的m估计。弥补了某一个条件概率是零整个表达式是零的,这样一个漏洞。image.png


四、总结

首先这个算法对于孤立点,对于样本的孤立噪声点是鲁棒的,鲁棒的意思在机器学习里面是一个很通用的一个术语就是很强壮,想象一下,如果说大冬天你光着膀子给你倒一个冷水,你也不会感冒,那你就很鲁棒;再一个他对于缺失值的处理,可以通过一些忽略的方法来进行处理,不会给整个计算一个什么影响的;另外它对于一些不相关的属性也具有鲁棒性,这就是是它的一些特征。最后我们要注意这样一个问题,就是说条件独立性假设并不是永远成立的,一般的属性之间是有联系的,如果要解决这个问题的话,可以用另外一个贝叶斯的方法叫贝叶斯网络。

image.png对于朴素贝叶斯它是在数据挖掘当中解决一个分类问题,它就是要基于训练基地,其训练基地然后来估计类的经验概率,我们类是用C表示,它估计类的先验概率,然后并为每一个属性来估计他的条件概率,就是给定的某一个类别C,要估计属性里面的每一个取值的概率,这个地方要用到统计里面的其他自然估计的方法,就MLE得方法。另外,我们在应用贝叶斯的过程中,最本质最关键的是要求给定C情况下面这个属性的概率,它的计算过程大家要注意,它从离散属性和连续属性方法上有比较大的差异,当然我们可以把连续属性把它离散化以后,然后利用离散属性点求解方法.

我们再看一下整个贝叶斯算法分类器的整个流程,首先在准备阶段,我们要做数据预处理,获取质量比较高的样本数据,这是第一步,然后下面第二步我们要估计每个类别出现的概率,类别C它的几个值的概率,前面的例子里面有欺诈行为,它的类别只有Yes和No,要分别求出它的概率第二步,第三步估计每个类别条件下每一个属性值出现的概率,这个计算构成比较多,就是某一个类别值,然后在那一组属性里面每一个属性他的每个取值的概率然后再就是对每一个属性组合计算所属于每个类别的概率,就是每一个属性都要计算的,就是每一个类别。

这个属性组合,往往就是我们对于给定的一条样本记录还有一个属性组合,001号的这个客户他有他的属性组合,009号的客户也有他的属性组合,这每一个属性组合我们要计算它的每一个类别的概率,就是类别C它的概率,然后我们要选择最大概率作为该条样本,比如001号样本009号样本,然后选它最大的概率值作为最后的结果输出,这就是我们最终的一个推测阶段和预测阶段。

中间比较计算量比较大的就是整个贝叶斯分类器它的学习阶段,这个工作量是非常大的,大家通过前面的例子也能够知道,要计算每一个类别,在每个属性值上面的概率,所以这段计算量非常大,但是还是很容易理解的。

image.pngimage.png 

这个算法部分是我们数据挖掘的核心部分,同学们在学的过程当中,刚开始学习可能还是有点小难度的,所以我们每一个后面都会有点思考题。

image.png

相关文章
|
7月前
|
机器学习/深度学习 算法 数据可视化
R语言K-Means(K-均值)聚类、朴素贝叶斯(Naive Bayes)模型分类可视化
R语言K-Means(K-均值)聚类、朴素贝叶斯(Naive Bayes)模型分类可视化
|
机器学习/深度学习 移动开发 资源调度
机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类
机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类
|
机器学习/深度学习 传感器 算法
分类预测 | MATLAB实现基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类
分类预测 | MATLAB实现基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类
|
机器学习/深度学习 人工智能 数据可视化
分类预测:Bayes Classifier-1|学习笔记(一)
快速学习分类预测:Bayes Classifier-1
|
数据挖掘 开发者 Python
分类预测:Bayes Classifier-1|学习笔记(二)
快速学习分类预测:Bayes Classifier-1
|
机器学习/深度学习 人工智能 数据可视化
分类预测:Bayes Classifier-1|学习笔记
快速学习分类预测:Bayes Classifier-1
分类预测:Bayes Classifier-1|学习笔记
|
机器学习/深度学习 算法
DL之DNN:基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)
DL之DNN:基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)
|
机器学习/深度学习 数据挖掘 算法框架/工具
Keras之DNN:基于Keras(sigmoid+binary_crossentropy+predict_proba)利用DNN实现分类预测概率——DIY二分类数据集&预测新数据点
Keras之DNN:基于Keras(sigmoid+binary_crossentropy+predict_proba)利用DNN实现分类预测概率——DIY二分类数据集&预测新数据点
Keras之DNN:基于Keras(sigmoid+binary_crossentropy+predict_proba)利用DNN实现分类预测概率——DIY二分类数据集&预测新数据点
|
机器学习/深度学习 数据挖掘 算法框架/工具
Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN实现二分类——DIY二分类数据集&预测新数据点
Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN实现二分类——DIY二分类数据集&预测新数据点
Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN实现二分类——DIY二分类数据集&预测新数据点
|
机器学习/深度学习 算法 数据可视化
TF之LSTM:利用LSTM算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)(一)
TF之LSTM:利用LSTM算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)
TF之LSTM:利用LSTM算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)(一)