如何在朴素贝叶斯高斯公式的分母中计算归一化器

How to calculate normalizer in denominator of Naive Bayes Gaussian formula

我正在尝试通过自己编写算法来学习朴素贝叶斯高斯机器学习算法。

我注意到在我的实现中所有标签的最终预测概率总和不是 1.0。事实上,我所有的预测概率都是非常小的数字,比如 0.00000000000184 大小。但是,从中选择最大尺寸可以让我做出非常准确的预测。

所以我试图让它们加起来为 1,我认为失败是因为我只使用了先验和似然计算。我忽略了分母中的 Normalizer。

这是我的数据集中的一个例子。第 0-4 列是我的属性,第 4 列是我的标签。

所以,我正在尝试包含规范器。但我无法弄清楚如何。我的标签列是分类的,所以我知道如何计算任何分类值的 P(y) 先验概率。

但是我的属性是真实值,那么如何计算任何此类真实属性的 P(X) 先验概率?这是我要实现的公式。我无法理解分母的计算。

如果您设法计算出每个 class y 的分子:P(x|y)P(y)。 那么分母 P(X) 就是所有 classes y 的总和:P(X)=sum_y ( P(x|y)P(y) )

请注意,NB 算法是关于选择 class y,其中 P(x|y)P(y) 将是最高的。将这些结果中的每一个除以 P(X) 不会改变结论,因此可能不值得计算它。

现在听起来您在计算 P(x|y) 时遇到了问题。 这就是概率建模的用武之地。

一种可能性是说对于每个 class y,观察到的 x 都是独立的(这就是“朴素”的意思)和高斯分布。 所以概率 P(x/y) = product_i(f(x_i,m_y,s_y))

x_i 连续 x 的 4 个观测值中的每一个,f 是高斯密度,m_ys_y 的均值和标准差class y.