机器学习——朴素贝叶斯
朴素贝叶斯是一种基于贝叶斯定理的分类算法,其基本原理是利用特征之间的条件独立性假设来进行分类。它被称为“朴素”是因为它假设特征之间是独立的,这在现实中往往不成立,但在许多实际应用中,朴素贝叶斯算法依然表现良好。
原理
1、贝叶斯定理
2、特征独立性假设(朴素假设):
朴素贝叶斯算法的关键假设是:给定类别的情况下,各特征之间是条件独立的。也就是说,特征 X1,X2,…,Xn在给定类别C时,相互之间没有依赖关系。因此,似然函数P(X∣C) 可以拆解为各个特征的乘积:
3、分类规则
计算每个类别 CCC 的后验概率 P(C∣X),然后选择后验概率最大的类别作为预测结果(分类决策):
注:实际过程中P(X)不需要计算,因为最终比较不同类别下P(X∣C)的概率,不同类别下P(X)是相同的,是一个常数。则有等价关系:
因此,分类决策可以简化为:
其中,
示例代码
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data # 特征
y = iris.target # 标签
# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 初始化模型
model = GaussianNB()
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.4f}")
# 输出结果:
# 模型准确率: 0.9778
优点:
-
简单、易于实现,计算效率高。
-
对小样本数据有良好的表现,特别适合文本分类等领域。
-
对缺失数据不敏感,能够处理多类别问题。
缺点:
-
朴素假设(特征独立性)往往不成立,导致模型性能下降,特别是特征之间存在较强相关性时。
-
对于特征中出现的未知值或者概率为零的情况,可能会影响分类结果。