目的:

我正在尝试建立一个模型,以将多个输入分类到单个输出类,这是这样的:


  {x_i1,x_i2,x_i3,...,x_i16}(功能)到y_i(类)


我正在使用SVM进行分类,但是0/1丢失很糟糕(一半的数据被错误分类),这使我得出结论,数据可能是非线性的。这就是为什么我使用多项式基函数。我对每个系数进行了变换,以便获得至4级的多项式的任意组合,以期使我的特征在变换后的空间中呈线性。我新的转换输入看起来像这样:


  {x_i1,...,x_i16,x_i1 ^ 2,...,x_i16 ^ 2,... x_i1 ^ 4,...,x_i16 ^ 4,x_i1 ^ 3,...,x_i16 ^ 3,x_i1 * x_i2,...}


损失被最小化了,但仍然不是我想去的地方。由于随着多项式次数的增加,过拟合的机会增加,因此我添加了正则化以抵消这种情况。我还添加了一个前向贪婪算法,以获取导致最小交叉验证误差的系数,但是并没有太大的改进。

题:

是否有系统的方法来找出哪个变换导致了变换空间中的线性特征行为?对于我来说似乎有点奇怪,我必须尝试每个多项式直到“适合”为止。除了多项式之外,也许还有更好的基函数吗?我了解在低维特征空间中,人们可以简单地将数据绘制出来并直观地估计变换,但是如何在高维空间中进行呢?

也许有些偏离主题,但我还向我介绍了PCA,以便丢弃最初没有提供太多信息的组件。这值得一试吗?

谢谢您的帮助。

最佳答案

您是否尝试过线性和多项式以外的其他内核函数,例如RBF?由于不同的数据集可能具有不同的特性,因此某些内核功能可能会比其他功能更好地工作,尤其是在非线性情况下。

我不知道您使用的是哪种工具,但是以下内容也为初学者提供了有关如何构建SVM模型的指南:

https://www.csie.ntu.edu.tw/~cjlin/libsvm/

首先进行特征选择是一个好主意,尤其是对于高维数据。那些嘈杂或不相关的功能应被删除,从而带来更好的性能和更高的效率。

08-24 14:08