主要内容

ClassificationSVM

金宝app支持向量机(SVM)用于一类和二值分类

描述

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

创建

创建一个ClassificationSVM对象的使用fitcsvm

属性

全部展开

支持向量机性能

此属性是只读的。

经过训练的分类器系数,指定为年代1数字向量。年代为所训练分类器中支持向量的个数,金宝app总和(Mdl.IsS金宝appupportVector)

α包含对偶问题训练的分类器系数,即估计的拉格朗日乘数。如果您使用移除的副本的名称-值对参数fitcsvm,那么对于给定的一组重复观测,这些观测是支持向量,金宝appα包含一个系数对应于整个集合。也就是说,MATLAB®将非零系数赋给从一组重复数据中得到的一个观测值,并将系数赋给0到集合中所有其他重复的观测值。

数据类型:|

此属性是只读的。

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

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

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

f x x / 年代 β + b

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

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

支持向量机的所有函数,如resubPredict预测,在评估之前应用任何需要的转换。

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

数据类型:|

此属性是只读的。

偏置项,指定为标量。

数据类型:|

此属性是只读的。

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

如果您使用移除的副本的名称-值对参数fitcsvm,然后对于给定的一组重复观测值,MATLAB将框约束求和,然后将求和属性化为一个观测值0所有其他的观察结果。

数据类型:|

此属性是只读的。

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

描述
大小

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

算法

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

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

数据类型:结构体

此属性是只读的。

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

如果您使用移除的副本的名称-值对参数fitcsvm,那么对于给定的一组重复观测,这些观测是支持向量,金宝appIs金宝appSupportVector仅标记一个观测值作为支持向量。金宝app

数据类型:逻辑

此属性是只读的。

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

描述
函数

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

规模

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

的值KernelParameters,使用点符号。例如,Mdl.KernelParameters.Scale显示内核规模参数值。

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

数据类型:结构体

此属性是只读的。

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

数据类型:|

此属性是只读的。

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

数据类型:

此属性是只读的。

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

此属性是只读的。

金宝app支持向量类标签,指定为年代1数字向量。年代为所训练分类器中支持向量的个数,金宝app总和(Mdl.IsS金宝appupportVector)

的值+1金宝appSupportVectorLabels表示对应的支持向量属于正类(金宝app一会{2}).的值1指示相应的支持向量在负类中(金宝app一会{1}).

如果您使用移除的副本的名称-值对参数fitcsvm,那么对于给定的一组重复观测,这些观测是支持向量,金宝app金宝appSupportVectorLabels包含一个唯一的支持向量标签。金宝app

数据类型:|

此属性是只读的。

金宝app训练分类器中的支持向量,指定为年代——- - - - - -p数字矩阵。年代为所训练分类器中支持向量的个数,金宝app总和(Mdl.IsS金宝appupportVector),p为预测数据中预测变量的个数。

金宝appSupportVectors包含预测器数据的行XMATLAB认为是支持向量。金宝app如果您指定“标准化”,真的在训练SVM分类器时使用fitcsvm,然后金宝appSupportVectors的标准化行X

如果您使用移除的副本的名称-值对参数fitcsvm,那么对于给定的一组重复观测,这些观测是支持向量,金宝app金宝appSupportVectors包含一个唯一的支持向量。金宝app

数据类型:|

其他分类属性

此属性是只读的。

分类预测指标,指定为一个正整数向量。CategoricalPredictors包含与包含分类预测器的预测器数据列对应的索引值。如果没有任何预测器是绝对的,则此属性为空([]).

数据类型:

此属性是只读的。

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

数据类型:||逻辑|字符|细胞|绝对的

此属性是只读的。

误分类代价,用数值方阵表示,其中成本(i, j)将一个点分类的成本是多少j如果它的真实类别是

在培训期间,软件通过合并成本矩阵中描述的惩罚来更新先验概率。

  • 对两种学习,成本总是有这种形式:成本(i, j) = 1如果我~ = j,成本(i, j) = 0如果我=我这个rows correspond to the true class and the columns correspond to the predicted class. The order of the rows and columns of成本中类的顺序一会

  • 看到下面成了学习,成本= 0

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

数据类型:

此属性是只读的。

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

如果模型对分类变量使用虚拟变量编码,则扩展预测器名称包括描述扩展变量的名称。否则,扩展预测器名称是一样的预测器名称

数据类型:细胞

此属性是只读的。

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

数据类型:|

此属性是只读的。

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

访问ModelParameters通过使用点符号。例如,访问初始值进行估算α通过使用Mdl.ModelParameters.Alpha

此属性是只读的。

预测器表示,指定为数值向量。如果您指定“标准化”,1“标准化”,真的当你使用fitcsvm,然后是μ等于预测数。

MATLAB使用完全虚拟编码扩展预测器数据中的分类变量。也就是说,MATLAB为每个分类变量的每个级别创建一个虚拟变量。μ为每个预测变量(包括虚拟变量)存储一个值。然而,MATLAB并没有对包含分类变量的列进行标准化。

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

数据类型:|

此属性是只读的。

在训练数据中存储的观测数XY,指定为数字标量。

数据类型:

此属性是只读的。

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

数据类型:细胞

此属性是只读的。

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

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

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

数据类型:|

此属性是只读的。

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

数据类型:字符

此属性是只读的。

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

数据类型:逻辑

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

将分数转换函数改为函数,例如,使用点符号。

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

    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为每个分类变量的每个级别创建一个虚拟变量。σ为每个预测变量(包括虚拟变量)存储一个值。然而,MATLAB并没有对包含分类变量的列进行标准化。

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

数据类型:|

此属性是只读的。

用于训练SVM分类器的观测权值,指定为n1数字向量。n是观察次数(见NumObservations).

fitcsvm规范化中指定的观察权重“重量”名称-值对参数,以便W在某一特定类别内,求和为该类别的先验概率。

数据类型:|

此属性是只读的。

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

每一行的X对应一个观察值,每一列对应一个变量。

MATLAB排除包含至少一个缺失值的观测值,并从中删除相应的元素Y

数据类型:|

此属性是只读的。

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

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

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

数据类型:||逻辑|字符|细胞|绝对的

收敛控制属性

此属性是只读的。

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

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

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

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

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

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

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

  • Num金宝appSupportVectors:数字向量,表示迭代时支持向量的数目金宝app

  • 客观的:的数值向量客观的迭代处的值

客观的 对偶目标函数的标量值。

数据类型:结构体

此属性是只读的。

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

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

数据类型:

此属性是只读的。

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

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

数据类型:|

Hyperparameter优化性能

此属性是只读的。

超参数的交叉验证优化描述,指定为BayesianOptimization对象或包含超参数和关联值的表。该属性是非空的“OptimizeHyperparameters”的名称-值对参数fitcsvm在创建时非空。的价值HyperparameterOptimizationResults取决于设置的优化器字段HyperparameterOptimizationOptions的结构fitcsvm创建时,如表所示。

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

对象的功能

紧凑的 减少机器学习模型的规模
compareHoldout 使用新数据比较两种分类模型的准确度
crossval 交叉验证机器学习模型
discard金宝appSupportVectors 丢弃线性支持向量金宝app机分类器的支持向量
边缘 为支持向量机分类器寻找分类边缘金宝app
fitPosterior 拟合支持向量机分类器的后验概率金宝app
incrementalLearner 将二值分类支持向量机模型转换为增量学习器金宝app
损失 查找支持向量机分类器的分类错误金宝app
保证金 为支持向量机(SVM)分类器寻找分类边界金宝app
partialDependence 计算部分依赖
plotPartialDependence 创建部分依赖图(PDP)和个人条件期望图(ICE)
预测 使用支持向量机分类器对观测数据进行分类金宝app
resubEdge Resubstitution分类边缘
石灰 局部可解释的模型不可知解释(LIME)
resubLoss Resubstitution分类损失
再精 Resubstitution分类保证金
resubPredict 使用训练的分类器对训练数据进行分类
的简历 恢复训练支持向量机分类器金宝app
沙普利 沙普利值
testckfold 通过重复交叉验证比较两种分类模型的准确率

例子

全部折叠

载入费雪的虹膜数据集。去掉萼片的长度和宽度以及所有观察到的刚毛鸢尾。

负载fisheriris第1 = ~ strcmp(物种,“setosa”);X =量(第1 3:4);y =物种(第1);

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

SVMModel = fitcsvm (X, y)
SVMModel=ClassificationSVM ResponseName:'Y'分类预测值:[]类名:{'versicolor''virginica'}ScoreTransform:'none'numobervations:100 Alpha:[24x1 double]偏差:-14.4149内核参数:[1x1结构]框约束:[100x1 double]收敛信息:[1x1结构]IsupportVector:[100x1逻辑]解算器:“SMO”属性、方法金宝app

SVMModel是一个培训ClassificationSVM分类器。显示的属性SVMModel.例如,要确定类的顺序,可以使用点符号。

classOrder = SVMModel。一会
classOrder =2 x1细胞{“癣”}{' virginica '}

第一节课(“多色的”)是否定类,而第二个(“virginica”)是积极类。属性可以在训练期间更改类的顺序“类名”名称-值对的论点。

绘制数据的散点图,并圈出支持向量。金宝app

sv = SVMModel.金宝appSupportVectors;图gscatter (X (: 1), (:, 2), y)情节(sv (: 1), sv (:, 2),“柯”“MarkerSize”(10)图例(“多色的”“virginica”“金宝app支持向量”)举行

图中包含一个坐标轴。轴线包含3个线型对象。这些对象代表花斑,维珍,支持向量。金宝app

支持向量金宝app是发生在或超出其估计的类边界上的观察结果。

通过在训练期间使用金宝app“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旨在支持向量机分类器。默认情况下,该软件实现10倍交叉验证。

或者,您可以交叉验证一个经过培训的ClassificationSVM将它传递给crossval

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

CVSVMModel。训练有素的{1}
ans = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' ' 'g'} ScoreTransform: 'none' Alpha: [78x1 double] Bias: -0.2209 KernelParameters: [1x1 struct] Mu: [1x34 double] Sigma: [1x34 double金宝app] SupportVectors: [78x34 double] SupportVectorLabels: [78x1 double]属性,方法

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

估计泛化误差。

genError = kfoldLoss (CVSVMModel)
genError = 0.1168

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

更多关于

全部展开

算法

  • 支持向量机二值分类算法的数学公式见金宝app支持向量机的二进制分类理解支持向量机金宝app

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

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

  • 对于两类学习,如果你指定代价矩阵 C (见成本),然后软件更新类先验概率p(见之前)pc通过将处罚纳入 C

    明确地fitcsvm完成这些步骤:

    1. 计算 p c p C

    2. 正常化pc更新后的先验概率和是1。

      p c 1 j 1 K p c j p c

      K为类数。

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

      C 0 1 1 0

    4. 从零先验概率类对应的训练数据中去除观测值。

  • 对两种学习,fitcsvm规范化所有观察权重(请参见权重)求和为1。然后,该函数对归一化权重进行重归一化,使其总和为观测所属类的更新先验概率。即观察的总权重j在课堂上k

    w j w j j k w j p c k

    wj是标准化的观测权值吗jpck更新的类先验概率是多少k(见以前的子弹)。

  • 对两种学习,fitcsvm为训练数据中的每个观测值指定一个方框约束。观察框约束的公式j

    C j n C 0 w j

    n为训练样本量,C0初始框约束(参见“BoxConstraint”名称-值对参数)和 w j 观察的总权重是多少j(见以前的子弹)。

  • 如果你设置“标准化”,真的“成本”“先前的”,或“重量”名称-值对参数fitcsvm使用相应的加权平均值和加权标准差对预测进行标准化。也就是说,fitcsvm标准化预测jxj)使用

    x j x j μ j σ j

    μ j 1 k w k k w k x j k

    xjk是观察k(行)的预测j(列)。

    σ 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%的观测值时,优化算法收敛。被移走的观测值对应的是幅度很大的梯度。

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

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

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

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

    • 金宝appSupportVectors属性存储支持向量的预测值,包括虚拟变量。金宝app例如,假设有金宝app支持向量和三个预测因子,其中一个是三级分类变量金宝appSupportVectors是一个n5矩阵。

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

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

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

    • 中的虚拟变量的名称扩展预测器名称属性指示具有该值的第一级+1这个年代的tware storesk- 1虚拟变量的附加预测器名称,包括级别2、3、…k

  • 所有连接器实现l1 soft-margin最小化。

  • 对于单类学习,软件估计拉格朗日乘数,α1,...,αn,这样

    j 1 n α j n ν

工具书类

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

Scholkopf, B., J. C. Platt, J. C. shaw - taylor, A. J. Smola, R. C. Williamson。"估算高维分布的支持度"金宝app神经第一版., Vol. 13, no . 7, 2001, pp. 1443-1471。

克里斯汀尼尼,N。c。肖-泰勒。支持向量机和其他基于核的学习方法简介金宝app.英国剑桥:剑桥大学出版社,2000年。

[4] Scholkopf, B.和A. Smola。核学习:支持向量机,正则化,优化和超越,自适应金宝app计算和机器学习。麻省理工学院出版社,2002年。

扩展功能

介绍了R2014a