基于weka的数据库挖掘➖分类方法朴素贝叶斯算法
关于作者
- 作者介绍
🍓 博客主页:作者主页
🍓 简介:JAVA领域优质创作者🥇、一名初入职场小白🎓、曾在校期间参加各种省赛、国赛,斩获一系列荣誉🏆
🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨💻
概率基础
**联合概率: **包含多个条件,且所有条件同时成立的概率 记作:P(A,B)
**条件概率:**就是事件A在另外一个事件B已经发生条件下的发生概率 记作:P(A|B)
相互独立:如果P(A, B) = P(A)P(B),则称事件A与事件B相互独立
贝叶斯公式:
朴素贝叶斯原理
- 贝叶斯定理:朴素贝叶斯算法基于贝叶斯定理,即根据后验概率计算先验概率。对于分类问题,给定一个新的样本x,我们希望计算其属于不同类别的概率,即P(y|x),其中y表示类别,x表示样本的特征。根据贝叶斯定理,可以将后验概率表示为先验概率和似然度的乘积:
P(y|x) = P(x|y) * P(y) / P(x)
,其中,P(x|y)
表示在给定类别y的条件下样本x的特征出现的概率,P(y)
表示类别y的先验概率,P(x)
表示样本x的特征出现的概率。
-
特征条件独立性假设:朴素贝叶斯算法假设样本的特征之间是相互独立的,即每个特征对于分类的贡献是相互独立的。这个假设简化了计算,但有时可能不符合实际情况。尽管如此,在许多实际问题中,朴素贝叶斯的独立性假设仍然能够提供较好的分类结果。
-
参数估计:为了计算贝叶斯分类器的参数,需要根据训练数据估计类别先验概率
P(y)
和特征条件概率P(x|y)
。常用的估计方法包括极大似然估计和贝叶斯估计。 -
分类决策:在得到先验概率P(y)和特征条件概率P(x|y)后,可以使用贝叶斯分类决策规则进行分类。根据贝叶斯定理,选择具有最大后验概率的类别作为最终分类结果:
y_hat = argmax P(y) * P(x|y)
,其中,y_hat表示最终的分类结果。
具体实现:
打开 weather.nominal.arff
,切换到 classify
页,选择 weka->classifiers->bayes->BayesNet
分类器,结果如下:
朴素贝叶斯优缺点
优点
- 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率
- 对缺失数据不太敏感,算法也比较简单,常用于文本分类
- 分类准确度高,速度快
缺点
- 由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好
- 需要计算先验概率,而先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳;
分类方法总结
在KNN分类中,如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。输出是一个分类族群。一个对象的分类是由其邻居的”多数表决”确定的,k个最近邻居(k为正整数,通常较小)中最常见的分类决定了赋予该对象的类别。若k=1,则该对象的类别直接由最近的一个节点赋予。
在ID3算法中,树以代表训练样本的单个结点开始。如果样本都在同一个类,则该结点成为树叶,并用该类标号。否则,算法使用称为信息增益的基于熵的度量作为启发信息,选择能够最好地将样本分类的属性。该属性成为该结点的”测试”或”判定”属性。在算法的该版本中,所有的属性都是分类的,即离散值。连续属性必须离散化。对测试属性的每个已知的值,创建一个分枝,并据此划分样本。算法使用同样的过程,递归地形成每个划分上的样本判定树。一旦一个属性出现在一个结点上,就不必该结点的任何后代上考虑它。递归划分步骤仅当下列条件之一成立停止:1. 给定结点的所有样本属于同一类;2.没有剩余属性可以用来进一步划分样本。在此情况下,使用多数表决。这涉及将给定的结点转换成树叶,并用样本中的多数所在的类标记它。替换地,可以存放结点样本的类分布。
在朴素贝叶斯算法中,有稳定的分类效率,对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。