哪个 SVM 内核用于二进制分类问题?

机器算法验证 分类 支持向量机 模型选择 libsvm 内核技巧
2022-02-28 09:30:05

在支持向量机方面,我是初学者。是否有一些指导方针说明哪个内核(例如线性、多项式)最适合特定问题?就我而言,我必须根据网页是否包含某些特定信息来对网页进行分类,即我有一个二元分类问题。

您能概括地说哪个内核最适合这项任务吗?还是我必须在我的特定数据集上尝试其中的几个才能找到最好的?顺便说一句,我正在使用 Python 库scikit-learn,它利用了 libSVM 库。

2个回答

您实际上已经在文献中遇到了一些悬而未决的问题。正如您所说,有多种内核(例如,线性、径向基函数、sigmoid、多项式),并将在由它们各自的方程定义的空间中执行您的分类任务。据我所知,没有人明确表明一个内核在一种类型的文本分类任务上总是比另一种表现最好。

需要考虑的一件事是,每个核函数都有 1 个或多个参数需要针对您的数据集进行优化,这意味着,如果您做得正确,您应该有第二个保留训练集合,您可以在该集合上研究这些参数的最佳值。(我说的是第二个保留集合,因为你应该已经有了一个用来为你的分类器找出最佳输入特征的集合。)我做了一个实验,其中我对每个集合进行了大规模优化这些参数用于简单的文本分类任务,并发现每个内核似乎都表现得相当好,但在不同的配置下表现得很好。如果我没记错我的结果,sigmoid 表现最好,但在非常具体的参数调整中做到了——我花了一个多月的时间让我的机器找到。

试试高斯核。

高斯内核经常被首先尝试,并被证明是许多应用程序中最好的内核(也具有您的词袋功能)。您也应该尝试线性内核。不要指望它会给出好的结果,文本分类问题往往是非线性的。但它让您对数据有一种感觉,并且您会对非线性改善结果的程度感到高兴。

确保您正确交叉验证您的内核宽度并考虑如何规范化您的功能(tf-idf 等)。

我想说你可以通过更好的特征归一化来改善你的结果,而不是选择不同的内核(即不是高斯)。