主要内容

ClassificationSVM

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

描述

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

创建

创建一个ClassificationSVM对象,使用fitcsvm

属性

全部展开

支持向量机性能

此属性是只读的。

训练的分类器系数,指定为年代-by-1数值向量。年代是经过训练的分类器中支持向量的个数万博1manbetx,总和(Mdl.IsS万博1manbetxupportVector)

α包含从对偶问题训练的分类器系数,即估计的拉格朗日乘子。方法删除重复项RemoveDuplicates的名称-值对参数fitcsvm,那么对于一个给定的重复观测集合,即支持向量,万博1manbetxα包含一个对应于整个集合的系数。也就是MATLAB®将非零系数属性为一组重复项中的一个观测值,且系数为0集合中所有其他重复的观测值。

数据类型:|

此属性是只读的。

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

MATLAB使用全虚拟编码扩展预测器数据中的分类变量。也就是说,MATLAB为每个分类变量的每一层创建一个虚拟变量。β为每个预测变量(包括虚拟变量)存储一个值。例如,如果有三个预测因子,其中一个是具有三个级别的分类变量,则β是包含五个值的数字向量。

如果KernelParameters。函数“线性”,然后分类评分进行观察x

f x x / 年代 β + b

Mdl商店βb,年代在属性中β偏见,KernelParameters。规模,分别。

要手动估计分类分数,必须首先对训练期间应用的预测器数据应用任何转换。具体来说,如果你指定的话“标准化”,真的当使用fitcsvm,则必须使用平均值手动标准化预测器数据Mdl。μ还有标准差Mdl。σ,然后将结果除以in的核标度Mdl.KernelParameters.Scale

所有支持向量机函数,如resubPredict而且预测,在估计前应用所需的转换。

如果KernelParameters。函数不是“线性”,然后β为空([]).

数据类型:|

此属性是只读的。

偏差项,指定为标量。

数据类型:|

此属性是只读的。

框约束,指定为的数值向量n1箱约束n训练数据中的观察数(见NumObservations属性)。

方法删除重复项RemoveDuplicates的名称-值对参数fitcsvm,然后对于给定的一组重复观测,MATLAB对框约束求和,然后将求和归为一个观测。MATLAB属性框的约束0集合中所有其他观测值。

数据类型:|

此属性是只读的。

缓存信息,指定为结构数组。缓存信息包含本表中描述的字段。

描述
大小

软件用于训练SVM分类器的缓存大小(以MB为单位)。详细信息请参见“CacheSize”

算法

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

显示的字段CacheInfo用点表示法。例如,Mdl.CacheInfo.Size显示缓存大小的值。

数据类型:结构体

此属性是只读的。

万博1manbetx支持向量指示器,指定为n-by-1逻辑向量,标记预测器数据矩阵中对应的观测值是否为万博1manbetx支持向量n训练数据中的观察数(见NumObservations).

方法删除重复项RemoveDuplicates的名称-值对参数fitcsvm,那么对于一个给定的重复观测集合,即支持向量,万博1manbetxIs万博1manbetxSupportVector仅将一个观测标记为支持向量。万博1manbetx

数据类型:逻辑

此属性是只读的。

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

描述
函数

核函数用来计算元素的格拉姆矩阵.详细信息请参见“KernelFunction”

规模

核尺度参数用于缩放模型所训练的预测器数据的所有元素。详细信息请参见“KernelScale”

的值KernelParameters,使用点表示法。例如,Mdl.KernelParameters.Scale显示内核比例参数值。

软件接受KernelParameters作为输入,不修改它们。

数据类型:结构体

此属性是只读的。

看到下面成了一个学习参数ν,指定为正标量。

数据类型:|

此属性是只读的。

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

数据类型:

此属性是只读的。

用于训练SVM分类器的优化例程,指定为ISDA的“L1QP”,或SMO的.详情请参见“规划求解”

此属性是只读的。

万博1manbetx支持向量类标签,指定为年代-by-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包含预测器数据行XMATLAB认为是支持向量。万博1manbetx如果你指定“标准化”,真的训练SVM分类器时使用fitcsvm,然后万博1manbetxSupportVectors的标准化行X

方法删除重复项RemoveDuplicates的名称-值对参数fitcsvm,那么对于一个给定的重复观测集合,即支持向量,万博1manbetx万博1manbetxSupportVectors包含一个唯一的支持向量。万博1manbetx

数据类型:|

其他分类属性

此属性是只读的。

分类预测指标,指定为正整数向量。CategoricalPredictors包含指示相应预测符是分类的索引值。索引值在1和之间p,在那里p用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空([]).

数据类型:

此属性是只读的。

训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。一会与类标签具有相同的数据类型Y(该软件将字符串数组视为字符向量的单元格数组。)一会也决定了类的顺序。

数据类型:||逻辑|字符|细胞|分类

此属性是只读的。

错误分类代价,用数字方阵表示。

  • 对于两节课的学习成本属性指定的错误分类代价矩阵成本拟合函数的名称-值参数。行对应真实的类,列对应预测的类。也就是说,成本(i, j)将一个点分类的成本是多少j如果它真正的阶级是.的行和列的顺序成本中类的顺序对应一会

  • 对于单课学习,成本= 0

数据类型:

此属性是只读的。

扩展的预测器名称,指定为字符向量的单元格数组。

如果模型对分类变量使用哑变量编码,则ExpandedPredictorNames包括描述展开变量的名称。否则,ExpandedPredictorNamesPredictorNames

数据类型:细胞

此属性是只读的。

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

数据类型:|

此属性是只读的。

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

访问的属性ModelParameters用点表示法。例如,访问用于估计的初始值α通过使用Mdl.ModelParameters.Alpha

此属性是只读的。

预测器的意思是,指定为数字向量。如果你指定“标准化”,1“标准化”,真的当你训练SVM分类器时使用fitcsvm的长度。μ等于预测因子的数量。

MATLAB利用虚拟变量扩展了预测器数据中的分类变量。μ为每个预测变量(包括虚拟变量)存储一个值。但是,MATLAB没有对包含分类变量的列进行标准化。

如果你设置“标准化”,假的当你训练SVM分类器时使用fitcsvm,然后μ是空向量([]).

数据类型:|

此属性是只读的。

在训练数据中存储的观察数X而且Y,指定为数值标量。

数据类型:

此属性是只读的。

预测器变量名,指定为字符向量的单元格数组。元素的顺序PredictorNames对应于预测器名称在训练数据中出现的顺序。

数据类型:细胞

此属性是只读的。

每种类别的先验概率,用数字向量表示。

对于两类学习,如果你指定了一个成本矩阵,那么软件会通过合并成本矩阵中描述的惩罚来更新先验概率。

  • 对于两类学习,软件对指定的先验概率进行归一化之前拟合函数的名称-值参数,使概率之和为1。的之前属性存储归一化先验概率。元素的顺序之前对应于的元素Mdl。ClassNames

  • 对于单课学习,Prior = 1

数据类型:|

此属性是只读的。

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

数据类型:字符

此属性是只读的。

用于拟合的原始训练数据行ClassificationSVM模型,指定为逻辑向量。如果使用所有行,则此属性为空。

数据类型:逻辑

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

将分数转换函数更改为函数例如,使用点表示法。

  • 对于内置函数,请输入字符向量。

    Mdl。ScoreTransform = '函数”;

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

    价值 描述
    “doublelogit” 1 / (1 +e2x
    “invlogit” 日志(x/ (1 -x))
    “ismax” 将得分最大的类的得分设置为1,并将所有其他类的得分设置为0
    分对数的 1 / (1 +e- - - - - -x
    “没有”“身份” x(转换)
    “标志” 1x< 0
    为0x= 0
    1x> 0
    “对称” 2x- 1
    “symmetricismax” 将得分最大的类的得分设置为1,并将所有其他类的得分设置为-1
    “symmetriclogit” 2 / (1 +e- - - - - -x) - 1

  • 对于MATLAB函数或您定义的函数,输入其函数句柄。

    Mdl。ScoreTransform = @函数;

    函数必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。

数据类型:字符|function_handle

此属性是只读的。

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

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

MATLAB利用虚拟变量扩展了预测器数据中的分类变量。σ为每个预测变量(包括虚拟变量)存储一个值。但是,MATLAB没有对包含分类变量的列进行标准化。

如果你设置“标准化”,假的当你训练SVM分类器时使用fitcsvm,然后σ是空向量([]).

数据类型:|

此属性是只读的。

用于训练支持向量机分类器的观察权重,指定为n-by-1数值向量。n是观察数(见NumObservations).

fitcsvm方法中指定的观测权重归一化“重量”的元素W在一个特定的类别中求和等于该类别的先验概率。

数据类型:|

此属性是只读的。

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

每行X对应一个观察结果,每一列对应一个变量。

MATLAB排除包含至少一个缺失值的观测值,并从Y

数据类型:|

此属性是只读的。

用于训练SVM分类器的类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。Y输入参数的数据类型是否相同Yfitcsvm(该软件将字符串数组视为字符向量的单元格数组。)

每行Y的对应行所观察的分类X

MATLAB排除包含缺失值的元素,并从X

数据类型:||逻辑|字符|细胞|分类

收敛控制属性

此属性是只读的。

收敛信息,指定为结构数组。

描述
聚合 表示算法是否收敛的逻辑标志(1表明收敛)。
ReasonForConvergence 表示软件用于检测收敛性的准则的字符向量。
差距 对偶目标函数与原目标函数之间存在标量可行性差距。
GapTolerance 标量可行性间隙公差。设置此容差,例如为1)依照,通过使用名称-值对参数依照“GapTolerance”,1fitcsvm
DeltaGradient 上违规者和下违规者之间的标量梯度差
DeltaGradientTolerance 上违规者和下违规者之间梯度差的标量容差。设置此容差,例如为1)依照,通过使用名称-值对参数依照“DeltaGradientTolerance”,1fitcsvm
LargestKKTViolation 最大标量Karush-Kuhn-Tucker违反值。
KKTTolerance 最大KKT违规的标量容差。例如,将此容差设置为1 e - 3,通过使用名称-值对参数“KKTTolerance”,1 e - 3fitcsvm
历史

在集合优化迭代时包含收敛信息的结构数组。字段为:

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

  • 差距的数值向量差距迭代中的值

  • DeltaGradient的数值向量DeltaGradient迭代中的值

  • LargestKKTViolation的数值向量LargestKKTViolation迭代中的值

  • Num万博1manbetxSupportVectors:数值向量,表示迭代时支持向量的个数万博1manbetx

  • 客观的的数值向量客观的迭代中的值

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

数据类型:结构体

此属性是只读的。

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

将迭代次数的限制设置为1000,例如,指定“IterationLimit”,1000年当你训练SVM分类器时使用fitcsvm

数据类型:

此属性是只读的。

活动集约简之间的迭代次数,指定为非负整数。

将收缩期设置为1000,例如,指定“ShrinkagePeriod”,1000年当你训练SVM分类器时使用fitcsvm

数据类型:|

超参数优化属性

此属性是只读的。

超参数的交叉验证优化的描述,指定为BayesianOptimization对象或超参数及相关值的表。属性时,此属性为非空“OptimizeHyperparameters”的名称-值对参数fitcsvm创建时为非空。的价值HyperparameterOptimizationResults的设置优化器HyperparameterOptimizationOptions的结构fitcsvm在创建时,如本表所述。

的价值优化器 的价值HyperparameterOptimizationResults
“bayesopt”(默认) 类的对象BayesianOptimization
“gridsearch”“randomsearch” 使用的超参数表,观察到的目标函数值(交叉验证损失),以及从最低(最好)到最高(最差)的观察值排序

对象的功能

紧凑的 减小机器学习模型的尺寸
compareHoldout 比较使用新数据的两种分类模型的准确性
crossval 交叉验证机器学习模型
discard万博1manbetxSupportVectors 线性支持向量机分万博1manbetx类器的支持向量弃用
边缘 为支持向量机分类器找到分类边万博1manbetx
fitPosterior 拟合支持向量机(SVM)分类器的后验概率万博1manbetx
收集 收集属性统计和机器学习工具箱来自GPU的对象
incrementalLearner 将二元分类支持向量机(SVM)模型转化为增量学习器万博1manbetx
石灰 局部可解释模型不可知解释(LIME)
损失 找出支持向量机分类器的分类误差万博1manbetx
保证金 为支持向量机分类器找到分类边界万博1manbetx
partialDependence 计算部分依赖关系
plotPartialDependence 创建部分依赖图(PDP)和个别条件期望图(ICE)
预测 利用支持向量机(SVM)分类器对观测数据进行分类万博1manbetx
resubEdge 再置换分类边
resubLoss 再置换分类损失
resubMargin 再置换分类边际
resubPredict 使用训练过的分类器对训练数据进行分类
重新开始 恢复训练支持向量机(SVM)分类万博1manbetx器
沙普利 沙普利值
testckfold 通过重复交叉验证比较两种分类模型的准确性

例子

全部折叠

加载费雪的虹膜数据集。去除萼片的长度和宽度以及所有观察到的虹膜。

负载fisheririsInds = ~strcmp(种,“setosa”);X = meas(inds,3:4);Y = species(inds);

使用处理过的数据集训练支持向量机分类器。

svm模型= fitcsvm(X,y)
SVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 100 Alpha: [24x1 double] Bias: -14.4149 KernelParameters: [1x1 struct] BoxConstraints: [100x1 double] ConvergenceInfo: [1x1 struct] Is万博1manbetxSupportVector: [100x1 logical] Solver: 'SMO' Properties, Methods

SVMModel是受过训练的ClassificationSVM分类器。显示的属性SVMModel.例如,要确定类顺序,可以使用点表示法。

classOrder = SVMModel。一会
classOrder =2 x1细胞{'versicolor'} {'virginica'}

第一堂课(“多色的”)是否定类,而第二个(“virginica”)是正类。类可以在训练期间更改类顺序“类名”名称-值对参数。

绘制数据散点图并圈出支持向量。万博1manbetx

sv = SVMModel.万博1manbetxSupportVectors;图gscatter(X(:,1),X(:,2),y)保持情节(sv (: 1), sv (:, 2),“柯”“MarkerSize”10)传说(“多色的”“virginica”“万博1manbetx支持向量”)举行

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象代表彩色,维珍,支持向量。万博1manbetx

支持向量万博1manbetx是发生在其估计类别边界上或超出其估计类别边界的观测值。

方法在训练期间设置框约束,可以调整边界(以及支持向量的数量)万博1manbetx“BoxConstraint”名称-值对参数。

加载电离层数据集。

负载电离层

训练并交叉验证SVM分类器。标准化预测器数据并指定类的顺序。

rng (1);%用于再现性CVSVMModel = fitcsvm(X,Y,“标准化”,真的,...“类名”, {“b”‘g’},“CrossVal”“上”
CVSVMModel = ClassificationPartitionedModel CrossValidatedModel: 'SVM' PredictorNames: {1x34 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none'属性,方法

CVSVMModel是一个ClassificationPartitionedModel交叉验证SVM分类器。默认情况下,该软件实现了10次交叉验证。

或者,你可以交叉验证一个训练过的ClassificationSVM分类器crossval

使用点符号检查一个训练好的折叠。

CVSVMModel。训练有素的{1}
ans = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' Alpha: [78x1 double]偏差:-0.2210 KernelParameters: [1x1 struct] Mu:[0.8888 0 0.6320 0.0406 0.5931 0.1205 0.5361…]西格玛:[0.3149 0 0.5033 0.4441 0.5255 0.4663 0.4987…] 万博1manbetxSupportVectors: [78x34 double] SupportVectorLabels: [78x1 double]属性,方法

每条折线都是CompactClassificationSVM分类器训练了90%的数据。

估计泛化误差。

生成器= kfoldLoss(CVSVMModel)
genError = 0.1168

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

更多关于

全部展开

算法

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

  • <定义>,空字符向量(,空字符串(""),< >失踪值表示缺少的值。fitcsvm删除与缺失响应对应的整行数据。当计算总权重时(见下一个项目),fitcsvm忽略与至少一个缺失预测器的观测结果对应的任何权重。这种行为会导致平衡类问题中的不平衡先验概率。因此,观察框的约束可能不相等BoxConstraint

  • 如果您指定成本之前,权重参数时,输出模型对象将指定的值存储在成本之前,W属性,分别。的成本属性存储用户指定的成本矩阵(C),无需修改。的之前而且W属性分别存储归一化后的先验概率和观测权重。对于模型训练,软件更新先验概率和观察权重,以纳入成本矩阵中描述的惩罚。详细信息请参见错误分类成本矩阵,先验概率和观察权重

    注意成本而且之前名称-值参数用于两类学习。对于单课学习,成本而且之前属性存储0而且1,分别。

  • 对于两节课的学习,fitcsvm为训练数据中的每个观察分配一个框约束。观测框约束的公式j

    C j n C 0 w j

    在哪里C0初始框约束(参见BoxConstraint名称-值参数),以及wj观察权重是否调整成本而且之前为观察j.有关观测权值的详细信息,请参见调整错误分类成本矩阵的先验概率和观测权重

  • 如果你指定标准化作为真正的并设置成本之前,或权重然后是名称-值参数fitcsvm使用相应的加权均值和加权标准差对预测因子进行标准化。也就是说,fitcsvm标准化预测jxj)使用

    x j x j μ j σ j

    在哪里xjk是观察k(行)预测器j(列)

    μ j 1 k w k k w k x j k σ j 2 v 1 v 1 2 v 2 k w k x j k μ j 2 v 1 j w j v 2 j w j 2

  • 假设p你在训练数据中期望的异常值的比例,和你设定的异常值的比例是多少OutlierFraction, p

    • 对于单类学习,软件将偏差项训练为100p训练数据中有%的观察值为负。

    • 软件实现强劲的学习两节课的学习。换句话说,软件试图删除100个p优化算法收敛时观测值的%。被移除的观测值对应的是幅度较大的梯度。

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

    • PredictorNames属性为每个原始预测器变量名存储一个元素。例如,假设有三个预测因子,其中一个是具有三个层次的分类变量。然后PredictorNames是包含预测变量的原始名称的字符向量的1 × 3单元格数组。

    • ExpandedPredictorNames属性为每个预测变量(包括虚拟变量)存储一个元素。例如,假设有三个预测因子,其中一个是具有三个层次的分类变量。然后ExpandedPredictorNames是包含预测变量和新虚拟变量名称的字符向量的1 × 5单元格数组。

    • 类似地,β属性为每个预测器存储一个beta系数,包括虚拟变量。

    • 万博1manbetxSupportVectors属性存储支持向量(包括虚拟变量)的预测器值。万博1manbetx例如,假设有万博1manbetx支持向量和三个预测因子,其中一个是三级分类变量。然后万博1manbetxSupportVectors是一个n5矩阵。

    • X属性将训练数据存储为原始输入,不包括虚拟变量。当输入是一个表时,X仅包含用作预测器的列。

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

    • 对于一个变量k软件创建有序的关卡k- 1虚拟变量。的j虚变量为1以下级别j,+ 1的水平j+ 1通过k

    • 对象中存储的虚拟变量的名称ExpandedPredictorNames属性用值指示第一级+ 1.软件商店k- 1虚拟变量的其他预测器名称,包括级别2、3、…k

  • 所有求解器实现l1 .软边际最小化。

  • 对于单类学习,该软件估计拉格朗日乘数,α1、……αn,以致于

    j 1 n α j n ν

参考文献

哈斯蒂、T.、R.蒂布谢拉尼和J.弗里德曼。统计学习的要素,第二版。纽约:施普林格,2008。

[2]肖科普夫,B. J. C.普拉特,J. C.肖-泰勒,A. J.斯莫拉和R. C.威廉姆森。“估算高维分布的支持度”万博1manbetx神经第一版,卷13,第7号,2001,第1443-1471页。

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

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

扩展功能

版本历史

在R2014a中引入

全部展开