R中的一类SVM分类

Posted

技术标签:

【中文标题】R中的一类SVM分类【英文标题】:Classification with One Class SVM in R 【发布时间】:2018-02-08 08:09:10 【问题描述】:

我正在尝试使用仅包含一种类的训练数据集编写用于分类的 SVM。所以,我想预测某些数据是否与我的数据集不同。

我使用与训练相同的数据集进行预测,但不幸的是,SVM 的预测效果不佳。

library(e1071)

# Data set
high  <- c(10,5,14,12,20)
temp  <- c(12,15,20,15,9)
x <- cbind(high,temp)

# Create SVM
model <- svm(x,y=NULL,type='one-classification',kernel='linear')

# Predict training data-set
pred <- predict(model,x)
pred

它返回: 真真假假真

对所有这些都应该是 TRUE。

【问题讨论】:

可能重复:***.com/questions/27375517/…。但实际上这个问题更多的是关于建模而不是编码。您可能应该在Cross Validated 或Data Science 询问。 谢谢,但是这个使用的是结构化数据,我不知道“iris”的结构。我已经在 python 中完成了一个 SVM,并且它工作得很好,但现在我必须使用 R。 我使用了“可能重复”,它与我的错误相同。支持向量机没有正确预测训练数据集。当我使用与训练中使用的相同数据时,函数 predict 返回 50% 的 TRUE 和 50% 的 FALSE。 【参考方案1】:

我正在解决类似的问题。在阅读 e1071 作者在 CRAN 的小插图时,我相信根据定义,SVM 将绘制一个超平面,将其分为 2 个类。换句话说,第 3 项最有可能是异常值。 SVM 将始终定义至少一个异常值。

【讨论】:

【参考方案2】:

我不确定传统的监督学习技术(例如 SVM)是否适合训练只有 1 个类的数据。数据中没有任何内容可以告知模型如何区分 A 类和 B 类。

我认为您可以对 1 类训练数据做的最好的事情是从数据中学习概率密度/质量函数,然后找出新实例在学习的概率密度下的可能性有多大。有关更多信息,请参阅wikipedia article on one-class 分类。

【讨论】:

以上是关于R中的一类SVM分类的主要内容,如果未能解决你的问题,请参考以下文章

一类 SVM 总是返回 FALSE

如何在 R 中绘制一类 SVM?

一类 SVM 检测异常值

SVM 分类 - R 中的归一化

sklearn中的SVM

使用 R 的 CMA Bioconductor 包时,解决 SVM 分类交叉验证中的“模型空”错误