ClassificationSVM

万博1manbetx支持向量机(SVM),用于单类和二元分类

描述

ClassificationSVM是一个万博1manbetx支持向量机(SVM)分类一类和两班学习。熟练ClassificationSVM分类存储训练数据,参数值,先验概率,支持向量,和算法实现信息。万博1manbetx使用这些分类来执行任务,如安装一个分数 - 后概率转换功能(见fitPosterior)和预测新的数据标签(见预测)。

创建

创建一个ClassificationSVM通过使用对象fitcsvm

属性

全部展开

SVM属性

此属性是只读的。

训练的分类系数,指定为小号×1数值向量。小号在训练的分类器支持向量的数目,万博1manbetx总和(Mdl.IsS万博1manbetxupportVector)

Α包含双重问题,也就是估计拉格朗日乘数训练过的分类系数。如果您使用的删除重复RemoveDuplicates的名称 - 值对参数fitcsvm,然后给定一组重复的意见,即是支持向量,万博1manbetxΑ包含对应于整个组的一个系数。也就是说,MATLAB®从该组重复的和系数的属性一个非零系数,以一个观测0到集合中的所有其他重复观测。

数据类型:|

此属性是只读的。

线性预测器系数,指定为数值向量。长度Beta版等于用于训练模型预测的数量。

MATLAB使用完全虚拟编码在预测数据中扩展分类变量。也就是说,MATLAB为每个分类变量的每一级创建一个哑变量。Beta版存储每个预测变量,包括虚拟变量的一个值。例如,如果有三个预测器,其中的一个是具有三个电平的分类变量,然后Beta版是含有五个值一个数值向量。

如果KernelParameters.Function“线性”,则分类得分观察X

F X = X / 小号 β + b

MDL商店βb小号在属性Beta版偏见KernelParameters.Scale, 分别。

手动估算分类的分数,你必须先申请任何转换到该训练过程中应用的预测数据。具体来说,如果您指定“标准化”,真当使用fitcsvm,则必须使用手动平均标准化预测数据Mdl.Mu和标准偏差Mdl.Sigma,然后由内核规模划分结果Mdl.KernelParameters.Scale

所有的SVM功能,如resubPredict预测,估计之前应用任何所需的转换。

如果KernelParameters.Function不是“线性”, 然后Beta版是空的 ([])。

数据类型:|

此属性是只读的。

偏置项,指定为标量。

数据类型:|

此属性是只读的。

框约束,指定为一个数值向量ñ×1箱约束ñ是(在训练数据的观测次数看NumObservations属性)。

如果您使用的删除重复RemoveDuplicates的名称 - 值对参数fitcsvm,则对于一组给定的重复观察,MATLAB求和框约束和属性然后总和一个观察。MATLAB属性的箱形约束0集合中所有其他的观察结果。

数据类型:|

此属性是只读的。

缓存信息,指定为结构阵列。缓存信息包含在此表中所述的字段。

领域 描述
尺寸

缓存大小(MB),该软件储备训练SVM分类器。有关详细信息,请参阅'的CacheSize'

算法

缓存算法优化过程中的软件使用。目前,唯一可用的缓存算法队列。您不能设置缓存算法。

显示领域CacheInfo通过使用点符号。例如,Mdl.CacheInfo.Size显示缓存大小的值。

数据类型:结构

此属性是只读的。

万博1manbetx支持向量指示器,指定为ñ-乘1逻辑向量,标记预测器数据矩阵中对应的观测值是否为a万博1manbetx支持向量ñ在训练数据的观测次数(见NumObservations)。

如果您使用的删除重复RemoveDuplicates的名称 - 值对参数fitcsvm,然后给定一组重复的意见,即是支持向量,万博1manbetxIs万博1manbetxSupportVector只标记一个观察作为支持向量。万博1manbetx

数据类型:合乎逻辑

此属性是只读的。

内核参数,指定为结构阵列。该内核的参数属性包含在此表中列出的字段。

领域 描述
功能

核函数用于计算的元素革兰氏矩阵。有关详细信息,请参阅'KernelFunction'

规模

内核尺度参数用于缩放其上模型被训练所述预测数据的所有元素。有关详细信息,请参阅'KernelScale'

要显示的值KernelParameters,使用点记号。例如,Mdl.KernelParameters.Scale显示内核尺度参数值。

该软件接受KernelParameters作为输入,并没有对其进行修改。

数据类型:结构

此属性是只读的。

一类学习参数ν,指定为正标量。

数据类型:|

此属性是只读的。

训练数据中异常值的比例,指定为数值标量。

数据类型:

此属性是只读的。

优化程序用来训练SVM分类,指定为'ISDA''L1QP',或'SMO'。有关详细信息,请参阅“求解”

此属性是只读的。

万博1manbetx支持向量类别标签,指定为小号×1数值向量。小号在训练的分类器支持向量的数目,万博1manbetx总和(Mdl.IsS万博1manbetxupportVector)

的价值+1万博1manbetxSupportVectorLabels指示对应的支持向量是在正类(万博1manbetx类名{2})。的价值-1表示对应的支持向量属于负类(万博1manbetx类名{1})。

如果您使用的删除重复RemoveDuplicates的名称 - 值对参数fitcsvm,然后给定一组重复的意见,即是支持向量,万博1manbetx万博1manbetxSupportVectorLabels包含一个独特的支持向量标签。万博1manbetx

数据类型:|

此属性是只读的。

万博1manbetx在经训练的分类支持向量,指定为小号-通过-p数字矩阵。小号在训练的分类器支持向量的数目,万博1manbetx总和(Mdl.IsS万博1manbetxupportVector)p是预测变量在预测数据的数量。

万博1manbetxSupportVectors包含预测数据行X该MATLAB认为是支持向量。万博1manbetx如果您指定“标准化”,真利用训练SVM分类时fitcsvm, 然后万博1manbetxSupportVectors包含的标准化行X

如果您使用的删除重复RemoveDuplicates的名称 - 值对参数fitcsvm,然后给定一组重复的意见,即是支持向量,万博1manbetx万博1manbetxSupportVectors包含一个独特的支持向量。万博1manbetx

数据类型:|

其他分类属性

此属性是只读的。

直言预测指标,指定为正整数的向量。CategoricalPredictors包含对应于包含分类预测所述预测数据的列的索引值。如果没有预测的是分类的,则此属性是空的([])。

数据类型:|

此属性是只读的。

在训练模型,指定为绝对或字符阵列,逻辑或数字载体,或字符向量的单元阵列使用的唯一类别标签。

数据类型:||合乎逻辑|烧焦|细胞|明确的

此属性是只读的。

误分类成本,指定为数字平方矩阵,其中成本(I,J)将一个分数分类的成本是多少Ĵ如果它的真类是一世

在培训过程中,该软件通过将在成本矩阵所描述的处罚更新先验概率。

  • 对于两班学习,成本总是有这样的形式:成本(I,J)= 1如果I〜= j的成本(I,J)= 0如果我= j的。行对应于真实类和列对应于预测类。行和列的顺序成本对应于类的顺序类名

  • 对于一类学习,成本= 0

有关详细信息,请参阅算法

数据类型:

此属性是只读的。

扩展预测器名,指定为字符向量的单元阵列。

如果该机型采用虚拟变量编码分类变量,然后ExpandedPredictorNames包括描述扩展的变量名。除此以外,ExpandedPredictorNames是相同的PredictorNames

数据类型:细胞

此属性是只读的。

训练数据梯度值,指定为数值向量。长度梯度等于观测值的数目(见NumObservations)。

数据类型:|

此属性是只读的。

参数用来训练ClassificationSVM模型,指定为结构阵列。ModelParameters包含的参数值,例如用于训练SVM分类器的名称 - 值对参数值。ModelParameters不包含估计参数。

的字段ModelParameters通过使用点符号。例如,访问的初始值用于估计Α通过使用Mdl.ModelParameters.Alpha

数据类型:结构

此属性是只读的。

预测器的意思是,指定为一个数值向量。如果您指定'标准化',1要么“标准化”,真当您使用训练SVM分类fitcsvm,然后的长度等于预测的数目。

MATLAB使用完全虚拟编码在预测数据中扩展分类变量。也就是说,MATLAB为每个分类变量的每一级创建一个哑变量。存储每个预测变量,包括虚拟变量的一个值。然而,MATLAB不规范包含分类变量的列。

如果设置“标准化”,假当您使用训练SVM分类fitcsvm, 然后为空向量([])。

数据类型:|

此属性是只读的。

观察存储在训练数据数Xÿ,指定为数值标量。

数据类型:|

此属性是只读的。

预测器变量名,指定为字符向量的单元阵列。的元素的顺序PredictorNames对应于这样的预测的名字出现在训练数据的顺序。

数据类型:细胞

此属性是只读的。

先验概率为每个类,指定为数值向量。的元素的顺序之前对应于元件Mdl.ClassNames

对于两班学习,如果指定了成本矩阵,则该软件通过将在成本矩阵所描述的处罚更新先验概率。

有关详细信息,请参阅算法

数据类型:|

此属性是只读的。

响应变量名,指定为字符向量。

数据类型:烧焦

此属性是只读的。

原始数据的行X在装配中使用ClassificationSVM建模,指定作为逻辑矢量。如果使用所有行此属性是空的。

数据类型:合乎逻辑

分数转换,指定为字符向量或函数句柄。ScoreTransform代表一个内置的转换函数或转换预测分类分数的函数句柄。

要更改分数转换功能功能,例如,使用点符号。

  • 对于一个内置的功能,输入一个字符向量。

    Mdl。ScoreTransform = '功能“;

    此表描述了可用的内置函数。

    描述
    'doublelogit' 1 /(1 +Ë-2X
    'invlogit' 日志(X/(1 -X))
    “ismax” 设置得分与得分最高的类1,并设置分数为所有其他类0
    'Logit模型' 1 /(1 +Ë-X
    '没有'要么“身份” X(无转换)
    '标志' -1X<0
    0X= 0
    1X> 0
    “对称” 2X- 1
    'symmetricismax' 设置得分与得分最高的类1,并设置分数为所有其他类-1
    'symmetriclogit' 2 /(1 +Ë-X) - 1

  • 对于MATLAB函数或您定义的功能,进入它的功能句柄。

    Mdl.ScoreTransform = @功能;

    功能应该接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。

数据类型:烧焦|function_handle

此属性是只读的。

预测标准偏差,指定为数值向量。

如果您指定“标准化”,真当您使用训练SVM分类fitcsvm,然后的长度σ等于预测变量的个数。

MATLAB使用完全虚拟编码在预测数据中扩展分类变量。也就是说,MATLAB为每个分类变量的每一级创建一个哑变量。σ存储每个预测变量,包括虚拟变量的一个值。然而,MATLAB不规范包含分类变量的列。

如果设置“标准化”,假当您使用训练SVM分类fitcsvm, 然后σ为空向量([])。

数据类型:|

此属性是只读的。

观察权重用于训练SVM分类器,指定为ñ×1数值向量。ñ被(观测值的数量看NumObservations)。

fitcsvm归一化在指定的观察权重“权重”名称 - 值对的参数,使得中的元素w ^特定类别内总结该类别的先验概率。

数据类型:|

此属性是只读的。

用于训练SVM分类器的非标准化预测器,指定为数值矩阵或表。

每行X对应于一个观测,并且每一列对应于一个变量。

含有至少一个缺少的值MATLAB排除观测值,以及相应的从元件中移除了ÿ

数据类型:|

此属性是只读的。

类标签用于训练SVM分类器,指定为绝对或字符阵列,逻辑或数字载体,或字符向量的单元阵列。ÿ是相同的数据类型的输入参数ÿfitcsvm(该软件把字符串数组作为字符向量的单元阵列。)

每行ÿ表示的对应行的观察分类X

含有MATLAB排除元素缺失值,并从相应的观察中移除了X

数据类型:||合乎逻辑|烧焦|细胞|明确的

收敛控制属性

此属性是只读的。

收敛信息,指定为结构阵列。

领域 描述
融合 逻辑标志,指示是否所述算法收敛(1表明收敛)。
ReasonForConvergence 字符向量表示软件用于检测收敛性的准则。
差距 双重和原始目标函数之间的标量可行性间隙。
GapTolerance 标可行性间隙误差。设置这种宽容,例如1)依照中,通过使用名称 - 值对参数依照“GapTolerance”, 1fitcsvm
DeltaGradient 上部和下部之间违反标量达到梯度差
DeltaGradientTolerance 标量容忍上下违反之间的梯度差。设置这种宽容,例如1)依照中,通过使用名称 - 值对参数'DeltaGradientTolerance',1E-2fitcsvm
LargestKKTViolation 最大标Karush - 库恩 - 塔克(KKT)违反值。
KKTTolerance 标量公差最大的KKT冲突。设置这种宽容,例如,1 e - 3中,通过使用名称 - 值对参数'KKTTolerance',1E-3fitcsvm
历史

结构数组包含在一套优化迭代收敛信息。这些字段是:

  • NumIterations:迭代指数的数值向量为其软件记录收敛信息

  • 差距:的数值向量差距在迭代值

  • DeltaGradient:的数值向量DeltaGradient在迭代值

  • LargestKKTViolation:的数值向量LargestKKTViolation在迭代值

  • Num万博1manbetxSupportVectors:数值向量指示在迭代支持向量的数目万博1manbetx

  • 目的:的数值向量目的在迭代值

目的 双目标函数的标量值。

数据类型:结构

此属性是只读的。

通过优化程序以达到收敛所需的迭代次数,指定为正整数。

要设置限制的迭代的数量1000,例如,指定'IterationLimit',1000当您使用训练SVM分类fitcsvm

数据类型:

此属性是只读的。

活动集,指定为一个非负整数的减少之间的迭代次数。

要设置的收缩周期1000,例如,指定'ShrinkagePeriod',1000当您使用训练SVM分类fitcsvm

数据类型:|

Hyperparameter优化性能

此属性是只读的。

超参数交叉验证优化的描述,指定为aBayesianOptimization对象或超参数和相关联的值的表。此属性不为空当'OptimizeHyperparameters'的名称 - 值对参数fitcsvm在创建非空。的价值HyperparameterOptimizationResults要看的设置优化在现场HyperparameterOptimizationOptions结构fitcsvm在创建,如在此表中所述。

的价值优化领域 的价值HyperparameterOptimizationResults
'bayesopt'(默认) 类对象BayesianOptimization
'gridsearch'要么'randomsearch' 使用超参数的表,观察到的目标函数值(交叉验证损失),以及观测的秩从最低(最好)至最高(最差)

对象函数

紧凑 减少支持向量机(SVM)分类器万博1manbetx的大小
compareHoldout 使用新的数据的两个分类模型的精度比较
crossval 交叉验证支持向量机(SVM)分万博1manbetx类
discard万博1manbetxSupportVectors 丢弃支持向量用于万博1manbetx线性支持向量机分类器
边缘 发现分类为边缘支持向量机(SVM)分类万博1manbetx
fitPosterior 适合支持向量机(SVM)分类器的后验概率万博1manbetx
损失 查找支持向量机(SVM)分类分类错误万博1manbetx
余量 查找支持向量机(SVM)分类分级利润率万博1manbetx
预测 使用支持向量机分类观测(SVM)分类万博1manbetx
resubEdge 查找分级刃用于通过resubstitution支持向量机(万博1manbetxSVM)分类
resubLoss 查找由resubstitution支持向量机(SVM)分类万博1manbetx分级损失
resubMargin 通过重新替换的方法找到支持向量机分类器的分类边界万博1manbetx
resubPredict 在支持向量机分类观测(SVM)分类万博1manbetx
恢复 恢复训练支持向量机(SVM)分类万博1manbetx

例子

全部收缩

加载费舍尔的虹膜数据集。卸下萼片长度和宽度以及所有观察到setosa虹膜。

加载fisheriris第1 = ~ strcmp(物种,'setosa');X = MEAS(INDS,3:4);Y =物种(INDS);

使用处理后的数据集训练SVM分类器。

SVMModel = fitcsvm(X,Y)
SVMModel = ClassificationSVM ResponseName:‘Y’CategoricalPredictors:[]类名:{“癣”“virginica”} ScoreTransform:“没有一个”NumObservations: 100α:[24 x1双]偏见:-14.4149 KernelParameters: [1 x1 struct] BoxConstraints: x1双[100]ConvergenceInfo: [1 x1 struct] IsSupportVector: x1逻辑[100]解算器:SMO的属性,方法万博1manbetx

SVMModel是一个训练有素的ClassificationSVM分类。显示的属性SVMModel。例如,要确定类顺序,使用点符号。

classOrder = SVMModel.ClassNames
classOrder =2×1单元{“癣”}{' virginica '}

第一类(“花斑癣”)为负的类,和第二(“弗吉尼亚”)是正类。您可以通过使用在培训期间更改类订单“类名”名称 - 值对的参数。

绘制数据的散布图,并绕支持向量。万博1manbetx

SV = SVMModel.万博1manbetxSupportVectors;图gscatter(X(:,1),X(:,2),y)的保持情节(SV(:,1),SV(:,2),'KO''MarkerSize',10)图例(“花斑癣”“弗吉尼亚”“万博1manbetx支持向量”)保持

支持向量万博1manbetx或超出了他们的估计阶级界限发生的观察。

您可以通过使用在培训期间设置框限制来调整边界(和,因此,支持向量的数量)万博1manbetx'BoxConstraint'名称 - 值对的参数。

加载电离层数据集。

加载电离层

列车和交叉验证的SVM分类器。标准化的预测数据,并指定类的顺序。

RNG(1);%用于重现CVSVMModel = fitcsvm(X,Y,“标准化”,真的,...“类名”{“b”‘g’},'CrossVal''上'
CVSVMModel = classreg.learning.partition.ClassificationPartitionedModel CrossValidatedModel: 'SVM' PredictorNames:{1x34细胞} ResponseName: 'Y' NumObservations:351 KFold:10分区:[1x1的cvpartition]类名:{ 'B' 的 'g'} ScoreTransform:'无”的属性,方法

CVSVMModel是一个ClassificationPartitionedModel交叉验证的SVM分类器。默认情况下,该软件使用10倍交叉验证。

另外,您也可以交叉验证训练的ClassificationSVM通过将其传递给crossval

检查使用点符号训练的褶皱之一。

CVSVMModel.Trained {1}
ans = classreg.learning.classif。CompactClassificationSVMResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [78x1 double] Bias: -0.2209 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double] SupportVectors: [78x34 double] SupportVectorLabels: [78x1 double] Properties, Methods

每个折叠是CompactClassificationSVM分类接受了有关数据的90%。

估计泛化误差。

genError = kfoldLoss(CVSVMModel)
genError = 0.1168

平均而言,泛化误差约为12%。

更多关于

全部展开

算法

  • SVM二分类算法的数学公式见万博1manbetx支持向量机的二元分类理解支持向量机万博1manbetx

  • 为NaN<未定义>,空字符向量(“”),空字符串(“”),和<缺失>值表示遗漏值。fitcsvm去除对应于丢失的响应数据的整行。当计算总权重(见下子弹),fitcsvm忽略对应于观察至少一个缺少的预测的任何重量。这个动作可以导致平衡级难题不平衡先验概率。因此,观测箱内的限制可能不等于BoxConstraint

  • fitcsvm删除具有零权重或先验概率的观察。

  • 对于两班学习,如果你指定的成本矩阵 C (看到成本),则软件更新类先验概率p(看到之前) 至pC通过将所描述的惩罚 C

    特别,fitcsvm完成这些步骤:

    1. 计算 p C * = p C

    2. 正常化pC*使更新后的先验概率总和为1。

      p C = 1 Σ Ĵ = 1 ķ p C Ĵ * p C *

      ķ是的类的数量。

    3. 将成本矩阵重置为默认值

      C = [ 0 1 1 0 ]

    4. 从对应于类具有零先验概率的培训数据中去除观测。

  • 对于两班学习,fitcsvm标准化所有观察权重(见权重)加起来等于1。然后,该函数将规范化的权重重新规格化,使其总和等于观测所属类的更新的先验概率。也就是观测的总重量Ĵ在班上ķ

    w ^ Ĵ * = w ^ Ĵ Σ Ĵ ķ w ^ Ĵ p C ķ

    w ^Ĵ是用于观察的归一化重量Ĵ;pCķ是类的更新的先验概率ķ(见前面的子弹)。

  • 对于两班学习,fitcsvm分配箱约束在训练数据中的每个观测。为观察框约束的公式Ĵ

    C Ĵ = ñ C 0 w ^ Ĵ *

    ñ是训练样本大小,C0在初始框约束(见'BoxConstraint'名称 - 值对参数),和 w ^ Ĵ * 是观察的总重量Ĵ(见前面的子弹)。

  • 如果设置“标准化”,真'成本'“在此之前”,或“权重”名称 - 值对的参数,然后fitcsvm标准化使用其相应的加权装置和加权标准偏差的预测。那是,fitcsvm标准化预测ĴXĴ)使用

    X Ĵ * = X Ĵ - μ Ĵ * σ Ĵ *

    μ Ĵ * = 1 Σ ķ w ^ ķ * Σ ķ w ^ ķ * X Ĵ ķ

    XJK是观察ķ预测器(行)Ĵ(列)。

    σ Ĵ * 2 = v 1 v 1 2 - v 2 Σ ķ w ^ ķ * X Ĵ ķ - μ Ĵ * 2

    v 1 = Σ Ĵ w ^ Ĵ *

    v 2 = Σ Ĵ w ^ Ĵ * 2

  • 假设p是异常的,你在训练数据预期中的比重,您设置'OutlierFraction',P

    • 对于一类学习,软件培训偏项下100p在训练数据的观察%的负分。

    • 该软件工具强劲的学习对于两班学习。换句话说,该软件试图消除100p%的意见时,优化算法收敛的。除去的观测对应于在幅度上大梯度。

  • 如果你的预测数据包含分类变量,那么软件通常使用这些变量的完整虚拟编码。该软件会为每个分类变量的每个级别一个虚拟变量。

    • PredictorNames属性存储每个原始预测变量名的一个元素。例如,假设有三个预测器,其中之一是具有三个电平的分类变量。然后PredictorNames是包含预测变量的原始名称字符矢量的1×3单元阵列。

    • ExpandedPredictorNames属性存储每个预测变量,包括虚拟变量的一种元素。例如,假设有三个预测器,其中之一是具有三个电平的分类变量。然后ExpandedPredictorNames是包含预测值变量和新的虚拟变量的名称字符矢量的1×5单元阵列。

    • 同样的,Beta版属性存储一个β系数每个预测,包括虚拟变量。

    • 万博1manbetxSupportVectors属性存储用于支持载体,包括虚拟变量预测值。万博1manbetx例如,假设有万博1manbetx支持向量和三个预测器,其中的一个是具有三个电平的分类变量。然后万博1manbetxSupportVectors是一个ñ-by-5矩阵。

    • X属性存储训练数据最初输入,不包括虚拟变量。当输入是一个表,X只包含用作预测列。

  • 对于表中规定,如果任何变量包含有序(有序)类别的预测,该软件使用的序号编码这些变量。

    • 对于具有可变ķ排序的等级,该软件创建ķ- 1虚拟变量。该Ĵ个虚拟变量是-1达到以下级别Ĵ+1对于水平Ĵ+ 1通过ķ

    • 存储在虚拟变量的名字ExpandedPredictorNames物业表示,其值为第一级+1。软件商店ķ- 1另外预测值名字的虚拟变量,包括级别2,3的名字,...,ķ

  • 所有的求解器大号1软余量最小化。

  • 对于一类学习,软件估计拉格朗日乘数,α1、……αñ,这样

    Σ Ĵ = 1 ñ α Ĵ = ñ ν

参考

[1] Hastie, T., R. Tibshirani和J. Friedman。统计学习的要素, 第二版。纽约:施普林格,2008年。

[2] Scholkopf,B.,J. C.普拉特,J. C. Shawe-泰勒,A. J.斯莫拉岛,和R. C.威廉森。“估计高维分布的支持。”万博1manbetx神经COMPUT。,第13,7号,2001年,第1443至1471年。

[3] Christianini,N.,和J. C. Shawe-泰勒。简介支持向量机和其他基于内核的学习方法万博1manbetx。英国剑桥:剑桥大学出版社,2000。

[4] Scholkopf,B。,和A.斯莫拉岛。支持向量机,规范化,优化和超越,自适应计算和机万博1manbetx器学习:与内核学习。马萨诸塞州剑桥:麻省理工学院出版社,2002年。

扩展功能

介绍了在R2014a