朴素贝叶斯算法是一个分类算法
分类算法
使用一个事物的几个特征参数,通过大量数据训练得出模型,然后通过该模型预测事物是哪个分类。
注意
在进行算法之前需要先明确一点,特征参数是离散的还是连续的,离散的就是,温度高中低,数值大小,好坏,连续的就是降雨量多少到多少,温度几度到几度,这将影响到之后求条件概率。
每种分类结果对应一个后验概率,后验概率最大的是预测结果
后验概率=先验概率*条件概率
开始算法
求先验概率
首先我们获取训练数据集(就是一张2维数据表),
比如获取了一张,预测下不下雨,特征参数是温度高中低,湿度高中低,风级大小,一一对应的10条数据。其中分类结果为下雨的数据除以10,就是下雨的的先验概率,比如为0.3,不下雨的数据除以10就是不下下雨先验概率,比如为0.7,这样每种预测结果的先验概率就求好了,注意先验概率的和等于1。
条件概率
特征参数离散
比如下雨的数据有3条,然后我们在这三条数据中求出温度高,中,低分别所占的比例,比如分别为0.2,0.1,0.7,再求出湿度高中低分别所占的比例,比如分别为0.3,0.5,0.2再求出风级大与小分别所占的比例,比如分别为0.6,0.4
其实说白了就是求当下雨的情况满足时,每个特征参数的每种值所占的比例,每个特征参数的每种值所占的比例相加等于1
然后再求当不下雨的情况满足时,每个特征参数的每种值所占的比例,比如不下雨的数据有7条,然后我们在这三条数据中求出温度高,中,低分别所占的比例,比如分别为0.4,0.5,0.1。
再求出湿度高中低分别所占的比例,比如分别为0.1,0.2,0.7再求出风级大与小分别所占的比例,比如分别为0.3,0.7。
这样下雨与不下雨的先验概率和下雨与不下雨的条件概率都求好了,然后现在可以进行预测了,比如我给你一条参数,温度中,湿度高,风级小,那么他下雨的概率(也叫下雨的后验概率)就是0.30.10.60.4,不下雨的概率就是0.70.50.10.7。
然后看下雨的概率大还是不下雨的概率大然后就预测完成了,注意只是找一个概率大的,不一定就是完全正确的。
####特征参数连续
前验概率求法如上。
因为是连续的,条件概率求法之前有所不同,所以我们要通过公式求每个特征参数的条件概率
首先默认他服从高斯分布,然后先知道这个公式
这里的n是平均值,rou是标准差,x是验证样本各属性的值,带入之后求出条件概率
均值与标准差的求法
均值与标准差的意义
均值是平均值就不说了,
标准差应用于投资上,可作为量度回报稳定性的指标。标准差数值越大,代表回报远离过去平均数值,回报较不稳定故风险越高。相反,标准差数值越小,代表回报较为稳定,风险亦较小。
所以求标准差一定要用到均值作为中间值
均值等于下雨的记录中某一特征参数所有值相加除以下雨的记录条数,不下雨均值求法相同
求完后是一个2维数组,下雨时每一个特征参数的均值,和不下雨时每一个特征参数的均值
标准差
n是每种分类的记录数,直接用之前求前验概率时求出的数组就行,需要注意的是这里Si是一个二维数组Si【分类】【属性】
每条记录的每个特征参数都有一个标准差
高斯分布
高斯分布,由于属性值是离散的,所以不能用与训练数据属性比较大小的方式求出验证数据每个属性出现的概率,所以我们默认数据的每个属性值服从高斯分布,就是一个倒扣的钟形状的分布,而高斯分布曲线的具体形状由均值n与标准差rou决定,所以需要求训练数据中的均值与标准差,并且训练数据的每个属性的均值与标准差确定一个高斯分布曲线,再把均值,标砖差和验证数据对应属性的值一起带入
就知道该属性值在训练数据中出现的概率。
根据均值与标准差求条件概率
一条验证数据Xn带入由x[属性],训练数据均方差n[分类,属性]与平均值rou[分类,属性]的公式,得出一个tiaojian[属性,分类]的二维数组即各种属性对应各种分类的概率,之前求的前验概率qianyan[分类]是训练数据中各种分类出现的概率。
最终我们求出的后验概率是综合所有属性(因为各属性是条件独立,所以直接累乘就行)后各种分类出现的概率即条件概率,这里说的综合所有属性就是p[属性,分类]每一行数据都相乘到一起,最终得出一列数据,这列数据和qianyan[分类]一一相乘就得出了后验概率,取最大的作为分类结果。
其实之前离散的也是求出一条验证数据Xn,各种属性对应各种分类的概率,最后把属性消掉,即每一行数据都相乘到一起,综合出了一列不同分类一一对应的概率作为条件概率
求后验概率
求完均值与标准差之后,与验证样本的特征参数值一起带入公式,我们就得出了该记录在下雨与不下雨的前提下每个特征参数的条件概率
然后把下雨的每个特征参数的条件概率乘到一起,然后再乘以下雨先验概率
再把每个不下雨的每个特征参数的条件概率乘到一起,然后再乘以不下雨先验概率
看看哪个大,就知道下雨的概率大还是不下雨的概率大了