目的:
我正在尝试构建一个模型来将多个输入分类到单个输出类,如下所示:
{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,以便抛弃那些首先没有提供太多信息的组件。这值得一试吗?
感谢您的帮助。
答案 0 :(得分:0)
您是否尝试过除线性和多项式之外的其他内核函数,如RBF?由于不同的数据集可能具有不同的特征,因此某些内核函数可能比其他函数更好地工作,尤其是在非线性情况下。
我不知道您使用的是哪种工具,但下面的工具还为初学者提供了如何构建SVM模型的指南:
https://www.csie.ntu.edu.tw/~cjlin/libsvm/
首先进行特征选择步骤总是一个好主意,特别是对于高维数据。应该带走那些嘈杂或不相关的功能,从而提高性能和效率。