主要内容

分类VM

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

描述

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

创造

创建一个分类VM通过使用fitcsvm

属性

全部展开

支持向量机特性

此属性是只读的。

训练的分类器系数,指定为S.-乘以1的数值向量。S.是培训分类器中的支持向量的数量,金宝app总和(Mdl.IsS金宝appupportVector)

阿尔法包含对偶问题中经过训练的分类器系数,即估计的拉格朗日乘数。如果使用RemoveDuplicates的名称-值对参数fitcsvm然后,对于一种支持向量的给定的一组重复观察,金宝app阿尔法包含一个对应于整个集合的系数。也就是说,MATLAB®将非零系数赋给从一组重复数据中得到的一个观测值,并将系数赋给0.集合中的所有其他重复观测。

数据类型:|双重的

此属性是只读的。

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

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

如果核参数函数“线性”,然后分类评分进行观察X

F X = X / S. ' β + B.

Mdl商店βB.,S.在属性β偏见,核参数。比例分别地

要手动估计分类分数,必须首先对培训期间应用的预测值数据应用任何转换。具体来说,如果您指定“标准化”,没错当使用fitcsvm,则必须使用平均值手动标准化预测数据Mdl。μ和标准差mdl.sigma.,然后将结果除以内核规模mdl.kernelparameters.scale.

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

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

数据类型:|双重的

此属性是只读的。

BIAS项,指定为标量。

数据类型:|双重的

此属性是只读的。

方框约束,指定为的数字向量N-by-1箱约束N是训练数据中的观察次数(参见numobservations.属性)。

如果您使用RemoveDuplicates的名称-值对参数fitcsvm,然后对给定的一组重复观测数据,MATLAB对方框约束进行求和,然后将求和归为一个观测数据。MATLAB的属性框约束0.所有其他的观察结果。

数据类型:|双重的

此属性是只读的。

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

描述
大小

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

算法

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

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

数据类型:塑造

此属性是只读的。

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

如果您使用RemoveDuplicates的名称-值对参数fitcsvm然后,对于一种支持向量的给定的一组重复观察,金宝appIs金宝appSupportVector仅标记一个观测值作为支持向量。金宝app

数据类型:逻辑

此属性是只读的。

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

描述
函数

用于计算格拉姆矩阵. 有关详细信息,请参阅“KernelFunction”

规模

核比例参数,用于缩放模型训练所依据的预测数据的所有元素。有关详细信息,请参阅“内核尺度”

的值内核参数,使用点表示法。例如mdl.kernelparameters.scale.显示内核比例参数值。

软件接受内核参数作为输入,而不修改它们。

数据类型:塑造

此属性是只读的。

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

数据类型:|双重的

此属性是只读的。

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

数据类型:双重的

此属性是只读的。

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

此属性是只读的。

金宝app支持向量类标签,指定为S.-乘以1的数值向量。S.是培训分类器中的支持向量的数量,金宝app总和(Mdl.IsS金宝appupportVector)

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

如果您使用RemoveDuplicates的名称-值对参数fitcsvm然后,对于一种支持向量的给定的一组重复观察,金宝app金宝appSupportVectorLabels包含一个唯一的支持向量标签。金宝app

数据类型:|双重的

此属性是只读的。

金宝app训练分类器中的支持向量,指定为S.-借-P.数字矩阵。S.是培训分类器中的支持向量的数量,金宝app总和(Mdl.IsS金宝appupportVector),P.是预测器数据中的预测器变量的数量。

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

如果您使用RemoveDuplicates的名称-值对参数fitcsvm然后,对于一种支持向量的给定的一组重复观察,金宝app金宝appSupportVectors包含一个独特的支持向量。金宝app

数据类型:|双重的

其他分类属性

此属性是只读的。

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

数据类型:双重的

此属性是只读的。

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

数据类型:|双重的|逻辑|烧焦|细胞|分类

此属性是只读的。

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

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

  • 对于两班学习,费用总是有这个形式:成本(i, j) = 1如果i~=j,成本(i, j) = 0如果我=我. 行对应于真实类,列对应于预测类。的行和列的顺序费用中类的顺序Classnames.

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

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

数据类型:双重的

此属性是只读的。

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

如果模型对分类变量采用哑变量编码,则ExpandedPredictorNames包括描述展开变量的名称。否则ExpandedPredictorNames是相同的PredictorNames

数据类型:细胞

此属性是只读的。

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

数据类型:|双重的

此属性是只读的。

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

访问属性ModelParameters通过使用点表示法。例如,访问初始值以进行估算阿尔法通过使用Mdl.ModelParameters.Alpha

此属性是只读的。

预测器表示,指定为数值向量。如果您指定“标准化”,1“标准化”,没错使用时使用SVM分类器时fitcsvm,然后是长度μ等于预测器的数量。

MATLAB利用全哑编码扩展预测数据中的分类变量。即MATLAB为每个类别变量的每一层创建一个虚拟变量。μ为每个预测变量(包括虚拟变量)存储一个值。但是,MATLAB没有标准化包含分类变量的列。

如果你设置“标准化”,错当您使用fitcsvm,然后μ为空向量([]).

数据类型:|双重的

此属性是只读的。

存储在中的训练数据中的观察数Xy,指定为数值标量。

数据类型:双重的

此属性是只读的。

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

数据类型:细胞

此属性是只读的。

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

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

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

数据类型:|双重的

此属性是只读的。

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

数据类型:烧焦

此属性是只读的。

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

数据类型:逻辑

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

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

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

    Mdl。ScoreTransform = '函数';

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

    价值 描述
    “doublelogit” 1 / (1 +E.–2X
    “因弗罗吉特” 日志(X/ (1 -X))
    “ismax” 将分数最大的班级的分数设置为1,并将所有其他班级的分数设置为0
    'logit' 1 / (1 +E.-X
    '没有任何'“身份” X(转换)
    “标志” 1X< 0
    为0X= 0.
    1为X> 0
    “对称” 2X– 1
    “symmetricismax” 将分数最大的班级的分数设置为1,并将所有其他班级的分数设置为-1
    “symmetriclogit” 2 / (1 +E.-X) - 1

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

    Mdl。ScoreTransform = @函数;

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

数据类型:烧焦|function_handle.

此属性是只读的。

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

如果您指定“标准化”,没错当您使用fitcsvm,然后是长度σ等于预测变量的个数。

MATLAB利用全哑编码扩展预测数据中的分类变量。即MATLAB为每个类别变量的每一层创建一个虚拟变量。σ为每个预测变量(包括虚拟变量)存储一个值。但是,MATLAB没有标准化包含分类变量的列。

如果你设置“标准化”,错当您使用fitcsvm,然后σ为空向量([]).

数据类型:|双重的

此属性是只读的。

用于训练SVM分类器的观测权重,指定为N-乘以1的数值向量。N是观察次数(见numobservations.).

fitcsvm将观测权归一化“重量”名称-值对参数,以便W.在一个特定的类别中,总和为该类别的先验概率。

数据类型:|双重的

此属性是只读的。

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

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

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

数据类型:|双重的

此属性是只读的。

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

每一行的y的对应行所观察到的分类X

matlab排除包含缺失值的元素,并从中删除相应的观察X

数据类型:|双重的|逻辑|烧焦|细胞|分类

收敛控制属性

此属性是只读的。

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

描述
聚合 表示算法是否收敛的逻辑标志(1表示收敛)。
uparyforconvergence. 字符向量表示软件用于检测收敛性的准则。
差距 对偶目标函数与原目标函数之间的标量可行性差距。
GapTolerance 标量可行性间隙公差。设置这个公差,例如为1)依照,通过使用名称-值对参数依照“GapTolerance”,1fitcsvm
DeltaGradient 上下违例者之间的梯度差
deltagradienttolerance. 上下限之间梯度差的标量公差。设置这个公差,例如为1)依照,通过使用名称-值对参数“DeltaGradientTolerance”,1e-2fitcsvm
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年当您使用fitcsvm

数据类型:双重的

此属性是只读的。

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

设置收缩周期为1000,例如,指定“ShrinkagePeriod”,1000年当您使用fitcsvm

数据类型:|双重的

Hyperparameter优化性能

此属性是只读的。

超参数的交叉验证优化描述,指定为BayesianOptimization对象或超参数和关联值的表。当“OptimizeHyperparameters”的名称-值对参数fitcsvm在创造上是非空的。价值HyperParameterOptimationResults.取决于优化器野外HyperparameterOptimizationOptions的结构fitcsvm在创建时,如本表中所述。

的价值优化器 的价值HyperParameterOptimationResults.
'Bayesopt'(默认) 类的对象BayesianOptimization
“gridsearch”“随机搜索” 使用的超参数表,观测到的目标函数值(交叉验证损失),以及观测值从最低(最好)到最高(最差)的排序

对象的功能

契约 减少机器学习模型的规模
CompareHoldout. 使用新数据比较两个分类模型的准确性
横梁 交叉验证机器学习模型
discard金宝appSupportVectors 丢弃线性支持向量金宝app机分类器的支持向量
边缘 为支持向量机分类器寻找分类边缘金宝app
fitPosterior 支持向量机(SVM)分类器的拟合后验概率金宝app
incrementalLearner 将二进制分类支持向量机(SVM)模型转换为增量学习者金宝app
损失 寻找支持向量机(SVM)分类器的分类误差金宝app
保证金 为支持向量机分类器寻找分类边缘金宝app
部分竞争 计算部分依赖
局部依赖 创建部分依赖图(PDP)和个人条件期望图(ICE)
预测 使用支持向量机(SVM)分类器分类观察金宝app
重新提交 Resubstitution分类边缘
石灰 局部可解释的模型不可知解释(LIME)
resubloss. Resubstitution分类损失
resubMargin 重新取款分类保证金
重新预订 使用训练的分类器对训练数据进行分类
恢复 恢复培训支持向量机(SVM)分类金宝app器
福芙 沙普利值
testckfold 通过重复交叉验证比较两种分类模型的准确性

例子

全部折叠

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

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

使用已加工的数据集列车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的属性,方法金宝app

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

classOrder = SVMModel。Classnames.
classOrder =2x1电池{“癣”}{' virginica '}

头等舱(“多色的”)是否定类,而第二个(“维吉尼亚”)是积极类。属性可以在训练期间更改类的顺序“类名”名称值对参数。

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

sv = svmmodel.金宝appsupportVectors;图g箭偶(x(:,1),x(:,2),y)保持绘图(SV(:,1),SV(:,2),“柯”“MarkerSize”10)传说(“多色的”“维吉尼亚”“金宝app支持向量”)举行

图中包含一个轴。轴包含3个类型为line的对象。这些对象表示versicolor、virginica和支持向量机。金宝app

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

属性在训练期间设置框约束,可以调整边界(以及支持向量的数量)金宝app“BoxConstraint”名称值对参数。

加载电离层数据集。

负载电离层

训练并交叉验证支持向量机分类器。标准化预测器数据并指定类的顺序。

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是一个ClassificationededModel.旨在支持向量机分类器。默认情况下,该软件实现10倍交叉验证。

或者,您可以交叉验证一个经过培训的分类VM将它传递给横梁

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

CVSVMModel。训练有素的{1}
ANS = CompactClassificationsVM RecordingAme:'Y'类分类:[] ClassNames:{'B''G'} ScorEtransform:'无'Alpha:[78x1 Double]偏置:-0.2209内核参数:[1x1 struct] mu:[1x34双] sigma:[1x34双]支持Vector金宝apps:[78x34双] SupportSVectorLabels:[78x1双]属性,方法

每个褶皱都是一个褶皱CompactClassificationSVM分类器对90%的数据进行训练。

估计泛化误差。

generror = kfoldloss(cvsvmmodel)
genError = 0.1168

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

更多关于

全部展开

算法

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

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

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

  • 对于两类学习,如果你指定代价矩阵 C (见费用),然后软件更新类的先验概率P.(见之前)P.C通过纳入本节中所述的处罚 C

    具体地说,fitcsvm完成这些步骤:

    1. 计算 P. C = P. ' C

    2. 规范化P.C*更新后的先验概率和是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.

    W.j是标准化的观测权值吗j;P.CK.更新的类先验概率是多少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.%在训练数据中的观察值中,有1%的得分为负值。

    • 该软件实现了强劲的学习两级学习。换句话说,该软件试图删除100个P.%优化算法收敛时的观测值。移除的观测值对应于幅度较大的梯度。

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

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

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

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

    • 金宝appSupportVectors属性存储支持向量的预测值,包括虚拟变量。例如,假设有金宝appm金宝app支持向量和三个预测因子,其中一个是有三个层次的分类变量。然后金宝appSupportVectors是一个N-by-5矩阵。

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

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

    • 对于一个变量K.订购级别,软件创建K.– 1虚拟变量j第一个哑变量为–1对于以下级别j,+1适合水平j+ 1通过K.

    • 存储在中的虚拟变量的名称ExpandedPredictorNames属性指示具有该值的第一级+1.软件商店K.– 1虚拟变量的附加预测器名称,包括级别2、3、…K.

  • 所有解算器都执行L.1 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神经计算机。,卷。13,第7号,2001号,第1443-1471页。

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

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

扩展功能

介绍了R2014a