处理朴素贝叶斯分类器中缺失属性的问题

我正在编写一个朴素贝叶斯分类器,用于通过WiFi信号强度进行室内房间定位。目前运行良好,但我对缺失特征有一些疑问。由于使用的是WiFi信号,且WiFi接入点并非随处可用,因此这种情况经常发生。

问题1:假设我有两个类别,苹果和香蕉,我想对下面的测试实例T1进行分类。

enter image description here

我完全理解朴素贝叶斯分类器的工作原理。以下是我从维基百科关于分类器的文章中使用的公式。我使用的是均匀的先验概率P(C=c),所以在我的实现中省略了它。

enter image description here

现在,当我计算方程的右侧并遍历所有类条件特征概率时,我应该使用哪组特征?测试实例T1使用特征1、3和4,但这两个类别并不具备所有这些特征。因此,当我执行循环来计算概率乘积时,我看到了几种选择:

  1. 遍历训练中所有特征的并集,即特征1、2、3、4。由于测试实例T1没有特征2,则使用一个人为的微小概率。
  2. 仅遍历测试实例的特征,即1、3和4。
  3. 遍历每个类别可用的特征。为了计算’苹果’的类条件概率,我将使用特征1、2和3,而对于’香蕉’,我将使用2、3和4。

我应该使用上述哪一种方法?

问题2:假设我想对测试实例T2进行分类,其中T2具有在两个类别中都找不到的特征。我使用对数概率来帮助消除下溢,但我不确定循环的细节。我正在做类似这样的事情(使用类似Java的伪代码):

Double bestLogProbability = -100000;ClassLabel bestClassLabel = null;for (ClassLabel classLabel : allClassLabels){    Double logProbabilitySum = 0.0;    for (Feature feature : allFeatures)    {        Double logProbability = getLogProbability(classLabel, feature);        if (logProbability != null)        {            logProbabilitySum += logProbability;        }    }    if (bestLogProbability < logProbability)    {        bestLogProbability = logProbabilitySum;        bestClassLabel = classLabel;    }}

问题是,如果没有一个类别具有测试实例的特征(例如中的特征5),那么logProbabilitySum将保持0.0,导致bestLogProbability为0.0,或线性概率为1.0,这显然是错误的。有什么更好的处理方法吗?


回答:

对于朴素贝叶斯分类器,你的方程右侧应该遍历所有属性。如果你有稀疏填充的属性,通常的处理方法是使用m估计概率,该方法使用等效样本大小来计算你的概率。这将防止在训练数据中缺少属性值时类条件概率变为零。搜索上述两个加粗术语,你会找到许多关于m估计公式的描述。一个很好的参考文本是Tom Mitchell的《机器学习》。基本公式是

P_i = (n_i + m*p_i) / (n + m)

n_i是属性值为f_i的训练实例数量,n是训练实例的数量(当前分类),m是等效样本大小,p_i是f_i的先验概率。如果你将m设为0,这就恢复到标准概率值(对于缺失的属性值可能是零)。当m变得非常大时,P_i接近p_i(即概率由先验概率主导)。如果你没有先验概率可使用,只需将其设为1/k,其中k是属性值的数量。

如果你使用这种方法,那么对于你的实例T2,其在训练数据中没有属性,结果将是训练数据中最常出现的类别。这是有道理的,因为训练数据中没有相关信息可以做出更好的决策。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注