1

我为我正在执行的概念验证研究煞费苦心地收集数据。数据由 40 个不同的主题组成,每个主题有 12 个以 60 个时间间隔测量的参数,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 模型相当。

4

1 回答 1

1

如果您是第一次使用 SVM,我强烈建议您看一看著名的 SVM 包libsvm的作者的支持向量分类实用指南。它提供了训练 SVM 分类器的建议列表。

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

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

于 2012-11-26T05:51:32.397 回答