特征之间的独立性/相关性测试(不是特征标签)

数据挖掘 机器学习 特征选择 相关性
2022-02-16 10:40:16

我正在做一个朴素贝叶斯预测模型,其中有 666 个特征可供选择。

我已经尝试过 SelectKBest chi2 测试,但它是一个特征标签测试,而我想要做的是找出独立性和相关性特征。由于使用朴素贝叶斯的假设是变量都是相互独立的,所以我必须删除相互依赖/相关的特征。

除了我应该研究的其他独立性测试还有哪些chi2? (我有连续的特征)

1个回答

这个非常有用,它具有engg 的功能。为您,为您提供重要的变量。示例代码将是这样的。

    set.seed(123)
    boruta.input <- Boruta(target variable~., data = training_data, doTrace = 2)
    print(boruta.input)

    #plot a graph for better understanding
    plot(boruta.input, xlab = "", xaxt = "n")
    lz<-lapply(1:ncol(boruta.input$ImpHistory),function(i)
    boruta.input$ImpHistory[is.finite(boruta.input$ImpHistory[,i]),i])
    names(lz) <- colnames(boruta.input$ImpHistory)
    Labels <- sort(sapply(lz,median))
    axis(side = 1,las=2,labels = names(Labels),
    at = 1:ncol(boruta.input$ImpHistory), cex.axis = 0.7)

通过使用它,您可以获得所有重要功能,但缺点是如果您有更多数据则需要时间。在我的情况下,我的数据包含 40 个功能和 200,000 条记录,花了将近 2 个小时,但结果很好。

为了更好地理解,您可以通过此链接

--

我认为你也可以使用这个测试,在描述中它告诉它也可以应用于数值数据。

如果您有标称数据,则可以使用G-test

再附加一个链接,其中包括对不同类型功能的测试。将来可能会有所帮助链接

我有一个问题,你为什么不在数据集上应用 PCA(或任何 DR 技术)?(假设您没有尝试任何 DR 技术)

如果您应用 DR 技术,我认为您可能会获得更好的组件,这将有助于您获得更好的结果/更好地理解数据。

正如您提到的,您使用的是NB Classifier,您为什么选择它,有什么具体原因吗?如您所知,还有许多其他分类器可能超过 NB 分类器。在我的例子中,我使用 NB 分类器进行 twitter 情绪挖掘,因为这些是短句,而 NB 分类器最适合我的分析。

希望我的回答有帮助!

注意:朴素贝叶斯

DR:降维