下篇:别被“贝叶斯分类器”吓到——它其实是个超级朴素的“猜一猜”高手

张开发
2026/4/16 18:43:18 15 分钟阅读

分享文章

下篇:别被“贝叶斯分类器”吓到——它其实是个超级朴素的“猜一猜”高手
我们已经知道贝叶斯分类器就是个算概率、选最大的玩意儿朴素贝叶斯是其中最“天真”但最好用的版本。但光知道原理还不够你得知道它到底有哪些兄弟姐妹在实际中能干啥以及——真要用代码实现该怎么做下篇就聊这三件事。一、贝叶斯分类器有哪些类型按对数据分布的假设不同主要分这么几种从简单到复杂1. 朴素贝叶斯Naive Bayes上面已经介绍了。它假设特征之间相互独立。根据特征的数据类型又分三种小类高斯朴素贝叶斯假设特征是连续值并且服从正态分布。比如身高、体重、温度。多项式朴素贝叶斯适用于“计数”型特征比如文本里某个词出现了几次。常用于文本分类。伯努利朴素贝叶斯特征是0/1二元值比如“邮件里有没有出现‘免费’这个词”。也是文本分类的常见选择。2. 贝叶斯网络Bayesian Network朴素贝叶斯的“独立假设”太强了。贝叶斯网络放松了这个假设允许部分特征之间有依赖关系用一张有向图来表示“谁依赖谁”。比如判断是否下雨可以依赖“湿度”和“气压”而“湿度”和“气压”之间又有关系。贝叶斯网络可以建模这种复杂的依赖但代价是计算量大很多而且需要事先知道依赖结构或者从数据中学习。3. TAN树增强朴素贝叶斯这是朴素贝叶斯和完全贝叶斯网络的折中允许每个特征最多依赖一个其他特征形成一个树状结构。比朴素贝叶斯更准又比通用贝叶斯网络简单。4. 半朴素贝叶斯分类器这类方法只考虑部分特征之间的依赖比如通过聚类把特征分成几组组内独立、组间允许依赖。算是“适度放松假设”。实际中最常用的99%的情况就是朴素贝叶斯。因为简单、快速、在小数据上表现好而且对噪声不敏感。剩下的1%是贝叶斯网络用在医疗诊断、故障诊断等需要解释因果关系的场景。二、贝叶斯分类器有什么作用真的在用不是吹作用1垃圾邮件过滤最经典的战场90年代末到2000年代初几乎所有邮箱的垃圾邮件过滤器都基于朴素贝叶斯。它看邮件的每个词计算“这封邮件是垃圾的概率”超过阈值就扔进垃圾箱。直到今天很多轻量级过滤器还在用它。作用2文本分类情感分析、新闻分类评论是好评还是差评看“喜欢、棒、垃圾”这些词的频率。新闻属于体育、娱乐还是科技用贝叶斯分类器训练几千篇新闻后它就能自动归类。作用3推荐系统的“冷启动”当你刚注册一个APP还没任何行为数据时贝叶斯分类器可以根据你的年龄、性别、地域先验来推荐初始内容。等有了行为数据再切换到协同过滤。作用4医疗辅助诊断给定症状发烧、咳嗽、乏力计算每种疾病的概率。贝叶斯分类器天生输出概率医生可以看“感冒80%新冠15%流感5%”而不是一个硬结论。作用5异常检测如信用卡欺诈正常交易的分布是已知的先验来了新交易计算它属于“正常”的概率。如果概率极低就标记为可疑。贝叶斯方法能给出“可疑程度”而不是简单的“是/否”。总结一句话只要你需要做分类并且希望得到概率而不是硬标签贝叶斯分类器就值得一试。三、怎么构建一个贝叶斯分类器三步走不写代码也能懂假设你要做一个“天气适不适合打网球”的分类器特征有“天气状况晴/阴/雨”、“湿度高/中/低”、“风力强/弱”。标签是“打”或“不打”。第一步准备数据统计频次你收集了14天的历史数据。先数一下总共14天其中9天打了网球5天没打。→ 先验概率 P(打)9/14P(不打)5/14。然后数每个特征在每个类别下的次数在“打”的9天里天气为晴的有2天阴的有4天雨的有3天。→ P(晴|打)2/9P(阴|打)4/9P(雨|打)3/9。湿度、风力同理。第二步来了新样本计算概率新的一天天气晴湿度高风力强。我们要算P(打|晴,高,强) ∝ P(打) × P(晴|打) × P(高|打) × P(强|打)P(不打|晴,高,强) ∝ P(不打) × P(晴|不打) × P(高|不打) × P(强|不打)把之前统计的数字乘起来得到两个“未归一化的概率”就是没除以分母的那个数。第三步比较大小做出决定哪个乘积大就分到哪一类。如果P(打|...)的乘积是0.02P(不打|...)的乘积是0.15那就选“不打”。一个坑 如果某个特征值在训练数据里从没出现过比如“打网球的日子里从没有过强风”那P(强|打)0整个乘积就变成0了。这显然不合理——没出现过不代表不可能。解决办法拉普拉斯平滑。简单说就是每个计数都加一个很小的数通常加1避免出现0概率。比如原来P(强|打)0/9平滑后变成(01)/(93)1/12。贝叶斯分类器就像一个经验丰富的老侦探——它把你过去的经验先验和眼前的线索证据结合起来用概率说话。虽然有时候它“天真”地假设所有线索互不相关但这份天真反而让它又快又稳尤其适合文本、医疗、过滤这些场景。下次你打开邮箱的垃圾箱或者看到APP给你推荐“你可能喜欢”的东西心里可以默默说一句这背后可能就是一个贝叶斯分类器在默默干活。

更多文章