0

在 SVM 的缺点中,他们说

如果特征的数量远大于样本的数量,则该方法很可能表现不佳。

在这种情况下有什么好的选择?

4

1 回答 1

3

您可以密切关注libsvm 初学者指南,在 C.1 部分中,它为您提供了答案以及您所问问题的示例:

C.1 实例数 << 特征数 许多微阵列数据

生物信息学属于这种类型。我们考虑来自 LIBSVM 数据集 ( http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets ) 的白血病数据。训练集和测试集分别有 38 个和 34 个实例。特征数为 7,129,远大于实例数。我们合并这两个文件并比较使用 RBF 和线性内核的交叉验证准确性:

  • 带参数选择的 RBF 内核

    $ cat leu leu.t > leu.combined

    $ python grid.py leu.combined

    ...

    8.0 3.0517578125e-05 97.2222

    (最佳 C=8.0,= 0:000030518,五折交叉验证率=97.2222%)

  • 带参数选择的线性核

    $ python grid.py -log2c -1,2,1 -log2g 1,1,1 -t 0 leu.combined

    ...

    0.5 2.0 98.6111

    (最佳 C=0.5,五折交叉验证率=98.61111%)

    尽管 grid.py 是为 RBF 内核设计的,但上述方式使用线性内核检查各种 C(-log2g 1,1,1 设置一个 dummy )。

使用线性核的交叉验证精度与使用 RBF 核的交叉验证精度相当。显然,当特征数量非常多时,可能不需要映射数据。

除了 LIBSVM,下面提到的 LIBLINEAR 软件也对这种情况下的数据有效。

如您所见,您可以将 SVM 与线性内核一起使用并获得良好的结果。

于 2013-05-28T07:32:23.663 回答