高斯朴素贝叶斯(Gaussian Naive Bayes)是一种基于贝叶斯定理的分类算法,其特点是假设数据的每个特征在每个类别下服从正态分布(即高斯分布)。这种算法通常用于特征服从正态分布的分类问题。
朴素贝叶斯的核心思想
朴素贝叶斯分类器基于贝叶斯定理,计算样本属于各个类别的后验概率,选择后验概率最大的类别作为最终预测结果。它的假设是特征之间相互独立,这也是“朴素”一词的由来。
在高斯朴素贝叶斯中,我们假设每个特征的分布是正态分布(高斯分布)。因此,我们需要知道每个特征在每个类别下的均值和标准差,然后用这些参数来计算每个样本的概率。
计算过程详解
爆米花的消费量(Popcorn) 饮料的消费量(Soda) 糖果的消费量(Candy)
对于喜欢《小鬼当家》的人,爆米花的均值是24克,标准差是4克;对于不喜欢的人,爆米花的均值是4克,标准差是2克。 对于喜欢《小鬼当家》的人,饮料的均值是350ml,标准差是50ml;对于不喜欢的人,饮料的均值是200ml,标准差是60ml。 对于喜欢《小鬼当家》的人,糖果的均值是22克,标准差是5克;对于不喜欢的人,糖果的均值是12克,标准差是3克。
计算先验概率(即每个类别的初始概率):
假设在训练数据中,8人喜欢《小鬼当家》,8人不喜欢,因此先验概率为0.5。
计算20克爆米花、500ml饮料和25克糖果在喜欢《小鬼当家》和不喜欢《小鬼当家》类别下的概率。使用正态分布公式:
计算后验概率:
使用贝叶斯公式,结合先验概率和似然概率,计算样本属于“喜欢《小鬼当家》”和“不喜欢《小鬼当家》”的概率。
如果喜欢《小鬼当家》的后验概率更大,则预测该样本喜欢《小鬼当家》,否则预测不喜欢。
高斯朴素贝叶斯的R语言实现
# 加载 e1071 包,这个包中包含了高斯朴素贝叶斯的函数
library(e1071)
# 创建训练数据集
data <- data.frame(
popcorn = c(24, 4, 30, 5, 26, 5, 20, 4), # 爆米花消费量
soda = c(350, 200, 400, 180, 320, 220, 300, 190), # 饮料消费量
candy = c(22, 12, 25, 10, 24, 11, 23, 9), # 糖果消费量
love_troll2 = factor(c(1, 0, 1, 0, 1, 0, 1, 0)) # 目标变量:1表示喜欢,0表示不喜欢
)
# 拆分数据集为训练集和测试集
train_data <- data[1:6,] # 使用前6条数据作为训练集
test_data <- data[7:8,] # 使用后2条数据作为测试集
# 训练高斯朴素贝叶斯模型
model <- naiveBayes(love_troll2 ~ popcorn + soda + candy, data=train_data)
# 对测试集进行预测
predictions <- predict(model, test_data)
# 输出预测结果
print(predictions)
高斯朴素贝叶斯算法是一种高效且直观的分类方法,适用于特征服从正态分布的情况。其优势在于简单易懂、计算效率高,但需要特征满足独立性和正态分布的假设。在实际应用中,可以通过特征选择和交叉验证来优化模型表现。