【问题标题】:Simple Sequential feature selection in MatlabMatlab中的简单序列特征选择
【发布时间】:2013-04-17 18:45:20
【问题描述】:

我有一个40X3249 噪声数据集和40X1 结果集。我想在 Matlab 中对其执行简单的顺序特征选择。 Matlab示例很复杂,我无法理解。即使是一些关于 SoF 的例子也无济于事。我想使用 决策树 作为分类器来执行特征选择。有人可以简单地解释一下吗。
与特征数量相比,我的数据集的观察数量非常少,这也是一个问题吗?
我正在关注这个例子:Sequential feature selection Matlab,我收到这样的错误:

TRAINING 的合并协方差矩阵必须是正定的。

【问题讨论】:

    标签: matlab select machine-learning


    【解决方案1】:

    此错误来自于在该问题中使用了 classify 函数,该函数正在执行 LDA。当数据等级不足(或者换句话说,某些特征几乎完全相关)时,会发生此错误。为了克服这个问题,您应该将数据投影到较低维的子空间。主成分分析可以为您做到这一点。 Matlab统计工具箱中pca函数的使用方法见here

    [basis, scores, ~] = pca(X); % Find the basis functions and their weighting, X is row vectors
    indices = find(scores > eps(2*max(scores))); % This is to find irrelevant components up to  machine precision of the biggest component .. with a litte extra tolerance (2x)
    new_basis = basis(:, indices); % This gets us the relevant components, which are stored in variable "basis" as column vectors
    X_new = X*new_basis; % inner products between the new basis functions spanning some subspace of the original, and the original feature vectors
    

    这应该让您自动投影到相关的子空间。请注意,您的特征将不再具有与以前相同的含义,因为它们将是旧特征的加权组合。

    额外说明:如果您不想更改特征表示,那么您需要使用适用于排名不足数据的东西,而不是分类。您可以推出自己的惩罚判别分析版本(这很简单),使用支持向量机或其他不会像 LDA 那样破坏相关特征的分类函数(由于需要协方差估计的矩阵求逆)。

    编辑:P.S 我没有对此进行测试,因为我已经在 Matlab 中推出了我自己的 PCA 版本。

    【讨论】:

      【解决方案2】:

      我已经解释了您在回答之前的问题时收到的错误消息。

      一般来说,变量多于样本是一个问题。这将阻止您使用某些技术,例如您尝试的判别分析,但无论如何这是一个问题。事实是,如果变量与样本的比率如此之高,那么即使变量都是随机数,某些变量组合很可能会完美地分类您的数据集。如果您构建了一个单一的决策树模型,这是正确的,如果您使用特征选择方法来显式搜索变量组合,则更是如此。

      我建议您尝试某种降维方法。如果您的所有变量都是连续的,您可以按照@user1207217 的建议尝试 PCA。或者,您可以使用潜在变量方法进行模型构建,例如 PLS(MATLAB 中的plsregress)。

      如果您仍然打算在此数据集上使用带有决策树的顺序特征选择,那么您应该能够修改您链接到的问题中的示例,将分类调用替换为 classregtree

      【讨论】:

      • 在 Matlab 文档中给出的示例中:mathworks.in/help/stats/examples/…,他们减少了他们的功能集的暗淡。他们的数据集是 216X4000,这也太大了。为什么我不能像他们一样做暗淡减少?我试过了,但我得到了和上面一样的错误。
      • 您可以尝试以与此处给出的示例相同的方式进行降维。但是,他们的数据集比你的数据集有更多的样本,而且特征更少。不是 4000,而是 150,因为他们在应用 sequentialfs 之前应用了过滤器。他们还使用sequentialfsnfeatures 参数将其限制为最多选择50 个特征,这小于样本数,因此他们不会得到您所看到的错误。也许很快你就会相信我,将sequentialfs 和LDA 应用于40x3249 大小的数据集并不是一个好主意。按照建议您尝试 PCA。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 2014-01-18
      • 2017-11-15
      • 1970-01-01
      • 2017-08-17
      • 2020-02-24
      相关资源
      最近更新 更多