如何获得高斯朴素贝叶斯分类器的特征重要性?

机器算法验证 机器学习 分类 特征选择 朴素贝叶斯 重要性
2022-03-11 23:51:38

我有一个由 4 个类和大约 200 个特征组成的数据集。我已经实现了一个高斯朴素贝叶斯分类器。我现在想根据高斯朴素贝叶斯分类器计算每对类的每个特征的重要性。最后,我想可视化每对类的 10 个最重要的特征。这意味着对于 1 类和 2 类,我想要特征 1、特征 2 等的重要性。

我的建议是计算logP(Xn|Y=i)P(Xn|Y=j)对于每一对类。

我已经计算了每个特征和每个类的均值和方差。这意味着我对 200 个特征和 4 个类中的每一个都有一个均值和方差。采用正态分布,我可以对新数据点进行分类。

您现在将如何计算特征重要性度量?

假设我们计算logP(X1|Y=1)P(X1|Y=2),这意味着第一个特征(X1) 和第 1 类和第 2 类,所以它应该给出第 1 类和第 2 类的第一个特征的重要性。

我有第 1 类和第 2 类的第一个特征的正态分布,但我应该如何计算概率,即,我应该在什么时候评估正态分布?

3个回答

一个特征的判别价值是基于它的类之间的统计距离。

我已经计算了每个特征和每个类的平均值和方差

使用您的功能i班级j估计平均值μ^i,j和估计方差σ^i,j2,一种方法是计算您比较的两个类的每个特征的对称 KL 散度。特征分布之间的最大距离是该对的最佳判别特征。

两个正态分布的 KL 散度很容易计算

我将使用每个特征作为单独的输入来确定所有可能的类比较的 ROC-AUC。下面是 4 类问题的所有可能类比较的 AUC 曲线的 ROC-AUC 图,但它基于具有多个特征的运行。

在此处输入图像描述

我使用朴素贝叶斯编写了自己的特征重要性方法,我将在这里介绍。该提案在计算上有点昂贵,因为您基本上有 6 个二项式模型。

  1. 将数据拆分为 (80 / 20)(训练/测试迭代)。重复以下步骤 25-50 次。

  2. 对于每次迭代和每对类(二项式),创建一个二项式模型:

A. 在 80 上训练分类器,在 20 上进行测试。这是你的基础水平表现。

B.(重复此步骤 200 次,每个特征一次)。在训练数据中一次置换/打乱一个特征的标签。重新训练分类器和评分测试集。记录性能下降。打乱特定特征的标签会破坏特征和标签之间的相关性。在 25-50 次不同的迭代中,更“重要”的功能将有更大的性能下降。