使用已知 SVM 参数创建合成数据集

Creating synthetic dataset with known SVM parameters

我想创建一个由 2 classes 和 3 个特征组成的合成数据集,用于测试具有 RBF 内核的 SVM classifier 的超参数优化技术。超参数是 gamma 和 C(成本)。

我创建了我当前的 3D 合成数据集,如下所示:

  1. 我通过从均值为 (1,0,0) 和 (0,1,0) 的多元正态分布中抽样,为每个 class 创建了 10 个基点,和单位方差。

  2. 我为每个 class 添加了更多点,方法是随机选择一个基点,然后从均值等于所选基点和方差的正态分布中抽取一个新点 I/5.

如果我能从数据集中确定最佳的 C 和 gamma(在 运行 SVM 之前),那将是一件非常酷的事情,这样我就可以看到我的优化技术是否为我提供了最佳参数结束。

是否有可能从上述合成数据集计算出最佳伽玛和 C 参数?

或者是否有一种方法可以创建已知最佳 gamma 和 C 参数的合成数据集?

非常有趣的问题,但答案是否定的。它完全是数据特定的,即使确切地知道分布,除非你有无限样本,否则在数学上不可能证明最好 C/gamma 因为 SVM 最终是纯粹基于点的方法(而不是基于密度估计) .典型的比较是在不同的场景中进行的——你获取真实数据,并使用其他技术拟合超参数,比如高斯过程(贝叶斯优化)等,这些技术会生成基线(并且可能也会达到最佳 C 和伽玛,或者至少非常接近给他们)。最后寻找最好的 C 和 gamma 不是复杂的问题,因此只需 运行 好的技术(如 bayesopt)更长时间,你会得到你的最佳选择来比较反对。此外,请记住,超参数优化的任务 不是找到特定的 C 和伽玛 ,而是 找到产生最佳结果的超参数 ,并且在事实上,即使对于 SVM,也可能有许多 "optimal" C 和 gammas 集,尽管彼此相距很远,但它们都产生相同的结果(就您的有限数据集而言)。