解释 naiveBayes 分类器在 e1071:R 中返回的条件概率
Posted
技术标签:
【中文标题】解释 naiveBayes 分类器在 e1071:R 中返回的条件概率【英文标题】:Interpreting conditional probabilities returned by naiveBayes classifier in e1071:R 【发布时间】:2016-10-18 20:35:40 【问题描述】:使用以下过程处理分类解决方案:
一个。使用 e1071 在 R 中执行朴素贝叶斯分类。
b.获取先验表和条件概率表
c。使用应用程序中的 PL/SQL 程序使用这些值进行预测。即最终预测将不涉及 R predict 函数的使用。
在步骤 b 中,我看到 R 在模型生成后返回的负数和大于 1 的条件概率 - 它们真的是条件概率吗?
用 2 个数据集说明问题 - 一个我能够解释,一个我无法解释。
数据集 1: 水果识别(在这个论坛的一个漂亮的朴素贝叶斯插图中看到了这一点)
Data Frame Fruit_All:
Long Sweet Yellow Fruit
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes Yes Yes Banana
No Yes Yes Banana
No Yes Yes Orange
No Yes Yes Orange
No Yes Yes Orange
Yes Yes Yes Other
No Yes No Other
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes No Yes Banana
Yes No No Banana
No No Yes Banana
No No Yes Orange
No No Yes Orange
No No Yes Orange
Yes Yes No Other
No No No Other
执行朴素贝叶斯分类:
`NB.fit <- naiveBayes(Fruit~., data=Fruit_All,laplace=0)`
Fruit 是类列,Fruit_All 是完整的数据框。
NB.fit 中返回的条件概率与预期完全一致。
此外,所有行的概率加起来正好是 1。例如,香蕉+黄色为 0.1 + 0.9
条件概率:
Long
Y No Yes
Banana 0.2 0.8
Orange 1.0 0.0
Other 0.5 0.5
Sweet
Y No Yes
Banana 0.30 0.70
Orange 0.50 0.50
Other 0.25 0.75
Yellow
Y No Yes
Banana 0.10 0.90
Orange 0.00 1.00
Other 0.75 0.25
A-priori probabilities:
Banana Orange Other
0.5 0.3 0.2
我可以使用上述内容轻松编写代码来预测所提供输入的结果,例如对于 Long、Sweet 和 Yellow 都等于是。
该产品最大的水果:
P(Long|Fruit) * P(Sweet|Fruit) * P(Yellow|Fruit) * apriori P(Fruit)
数据集 2:R 中可用的鸢尾花数据集
`NB.fit <- naiveBayes(Species~., data=iris)`
条件概率:
Sepal.Length
Y [,1] [,2]
setosa 5.006 0.3524897
versicolor 5.936 0.5161711
virginica 6.588 0.6358796
Sepal.Width
Y [,1] [,2]
setosa 3.428 0.3790644
versicolor 2.770 0.3137983
virginica 2.974 0.3224966
Petal.Length
Y [,1] [,2]
setosa 1.462 0.1736640
versicolor 4.260 0.4699110
virginica 5.552 0.5518947
Petal.Width
Y [,1] [,2]
setosa 0.246 0.1053856
versicolor 1.326 0.1977527
virginica 2.026 0.2746501
在这种情况下,同一个函数似乎没有返回条件概率,因为一些值大于 1,并且没有任何行加起来为 1。
注意:如果我在 R 中使用 predict 函数,我会得到正确的结果作为 Iris 的预测。
我了解 Iris 数据集有点不同,因为变量是连续数值,而不是与水果示例不同的因子。
对于其他复杂的数据集,我什至将负值视为分类器返回的条件概率。虽然最终结果在 R 内是好的。
问题:
Iris 数据集返回的条件概率真的是条件概率吗?
我在水果示例中所做的相同产品最大化是否适用于鸢尾花,甚至适用于条件概率为负的数据集?
是否可以根据 Iris 条件概率表编写自定义预测函数?
【问题讨论】:
【参考方案1】:这个答案晚了大约一年,但我偶然发现了它。正如您所写,预测变量是数字的,因此对这些因素的处理方式不同。您得到的是条件高斯分布的均值(第一列)和 sd(第二列)。因此,对于
Petal.Width
Y [,1] [,2]
setosa 0.246 0.1053856
平均花瓣宽度为 0.246,标准差为 0.10。你也可以从
中看到> iris %>% dplyr::filter(Species=="setosa") %>%
dplyr::summarize(mean(Petal.Width), sd(Petal.Width))
mean(Petal.Width) sd(Petal.Width)
1 0.246 0.1053856
高斯密度用于利用贝叶斯公式对条件概率进行反演,得到合适的条件概率。
【讨论】:
以上是关于解释 naiveBayes 分类器在 e1071:R 中返回的条件概率的主要内容,如果未能解决你的问题,请参考以下文章