我最近开始尝试使用OneClassSVM(使用Sklearn)进行无监督学习,我跟随
this example

对于这些愚蠢的问题,我表示歉意,但是我对两件事感到困惑:


我应该同时针对常规示例案例和异常值进行svm培训,还是仅针对常规示例进行培训?
OSVM预测的代表异常值的标签是1还是-1


对于这些问题,我再次表示歉意,但由于某种原因,我找不到该文档记录的任何软件

最佳答案

在此示例中,您引用的是新颖性检测,docs表示:


  新奇检测:
  
  训练数据不受异常值的污染,我们对检测新观测值中的异常感兴趣。


含义:您应该只训练常规示例。

该方法基于:


  Schölkopf,Bernhard等。 “估计对高维分布的支持。”神经计算13.7(2001):1443-1471。


提取:


  假设您从基本概率分布P中获得了一些数据集,并且想要估计输入空间的“简单”子集S,以使从P提取的测试点位于S之外的概率等于0和1。
  
  我们提出一种方法,通过尝试估计对S为正而对补码为负的函数f来解决此问题。


上面的文档还说:


  异常值标记为1,而异常值标记为-1。


这也可以从您的示例代码中提取出来:

# Generate some regular novel observations
X = 0.3 * np.random.randn(20, 2)
X_test = np.r_[X + 2, X - 2]
...
# all regular = inliers (defined above)
y_pred_test = clf.predict(X_test)
...
# -1 = outlier <-> error as assumed to be inlier
n_error_test = y_pred_test[y_pred_test == -1].size

关于machine-learning - 对sklearn的OSVM实现感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49873952/

10-12 16:37