主要内容

ClassificationSVM

支持向量机(SVM)用于单类和二元分类

描述

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

创建

创建一个ClassificationSVM对象的使用fitcsvm

属性

全部展开

支持向量机性能

此属性是只读的。

训练的分类器系数,指定为年代1数字向量。年代是经过训练的分类器中支持向量的个数,总和(Mdl.IsSupportVector)

α包含从对偶问题训练的分类器系数,即估计的拉格朗日乘子。方法删除重复项RemoveDuplicates的名值对参数fitcsvm,那么对于一组支持向量的重复观察,α包含一个对应于整个集合的系数。也就是说,MATLAB®将非零系数归为一组重复数据中的一个观察结果,系数为0到集合中所有其他重复的观察值。

数据类型:|

此属性是只读的。

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

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

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

f x x / 年代 β + b

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

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

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

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

数据类型:|

此属性是只读的。

偏差项,指定为一个标量。

数据类型:|

此属性是只读的。

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

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

数据类型:|

此属性是只读的。

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

描述
大小

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

算法

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

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

数据类型:结构体

此属性是只读的。

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

方法删除重复项RemoveDuplicates的名值对参数fitcsvm,那么对于一组支持向量的重复观察,IsSupportVector只标记一个观察结果作为支持向量。

数据类型:逻辑

此属性是只读的。

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

描述
函数

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

规模

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

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

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

数据类型:结构体

此属性是只读的。

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

数据类型:|

此属性是只读的。

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

数据类型:

此属性是只读的。

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

此属性是只读的。

支持向量类标签,指定为年代1数字向量。年代是经过训练的分类器中支持向量的个数,总和(Mdl.IsSupportVector)

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

方法删除重复项RemoveDuplicates的名值对参数fitcsvm,那么对于一组支持向量的重复观察,SupportVectorLabels包含一个唯一的支持向量标签。

数据类型:|

此属性是只读的。

的支持向量,指定为年代——- - - - - -p数字矩阵。年代是经过训练的分类器中支持向量的个数,总和(Mdl.IsSupportVector),p是预测器数据中的预测器变量的数量。

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

方法删除重复项RemoveDuplicates的名值对参数fitcsvm,那么对于一组支持向量的重复观察,SupportVectors包含一个唯一的支持向量。

数据类型:|

其他分类属性

此属性是只读的。

分类预测指标,指定为正整数的向量。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

  • 看到下面成了学习,之前= 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,然后σ是一个空向量([]).

数据类型:|

此属性是只读的。

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

fitcsvm方法中指定的观察权重归一化“重量”的元素名值对参数W在一个特定的类别内,和等于该类别的先验概率。

数据类型:|

此属性是只读的。

用于训练支持向量机分类器的非标准化预测器,指定为数值矩阵或表格。

每一行的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迭代时的值

  • NumSupportVectors:数值向量,表示迭代时支持向量的个数

  • 客观的的数字向量。客观的迭代时的值

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

数据类型:结构体

此属性是只读的。

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

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

数据类型:

此属性是只读的。

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

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

数据类型:|

Hyperparameter优化性能

此属性是只读的。

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

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

对象的功能

紧凑的 减小机器学习模型的尺寸
compareHoldout 使用新数据比较两种分类模型的准确性
crossval 交叉验证机器学习模型
discardSupportVectors 丢弃支持向量机分类器中的支持向量
边缘 为支持向量机(SVM)分类器寻找分类边
fitPosterior 为支持向量机分类器拟合后验概率
收集 收集的属性统计和机器学习工具箱对象从GPU
incrementalLearner 将二元分类支持向量机模型转化为增量学习器
石灰 局部可解释模型不可知解释(LIME)
损失 查找支持向量机分类器的分类错误
保证金 查找支持向量机(SVM)分类器的分类裕量
partialDependence 计算部分依赖
plotPartialDependence 创建偏依赖图(PDP)和个体条件期望图(ICE)
预测 使用支持向量机分类器对观测数据进行分类
resubEdge Resubstitution分类边缘
resubLoss Resubstitution分类损失
resubMargin Resubstitution分类保证金
resubPredict 使用训练过的分类器对训练数据进行分类
重新开始 恢复训练支持向量机(SVM)分类器
沙普利 沙普利值
testckfold 通过重复交叉验证比较两种分类模型的准确性

例子

全部折叠

载入费雪的虹膜数据集。去除萼片的长度和宽度和所有观察到的濑花虹膜。

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

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

SVMModel = 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] IsSupportVector: [100x1 logical] Solver: 'SMO' Properties, Methods

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

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

第一节课(“多色的”)为负类,第二类(“virginica”)是积极的阶级。方法可以在训练期间更改类顺序“类名”名称-值对的论点。

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

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

图中包含一个axes对象。坐标轴对象包含3个line类型的对象。这些对象代表versicolor, virginica,支持向量。

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

方法在训练期间设置框约束,可以调整边界(以及支持向量的数量)“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.2210 KernelParameters: [1x1 struct] Mu:[0.8888 0 0.6320 0.0406 0.5931 0.1205 0.5361…] Sigma:[0.3149 0 0.5033 0.4441 0.5255 0.4663 0.4987…]supportvector: [78x34 double] SupportVectorLabels: [78x1 double]属性,方法

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

估计泛化误差。

genError = kfoldLoss (CVSVMModel)
genError = 0.1168

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

更多关于

全部展开

算法

  • 支持向量机二元分类算法的数学公式见二值分类的支持向量机而且理解支持向量机

  • <定义>,空字符向量(,空字符串(""),< >失踪值表示缺失值。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系数。

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

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

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

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

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

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

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

    j 1 n α j n ν

参考文献

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

[2]肖科普夫,B. J. C.普拉特,J. C.肖-泰勒,A. J.斯莫拉,R. C.威廉姆森。"估计高维分布的支持度"神经第一版, 2001年第13卷第7期,第1443-1471页。

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

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

扩展功能

版本历史

介绍了R2014a

全部展开

Baidu
map