美文网首页
单类SVM(学习笔记)

单类SVM(学习笔记)

作者: 番茄酱的汪 | 来源:发表于2020-03-17 11:43 被阅读0次

    参考链接:https://www.cnblogs.com/wj-1314/p/10701708.html

    一、OneClassSVM的定义

    1. OneClass单分类算法:
    • 无监督学习
    • 只有一个类别,判断是否是这个类别
    1. OneClassSVM严格来说是新奇值检测

    异常值检测:训练数据中含有异常值,通过相关算法找到训练数据的中心模式,忽略偏差观测值,从而检测出异常值。
    奇异值检测:训练数据不包含异常值,只含有positive(正常)的数据,通过算法学习其pattern。之后用于检测未曾看到过新数据是否属于这个pattern,如果属于,该新数据是positive,否则negative,即奇异值。

    • 严格来说,OneCLassSVM不是一种outlier detection,而是一种novelty detection方法:它的训练集不应该掺杂异常点,因为模型可能会去匹配这些异常点。但在数据维度很高,或者对相关数据分布没有任何假设的情况下,OneClassSVM也可以作为一种很好的outlier detection方法。

    二、基本算法思路

    • 基本思路:在特征空间中找到一个分割的超球体(相比svm的超平面),最小化该球体,落在球体以内的就认为是正例,否则就是反例。
    • 目标函数:\min_{r,o}\ V(r)+C\sum\xi_{i}
    • 约束条件:\|x_{i}-o\| \leq r+ \xi_{i},i=1,2...,m
      其中r为半径,o为中心点,\xi_{i}是松弛变量

    三、使用代码

    class sklearn.svm.OneClassSVM(kernel=’rbf’, degree=3, gamma=’auto’,
    coef0=0.0, tol=0.001, nu=0.5, shrinking=True, cache_size=200, verbose=False,
     max_iter=-1, random_state=None)
    
    • 主要参数:
      kernel:核函数(一般使用高斯核)
      nu:设定训练误差(0, 1],表示异常点比例,默认值为0.5

    • 主要方法

      • fit(X):训练,根据训练样本和上面两个参数探测边界。(注意是无监督)

      • predict(X):返回预测值,+1就是正常样本,-1就是异常样本。

      • decision_function(X):返回各样本点到超平面的函数距离(signed distance),正的维正常样本,负的为异常样本。

      • set_params(**params):设置这个评估器的参数,该方法适用于简单估计器以及嵌套对象(例如管道),而后者具有表单<component>_<parameter>的参数,,因此可以更新嵌套对象的每个组件。

      • get_params([deep]):获取这个评估器的参数。

      • fit_predict(X[, y]):在X上执行拟合并返回X的标签,对于异常值,返回 -1 ,对于内点,返回1。

    相关文章

      网友评论

          本文标题:单类SVM(学习笔记)

          本文链接:https://www.haomeiwen.com/subject/esgzehtx.html