主要内容

OneClassSVM

看到下面成了一个支持金宝app向量机(SVM)进行异常检测

自从R2022b

    描述

    使用一个看到下面成了一个支持向量金宝app机模型对象OneClassSVM异常值检测和新奇检测。

    • 在训练数据异常值检测(检测异常)——在训练数据通过使用检测异常ocsvm函数。的ocsvm函数的火车OneClassSVM对象,并返回异常指标和训练数据的分数。

    • 新奇检测(检测异常在新数据与未被污染的训练数据),创建一个OneClassSVM对象通过未被污染的训练数据(数据没有异常值)ocsvm,在新数据通过检测异常对象和新的数据对象的功能isanomaly。的isanomaly函数返回异常指标和评分的新数据。

    创建

    创建一个OneClassSVM通过使用对象ocsvm函数。

    属性

    全部展开

    这个属性是只读的。

    分类预测指标,指定为一个向量的正整数。CategoricalPredictors包含索引值表明相应的预测分类。索引值介于1和p,在那里p预测的数量被用来训练模型。如果所有的预测都直言,那么这个属性是空的([])。

    这个属性是只读的。

    分数异常的训练数据,指定为数字标量范围[0,1]

    • 如果ContaminationFraction值为0,那么ocsvm对待所有正常训练观察观察,并设置分数阈值(ScoreThreshold属性值)的最大异常分数值训练数据。

    • 如果ContaminationFraction值范围内(0,1],然后ocsvm确定阈值(ScoreThreshold属性值),这样的功能检测指定的分数训练观察异常。

    这个属性是只读的。

    内核尺度参数,指定为一个积极的标量。

    这个属性是只读的。

    正则化项,指定为负的标量。

    这个属性是只读的。

    训练数据的预测方法,指定为一个数值向量。

    • 如果您指定StandardizeData = true当你看到下面成了一个支持向量机模型使用训练ocsvm:

      • ocsvm函数不规范列包含分类变量。中的元素μ为分类变量包含值。

      • isanomaly功能规范使用的预测意味着输入数据μ和标准偏差σ

      的长度μ等于预测的数量。

    • 如果你设置StandardizeData = false,然后μ是一个空向量([])。

    这个属性是只读的。

    扩大空间的维度,指定为一个正整数。

    这个属性是只读的。

    值目标函数的内存有限Broyden-Fletcher-Goldfarb-Shanno (LBFGS)支持向量机求解最小化解决看到下面成了问题,指定为一个标量。

    这个属性是只读的。

    预测变量名称,指定为一个单元阵列的特征向量。元素的顺序PredictorNames对应的顺序预测的名字出现在训练数据。

    这个属性是只读的。

    阈值的异常分数用来识别异常在训练数据,指定为一个数字标量范围(负无穷到正无穷)

    软件识别观测与异常分数高于阈值异常。

    这个属性是只读的。

    训练数据的预测标准偏差,指定为一个数值向量。

    • 如果您指定StandardizeData = true当你看到下面成了一个支持向量机模型使用训练ocsvm:

      • ocsvm函数不规范列包含分类变量。中的元素σ为分类变量包含值。

      • isanomaly功能规范使用的预测意味着输入数据μ和标准偏差σ

      的长度σ等于预测的数量。

    • 如果你设置StandardizeData = false,然后σ是一个空向量([])。

    对象的功能

    isanomaly 使用看到下面成了发现异常数据支持向量机(SVM)金宝app

    例子

    全部折叠

    检测异常值(在训练数据异常)使用ocsvm函数。

    加载示例数据集NYCHousing2015

    负载NYCHousing2015

    数据集包括10变量信息属性的销售在2015年在纽约。显示一个总结的数据集。

    总结(NYCHousing2015)
    双重价值:1分钟3马克斯5社区中位数:91446×1单元阵列的特征向量BUILDINGCLASSCATEGORY: 91446×1单元阵列的特征向量RESIDENTIALUNITS: 91446×1双值:最小值0 8759 Max COMMERCIALUNITS中位数:91446×1双值:最小值0最大612 LANDSQUAREFEET: 91446×1双值:最小值0 1700 Max 2.9306 e + 07 GROSSSQUAREFEET中位数:91446×1双值:最小值0 1056 Max 8.9422 e + 06 YEARBUILT中位数:91446×1双值:0值1939 Max 2016分钟SALEPRICE: 91446×1双值:最小0值3.3333 e + 05年最大4.1111 e + 09 SALEDATE: 91446×1 datetime值:Min 01 - 2015年1月- 2015位数09年7月- Max 31 - 12月- 2015

    SALEDATE列是datetime数组,这是不支持的金宝appocsvm。创建列的月和日数据datetime值,删除SALEDATE列。

    [~,NYCHousing2015.MM NYCHousing2015。DD] = ymd (NYCHousing2015.SALEDATE);NYCHousing2015。SALEDATE = [];

    火车看到下面成了一个支持向量机模型NYCHousing2015。指定的比例异常的训练观察为0.1,并指定第一个变量()作为分类预测。第一个变量是一个数值数组,所以ocsvm假设这是一个连续变量,除非你指定变量作为分类变量。此外,指定StandardizeData作为真正的输入数据标准化,因为预测在很大程度上不同的尺度。集KernelScale“汽车”这软件选择一个适当的内核使用启发式程序尺度参数。

    rng (“默认”)%的再现性(Mdl, tf,分数)= ocsvm (NYCHousing2015 ContaminationFraction = 0.1,CategoricalPredictors = 1, StandardizeData = true,KernelScale =“汽车”);

    Mdl是一个OneClassSVM对象。ocsvm还返回异常指标(特遣部队)和异常分数(分数训练数据)NYCHousing2015

    画一个柱状图的分数值。创建一个垂直线的分数阈值对应于指定的分数。

    直方图(分数)参照线(Mdl.ScoreThreshold,“r -”,(“阈值”Mdl.ScoreThreshold])

    如果你想确定异常污染有不同的分数(例如,0.01),你可以训练一个新的看到下面成了一个支持向量机模型。

    rng (“默认”)%的再现性(newMdl newtf,分数)= ocsvm (NYCHousing2015,ContaminationFraction = 0.01, CategoricalPredictors = 1,KernelScale =“汽车”);

    如果你想确定异常有不同的分数阈值(例如,-0.7),你可以通过OneClassSVM对象,训练数据,和一个新的阈值isanomaly函数。

    [newtf,分数]= isanomaly (Mdl、NYCHousing2015 ScoreThreshold = -0.7);

    注意,改变污染分数或分数阈值变化异常指标,并且不影响异常的分数。因此,如果你不想计算异常分数再次利用ocsvmisanomaly,您可以获得一个新的异常指标与现有的评分值。

    改变训练数据中的异常的分数为0.01。

    newContaminationFraction = 0.01;

    找到一个新的分数阈值使用分位数函数。

    1-newContaminationFraction newScoreThreshold =分位数(分数)
    newScoreThreshold = -0.3745

    获得一个新的异常指标。

    newtf = > newScoreThreshold得分;

    创建一个OneClassSVM未被污染的培训对象观察使用ocsvm函数。然后检测小礼品(新数据异常)通过对象和新的数据对象的功能isanomaly

    1994年的人口普查数据加载存储census1994.mat。数据集由人口数据来自美国人口普查局预测一个人是否使每年超过50000美元。

    负载census1994

    census1994包含了训练数据集adultdata和测试数据集成人

    ocsvm不使用观察用缺失值。删除缺失值的数据集,以减少内存消耗,加快培训。

    adultdata = rmmissing (adultdata);成人= rmmissing(成人);

    支持向量机训练看到下面成了adultdata。假设adultdata不包含异常值。指定StandardizeData作为真正的标准化的输入数据,并设置KernelScale“汽车”让函数选择适当的内核使用启发式程序尺度参数。

    rng (“默认”)%的再现性(Mdl ~ s) = ocsvm (adultdata StandardizeData = true, KernelScale =“汽车”);

    Mdl是一个OneClassSVM对象。如果你不指定ContaminationFraction名称参数值大于0,ocsvm把所有训练观察正常观测。这个函数设置分数阈值最大的分数值。显示阈值。

    Mdl.ScoreThreshold
    ans = 0.0322

    发现异常成人通过训练看到下面成了一个支持向量机模型。因为你指定的StandardizeData = true当你训练模型,isanomaly函数标准化输入数据通过使用预测手段和训练数据存储在的标准差μσ属性,分别。

    [tf_test, s_test] = isanomaly (Mdl,成人);

    isanomaly函数的作用是:返回异常指标tf_test和分数s_test成人。默认情况下,isanomaly确定观测分数高于阈值(Mdl.ScoreThreshold)异常。

    创建直方图异常分数年代s_test。创建一个垂直线阈值的异常分数。

    h1 =直方图(年代,NumBins = 50,标准化=“概率”);持有h2 =直方图(s_test h1.BinEdges正常化=“概率”);参照线(Mdl.ScoreThreshold“r -”,加入([“阈值”h1.Parent Mdl.ScoreThreshold]))。YScale =“日志”;h2.Parent。YScale =“日志”;传奇(“训练数据”,“测试数据”位置=“北”)举行

    图包含一个坐标轴对象。坐标轴对象包含3直方图类型的对象,constantline。这些对象代表训练数据,测试数据。

    显示异常的观测指标的测试数据。

    找到(tf_test)
    ans = 0 x1空双列向量

    的异常分数分布测试数据与训练数据,isanomaly没有发现任何异常的测试数据默认阈值。您可以指定一个不同的阈值使用ScoreThreshold名称-值参数。例如,看到的指定异常分数阈值

    更多关于

    全部展开

    引用

    [1]拉希米,。,和B. Recht. “Random Features for Large-Scale Kernel Machines.”先进的神经信息处理系统。20卷,2008年,页1177 - 1184。

    [2],Q。,T。Sarlós, and A. Smola. “Fastfood — Approximating Kernel Expansions in Loglinear Time.”30学报》国际会议上机器学习。3号卷28日,2013年,页244 - 252。

    版本历史

    介绍了R2022b