我正在尝试将一个类支持向量机与python scikit learn结合使用。
但我不明白在这个address中有哪些不同的变量X_outliersn_error_trainn_error_testn_error_outliers,等等。为什么X是随机选择的,而不是数据集的一部分?
Scikit学习“文档”对我帮助不大另外,我在网上发现的例子很少
在数据密集的情况下,如果我不知道我的训练集中是否存在异常,我可以使用一类支持向量机来检测异常值吗?
一类支持向量机是一种无监督的离群点检测(here
一类支持向量机不是一种异常检测方法,而是一种
新颖性检测方法(here
这可能吗?

最佳答案

好吧,所以这不是一个python问题,更多的是一个支持向量机理解问题,但是。典型的支持向量机分为两类,是一种分为两个阶段的算法:
首先,它将学习变量和属性之间的关系。例如,显示算法番茄图片和香蕉图片,每次告诉他是香蕉还是番茄,然后告诉他计算每张图片中的红色像素数如果你做的正确,支持向量机将被训练,这意味着他将知道,有很多红色像素的图片更有可能是西红柿而不是香蕉。
然后是预测阶段你给他看一张西红柿或香蕉的照片,却不告诉他是哪一个。因为他以前受过训练,所以他会数一数红色像素,知道是哪一个。
在一类支持向量机的例子中,它有点简单,基本上训练阶段是给他显示一堆变量,这些变量都应该是相似的你给他看了一堆西红柿图片,告诉他“这些是西红柿,其他与这些太不同的东西都不是西红柿”。
你链接到的代码是一个测试支持向量机学习能力的代码。首先创建变量X_train。然后生成另外两个集合,X_testX_train(番茄图片)和X_outliers非常不同。(香蕉图片)
然后你给他看X_train变量,告诉你的支持向量机“这是我们正在寻找的那种变量”和clf.fit(X_train)行在我的例子中,这相当于给他展示了大量的西红柿图像,SVN学习什么是“西红柿”。
然后你测试你的支持向量机对新变量的排序能力,向他展示你的另外两个集合(X_testX_outliers),问他是否认为它们与X_train相似。你问他,使用predict函数,predict将为集合中的每个元素产生结果,要么是“1”,即“是,这是与X_train相似的元素”,要么是“-1”,即“这个元素非常不同”。
在理想情况下,支持向量机对于X_test只产生“1”,对于X_outliers只产生“-1”。但这段代码向您表明,情况并非总是如此。变量n_error_用来计算支持向量机所犯的错误,错误地将X_test元素分类为“与X_train不相似,X_outliers元素分类为“与X_train相似”你可以看到,当SVM被要求在训练过的集合上进行预测时,甚至会出现错误(n_error_train
为什么会有这样的错误?欢迎使用机器学习。支持向量机的主要难点在于训练集的设置,使得支持向量机能够有效地学习,区分类别所以你需要仔细设置你给他看的图像的数量(以及他在图像中要注意的东西(在我的例子中,是红色像素的数量,在代码中,是变量的值),但这是另一个问题。
在代码中,X集合的有界但随机初始化意味着,例如,在运行训练期间,X_train集合上的SVM可以有很多介于-0.3和0之间的值,即使它们是在-0.3和0.3之间随机初始化的(特别是如果每个集合中只有几个元素,例如5,并且您得到了[-0.2-0.1 0-0.1 0.1])。因此,当您向SVM显示一个值为0.2的元素时,他将无法将其与X_train关联,因为它将了解到X_train元素更有可能具有负值。
这相当于在训练SVM时给他看一些黄色的西红柿,所以当你在训练之后给他看一个真正的红色西红柿时,它就很难把它归类为西红柿。

关于algorithm - 试图了解一类SVM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41035001/

10-12 16:41