机器学习 - 支持向量机

Posted

技术标签:

【中文标题】机器学习 - 支持向量机【英文标题】:Machine Learning - Support Vector Machines 【发布时间】:2013-06-14 05:30:44 【问题描述】:

我遇到了一个 SVM 示例,但我不明白。如果有人能解释预测的工作原理,我将不胜感激。请看下面的解释:

数据集有 10,000 个观察结果,具有 5 个属性Sepal WidthSepal LengthPetal WidthPetal LengthLabel)。如果标签属于 I.setosa 类,则标签为 positive,如果属于其他类,则为 negative

6000 个观察结果是已知的(即它们属于 I.setosa 类,因此它们的标签属性为正)。其余 4000 的标签未知,因此假定标签为负数。 6000 个观察2500 从剩余 4000 个 中随机选择的观察构成 10 倍交叉验证的集合 .然后使用 SVM(10 折交叉验证)对 8500 次观察 进行机器学习,并绘制 ROC

我们在这里预测哪里?该集合有 6000 个观察值,其值是已知的。剩下的 2500 是如何获得负面标签的?当使用 SVM 时,一些正面的观察得到负面的预测。这个预测对我来说没有任何意义。为什么排除那些 1500 个观察结果

我希望我的解释清楚。如果我没有解释清楚,请告诉我。

【问题讨论】:

为什么不贴出SVM分析的源码(数据集本身就是经典,en.wikipedia.org/wiki/Iris_flower_data_set) 我没有在网上看到这个例子。这只是在讨论 SVM 时出现的一个示例。 【参考方案1】:

我认为问题在于语义问题:您将 4000 个样本集称为“未知”和“否定”——这两者中的哪一个适用是关键区别。

如果 4000 个样本的标签确实未知,那么我会使用 6000 个标记样本 [c.f.下面的验证]。然后将通过测试 N=4000 集来评估它们是否属于 setosa 类来生成预测。

如果相反,我们有 6000 个 setosa 和 4000 个(已知)非 setosa,我们可以构建一个二进制 基于这些数据的分类器 [c.f.下面的验证],然后用它来预测 setosa vs. non on 任何其他可用的未标记数据。

验证: 通常作为模型构建过程的一部分,您将只获取已标记的子集 训练数据并使用它来配置模型。对于未使用的子集,您将模型应用于数据(忽略标签),并将模型预测的内容与真实标签的内容进行比较,以评估错误率。这适用于 1 类和 上面的 2 类情况。

总结:如果您的所有数据都被标记,那么作为模型验证过程的一部分,通常仍会针对其中的一个子集(忽略已知标签)进行预测。

【讨论】:

谢谢!准确地回答了我要找的东西,非常感谢戴夫!【参考方案2】:

您的 SVM 分类器经过训练,可以判断新(未知)实例是否是 I. Setosa 的实例。换句话说,您是在预测新的未标记实例是否为 I.Setosa。

您发现了错误分类的结果,这可能是因为您的训练数据中正面案例的实例比负面案例多得多。此外,通常会有一些误差范围。

总结:您的 SVM 分类器学会了如何识别 I.Setosa 实例,但是,它提供的非 I.Setosa 实例的示例太少,这可能会让您得到一个有偏见的模型。

【讨论】:

以上是关于机器学习 - 支持向量机的主要内容,如果未能解决你的问题,请参考以下文章

机器学习——支持向量机

机器学习基础从感知机到支持向量机&支持向量机的多分类方法

机器学习:支持向量机SVM

机器学习之支持向量机:支持向量机的Python语言实现

机器学习入门之四:机器学习的方法--SVM(支持向量机)(转载)

小白python机器学习之路——支持向量机