如何在分类中将多个输入建模为单个输出?
How to model multiple inputs to single output in classification?
用途:
我正在尝试构建一个模型以class将多个输入转化为单个输出class,它是这样的:
{x_i1, x_i2, x_i3, ..., x_i16} (features) to y_i (class)
我正在使用 SVM 进行 class 化,但是 0/1 损失很糟糕(一半的数据被错误class化),这让我得出结论数据可能是非线性的。这就是我玩多项式基函数的原因。我对每个系数进行了变换,以便获得最高为 4 的多项式的任意组合,希望我的特征在变换后的 space 中是线性的。我的新转换输入如下所示:
{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, ...}
损失已最小化,但仍未到达我想去的地方。由于随着多项式次数的增加,过度拟合的可能性会增加,因此我添加了正则化以抵消这种情况。我还添加了一个前向贪婪算法,以获取导致最小交叉验证错误的系数,但没有太大改进。
问题:
是否有系统的方法来确定哪个变换导致变换后的线性特征行为space?对我来说似乎有点奇怪,我必须尝试每个多项式直到它 "fits"。除了多项式,还有更好的基函数吗?我知道在低维特征 space 中,可以简单地绘制出数据并直观地估计变换,但我如何在高维特征 space 中做到这一点?
也许有点题外话,但我也告诉自己有关 PCA 的信息,以便首先丢弃那些不提供太多信息的组件。这值得一试吗?
感谢您的帮助。
除了线性和多项式之外,您是否尝试过其他核函数,例如 RBF?由于不同的数据集可能具有不同的特征,因此某些核函数可能比其他核函数工作得更好,尤其是在非线性情况下。
不知道你用的是什么工具,不过下面这个也为初学者提供了一个如何构建SVM模型的指南:
https://www.csie.ntu.edu.tw/~cjlin/libsvm/
首先进行特征选择步骤总是一个好主意,尤其是对于高维数据。应该去除那些嘈杂或不相关的功能,从而获得更好的性能和更高的效率。
用途:
我正在尝试构建一个模型以class将多个输入转化为单个输出class,它是这样的:
{x_i1, x_i2, x_i3, ..., x_i16} (features) to y_i (class)
我正在使用 SVM 进行 class 化,但是 0/1 损失很糟糕(一半的数据被错误class化),这让我得出结论数据可能是非线性的。这就是我玩多项式基函数的原因。我对每个系数进行了变换,以便获得最高为 4 的多项式的任意组合,希望我的特征在变换后的 space 中是线性的。我的新转换输入如下所示:
{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, ...}
损失已最小化,但仍未到达我想去的地方。由于随着多项式次数的增加,过度拟合的可能性会增加,因此我添加了正则化以抵消这种情况。我还添加了一个前向贪婪算法,以获取导致最小交叉验证错误的系数,但没有太大改进。
问题:
是否有系统的方法来确定哪个变换导致变换后的线性特征行为space?对我来说似乎有点奇怪,我必须尝试每个多项式直到它 "fits"。除了多项式,还有更好的基函数吗?我知道在低维特征 space 中,可以简单地绘制出数据并直观地估计变换,但我如何在高维特征 space 中做到这一点?
也许有点题外话,但我也告诉自己有关 PCA 的信息,以便首先丢弃那些不提供太多信息的组件。这值得一试吗?
感谢您的帮助。
除了线性和多项式之外,您是否尝试过其他核函数,例如 RBF?由于不同的数据集可能具有不同的特征,因此某些核函数可能比其他核函数工作得更好,尤其是在非线性情况下。
不知道你用的是什么工具,不过下面这个也为初学者提供了一个如何构建SVM模型的指南:
https://www.csie.ntu.edu.tw/~cjlin/libsvm/
首先进行特征选择步骤总是一个好主意,尤其是对于高维数据。应该去除那些嘈杂或不相关的功能,从而获得更好的性能和更高的效率。