为什么添加特征组合会提高线性 SVM 的性能?

数据挖掘 分类 特征选择 支持向量机 特征构造 正规方程
2022-02-26 07:32:05

我有一个由约 30 个二进制值(0 或 1)组成的向量表示的约 5000 个元素的数据集,我在其上使用具有线性内核的 SVM 执行二进制分类(我使用 Scikit 学习库)。

出于好奇,我尝试添加一个额外的功能,该功能包含在另外两个之间的 AND 中(请记住,我所有的功能都是布尔值)。结果是 SVM 的性能提高了。我对这种改进感到惊讶,因为 AND 操作等同于乘法,因此我希望我的 SVM,作为每个线性分类器,不知何故已经自然地考虑到了特征之间的乘法。

我对 SVM 的理论理解有什么问题?

3个回答

乘法不是线性运算。 您的线性 SVM为某些权重构建(超)平面

w0=w1x1+w2x2
w0,w1,w2.

通过引入 AND 特征,您添加了另一个维度:

w0=w1x1+w2x2+w3x1x2.

很可能您的二维数据集不是线性可分的,但三维数据集是。

一个小补充:添加 OR 功能会进一步提高性能吗?不,因为它是其他三个特征的线性组合:其中是 OR,是 AND。xy=x+y(xy)

假设你有一个学习问题,它只是为了拟合一个只依赖于一个特征的函数,而要预测的函数是一个二次形状。如果您使用线性,您可以通过仅具有输入功能来获得良好的性能,SVM但它会出现错误。添加额外的特征,多项式特征作为输入可能有用,但它增加了分类器的复杂性,并导致更多的计算开销。顺便说一句,这是真的。通过添加现有特征的高阶多项式,您可以更好地估计函数。我不知道您是否熟悉正规方程,但这样做是添加高阶多项式以更好地拟合生成当前数据的函数。

直观地说,您构建的线性分类器只是试图找到一个局部最小值,这意味着他正在尝试许多不同的操作,但它并没有考虑整个可能性空间,如果“与”操作与您的问题相关并且您添加它作为一项功能将提高 SVM 的性能。

添加这样的特征的回退是它可以帮助模型过拟合:如果输入空间有很多维度,则更容易找到可以很好地分离数据的线性边界。