机器学习 - 支持向量机
Posted
技术标签:
【中文标题】机器学习 - 支持向量机【英文标题】:Machine Learning - Support Vector Machines 【发布时间】:2013-06-14 05:30:44 【问题描述】:我遇到了一个 SVM 示例,但我不明白。如果有人能解释预测的工作原理,我将不胜感激。请看下面的解释:
数据集有 10,000 个观察结果,具有 5 个属性(Sepal Width
、Sepal Length
、Petal Width
、Petal Length
、Label
)。如果标签属于 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 实例的示例太少,这可能会让您得到一个有偏见的模型。
【讨论】:
以上是关于机器学习 - 支持向量机的主要内容,如果未能解决你的问题,请参考以下文章