用于测试非线性 SVM 的数据集

Posted

技术标签:

【中文标题】用于测试非线性 SVM 的数据集【英文标题】:Datasets to test Nonlinear SVM 【发布时间】:2011-08-20 17:19:49 【问题描述】:

我正在实现一个非线性 SVM,我想在一个简单的非线性可分数据上测试我的实现。谷歌没有帮我找到我想要的。你能告诉我在哪里可以找到这样的数据吗?或者至少,我怎样才能手动生成这样的数据?

谢谢,

【问题讨论】:

【参考方案1】:

嗯,SVM 是两类分类器 - 即,这些分类器将数据放置在单个决策边界的任一侧。

因此,我建议一个仅包含两个类的数据集(这不是绝对必要的,因为 SVM 可以通过多次(串行)传递分类器来分离两个以上的类,这样做很麻烦这在初始测试期间)。

例如,您可以使用 iris 数据集,在 Scott 的回答中链接到;它由三个类组成,I类与II类和III类线性可分; II 类和 III 类不是线性可分的。如果你想使用这个数据集,为了方便起见,你可能更喜欢删除 I 类(大约前 50 个数据行),所以剩下的是一个二分类系统,其中两个剩余的类不是线性可分的.

iris 数据集非常小(150 x 4,或 50 行/类 x 四个特征)——取决于您在哪里进行 SVM 原型测试,这可能正是您想要的,或者您可能想要更大的数据集。

由大型约会网站eHarmony 提供的匿名数据集是一个有趣的数据集系列,它们仅包含两个类别并且绝对是非线性可分的(没有任何形式的隶属关系)。除了 iris 数据之外,我还喜欢将这些数据集用于 SVM 原型评估,因为它们是具有相当多特征的大型数据集,但仍然仅包含两个非线性可分类。

我知道您可以从两个地方检索此数据。 first Site 有一个数据集(PCI 代码下载,第 9 章,matchmaker.csv),由 500 个数据点(行)和六个特征(列)组成。尽管此集合更易于使用,但数据或多或少处于“原始”形式,需要进行一些处理才能使用它。

此数据的second source 包含两个 eHarmony 数据集,其中一个包含超过 50 万行和 59 个特征。此外,这两个数据集已经过大量处理,因此在将它们提供给 SVM 之前唯一需要完成的任务就是对特征进行例行重新缩放。

【讨论】:

最后两个链接坏了;我还能从哪里获得 eHarmony 数据集?【参考方案2】:

您需要的特定数据集在很大程度上取决于您选择的核函数,因此似乎最简单的方法就是自己创建一个玩具数据集。

一些有用的想法:

同心圆 螺旋形类 嵌套的香蕉形类

如果你只想要一个不可线性分离的随机数据集,我可以建议Iris dataset吗?这是一个多元数据集,其中至少有几个所讨论的类不是线性可分的。

希望这会有所帮助!

【讨论】:

【参考方案3】:

您可以从简单的数据集开始,例如 Iris 或双月,它们都是线性不可分的。满意后,您可以从UCI ML repository, classification datasets 转移到更大的数据集。

请务必与标准 SVM 求解器(如 libSVM 和 SVM-light)进行比较和基准测试。

【讨论】:

【参考方案4】:

如果你用 Python 编程,你可以使用 sklearn.datasets.samples_generator 包中的一些函数来手动生成嵌套的月亮形状数据集、同心圆数据集等。Here 是这些图的页面数据集。

如果您不想手动生成数据集,可以参考this website,在“形状集”部分,您可以下载这些数据集并直接对其进行测试。

【讨论】:

以上是关于用于测试非线性 SVM 的数据集的主要内容,如果未能解决你的问题,请参考以下文章

R语言e1071包中的支持向量机:仿真数据(螺旋线性不可分数据集)简单线性核的支持向量机SVM(模型在测试集上的表现可视化模型预测的结果添加超平面区域与原始数据标签进行对比分析)如何改进核函数

机器学习之支持向量机(SVM)

R语言e1071包中的支持向量机:螺旋线型线性不可分数据集RBF核函数支持向量机SVM(验证模型在测试集上的表现可视化模型预测的结果添加超平面区域与原始数据标签进行对比分析)

线性 SVM 用于线性分离具有两个特征的数据

SVM

07 SVM - 软间隔模型