神经网络的结果很好,而支持向量机的结果不好;令人担忧的原因



我为正在进行的概念验证研究煞费苦心地收集了数据。数据由40个不同的受试者组成,每个受试者在60个时间间隔内测量12个参数,1个输出参数为0或1。所以我正在构建一个二进制分类器。

我事先知道输入参数和输出之间存在非线性关系,因此贝叶斯分类器的简单感知器将无法对样本进行分类。经过初步测试,这一假设被证明是正确的。

因此,我选择了神经网络,正如我所希望的那样,结果非常好。结果通常是大约1-5%的误差。培训采用70%作为培训,30%作为评估。通过模型再次运行完整的数据集(100%),我对结果非常满意。以下是典型的混淆矩阵(P=正,N=负):

P    N
P  13    2   
N   3   42

所以我很高兴,我使用了30%的评价,我相信我不适合噪音。

因此,我决定使用SVM进行双重检查,但SVM无法收敛到一个好的解决方案。大多数情况下,解决方案都很糟糕(比如90%的错误…)。也许我没有完全意识到SVM或实现不正确,但这让我很困扰,因为我认为当NN提供一个好的解决方案时,SVM由于其最大裕度超平面而在大多数情况下更好地分离数据。

这说明我的结果如何?我能适应噪音吗?我怎么知道这是不是一个正确的结果?

我使用Encog进行计算,但NN结果与我制作的国产NN模型相当。

如果这是您第一次使用SVM,我强烈建议您参阅著名SVM软件包libsvm的作者撰写的《支持向量分类实用指南》。它给出了一个训练SVM分类器的建议列表。

  • 将数据转换为SVM包的格式
  • 对数据进行简单的缩放
  • 考虑RBF核
  • 使用交叉验证来确定最佳参数C和γ
  • 使用最佳参数C和γ
  • 训练整套训练
  • 测试

简而言之,尝试缩放数据并仔细选择内核和参数。

最新更新