主要内容

fitrsvm

拟合支持向量金宝app机回归模型

描述

fitrsvm训练或交叉验证支持向量机(SVM)回归模型上的低通过中等金宝app维预测数据集。fitrsvm金宝app支持使用内核函数映射预测器数据,并支持SMO, ISDA或l1目标函数最小化的二次规划软边际最小化。

要在高维数据集(即包含许多预测变量的数据集)上训练线性SVM回归模型,请使用fitrlinear代替。

要训练用于二元分类的SVM模型,请参见fitcsvm对于低贯穿中维预测器数据集,或fitclinear对于高维数据集。

例子

Mdl= fitrsvm (资源描述ResponseVarName返回一个完整的、经过训练的支持向量机(SVM)回金宝app归模型Mdl使用表中的预测器值进行训练资源描述响应值资源描述。ResponseVarName

Mdl= fitrsvm (资源描述公式返回使用表中的预测器值训练的完整SVM回归模型资源描述公式是否有响应的解释模型和预测变量的子集资源描述曾经适合Mdl

Mdl= fitrsvm (资源描述Y返回使用表中的预测器值训练的完整的SVM回归模型资源描述和向量中的响应值Y

Mdl= fitrsvm (XY返回使用矩阵中的预测器值训练的完整的SVM回归模型X和向量中的响应值Y

例子

Mdl= fitrsvm (___名称,值返回一个SVM回归模型,其中包含由一个或多个名值对参数指定的附加选项,使用前面的任何语法。例如,您可以指定内核函数或训练交叉验证的模型。

例子

全部折叠

使用存储在矩阵中金宝app的样本数据训练支持向量机(SVM)回归模型。

加载carsmall数据集。

负载carsmallrng“默认”%用于再现性

指定马力而且重量作为预测变量(X),英里/加仑作为响应变量(Y).

X =[马力,重量];Y = mpg;

训练一个默认的SVM回归模型。

Mdl = fitrsvm(X,Y)
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [75x1 double] Bias: 57.3800 KernelParameters: [1x1 struct] NumObservations: 93 BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] Is金宝appSupportVector: [93x1 logical] Solver: 'SMO' Properties, Methods

Mdl是受过训练的RegressionSVM模型。

检查模型的收敛性。

Mdl.ConvergenceInfo.Converged
ans =逻辑0

0表示模型未收敛。

使用标准化数据重新训练模型。

MdlStd = fitrsvm(X,Y,“标准化”,真正的)
MdlStd = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [77x1 double] Bias: 22.9131 KernelParameters: [1x1 struct] Mu: [109.3441 2.9625e+03] Sigma: [45.3545 805.9668] NumObservations: 93 BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] Is金宝appSupportVector: [93x1 logical] Solver: 'SMO' Properties, Methods

检查模型的收敛性。

MdlStd.ConvergenceInfo.Converged
ans =逻辑1

1表示模型确实收敛。

计算新模型的重替换(样本内)均方误差。

lStd = resubLoss(MdlStd)
lStd = 17.0256

使用UCI机器学金宝app习库中的鲍鱼数据训练一个支持向量机回归模型。

下载数据并将其保存在当前文件夹中“abalone.csv”

url =“https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data”;websave (“abalone.csv”url);

将数据读入表。指定变量名。

Varnames = {“性”“长度”“直径”“高度”“Whole_weight”...“Shucked_weight”“Viscera_weight”“Shell_weight”“戒指”};Tbl =可读(“abalone.csv”“文件类型”“文本”“ReadVariableNames”、假);Tbl.Properties.VariableNames = varnames;

样本数据包含4177个观测值。所有的预测变量都是连续的,除了,这是一个包含可能值的分类变量“米”(男性)“F”(适用于女性),以及“我”(婴儿)。目标是预测环的数量(存储在),并通过物理测量来确定它的年龄。

训练SVM回归模型,使用具有自动核尺度的高斯核函数。标准化数据。

rng默认的%用于再现性Mdl = fitrsvm(Tbl,“戒指”“KernelFunction”“高斯”“KernelScale”“汽车”...“标准化”,真正的)
Mdl = RegressionSVM PredictorNames:{'性别' '长度' '直径' '高度' 'Whole_weight' 'Shucked_weight' ' a_weight' 'Shell_weight'} ResponseName: 'Rings'分类预测:1 ResponseTransform: 'none' Alpha: [3635×1 double]偏差:10.8144 KernelParameters: [1×1 struct] Mu: [0 0 0 0 0.5240 0.4079 0.1395 0.8287 0.3594 0.1806 0.2388] Sigma: [1 1 1 1 0.1201 0.0992 0.0418 0.4904 0.2220 0.1096 0.1392] NumObservations: 4177 BoxConstraints: [4177×1 double] ConvergenceInfo:[1×1 struct] Is金宝appSupportVector: [4177×1 logical] Solver: 'SMO'属性,方法

命令窗口显示了这一点Mdl是受过训练的RegressionSVM建模并显示属性列表。

显示的属性Mdl使用点表示法。例如,检查以确认模型是否收敛以及它完成了多少次迭代。

conv = mll . convergenceinfo . converged
conv =逻辑1
iter = Mdl。NumIterations
Iter = 2759

返回的结果表明,该模型在2759次迭代后收敛。

加载carsmall数据集。

负载carsmallrng“默认”%用于再现性

指定马力而且重量作为预测变量(X),英里/加仑作为响应变量(Y).

X =[马力重量];Y = mpg;

使用5倍交叉验证对两个SVM回归模型进行交叉验证。对于这两个模型,指定以标准化预测器。对于其中一个模型,指定使用默认的线性核进行训练,而另一个模型则指定使用高斯核进行训练。

MdlLin = fitrsvm(X,Y,“标准化”,真的,“KFold”5)
MdlLin = RegressionPartitionedSVM CrossValidatedModel: 'SVM' PredictorNames: {'x1' 'x2'} ResponseName: 'Y' NumObservations: 94 KFold: 5 Partition: [1x1 cvpartition] ResponseTransform: 'none'属性,方法
MdlGau = fitrsvm(X,Y,“标准化”,真的,“KFold”5,“KernelFunction”“高斯”
MdlGau = RegressionPartitionedSVM CrossValidatedModel: 'SVM' PredictorNames: {'x1' 'x2'} ResponseName: 'Y' NumObservations: 94 KFold: 5 Partition: [1x1 cvpartition] ResponseTransform: 'none'属性,方法
MdlLin。训练有素的
ans =5×1单元格数组{1 x1 classreg.learning.regr。CompactRegressionSVM} {1x1 classreg.learning.regr.CompactRegressionSVM} {1x1 classreg.learning.regr.CompactRegressionSVM} {1x1 classreg.learning.regr.CompactRegressionSVM} {1x1 classreg.learning.regr.CompactRegressionSVM}

MdlLin而且MdlGauRegressionPartitionedSVM旨在模型。的训练有素的属性的5 × 1单元格数组CompactRegressionSVM模型。单元中的模型存储了4次观察的训练结果,并保留了1次观察。

比较模型的泛化误差。在这种情况下,泛化误差是样本外均方误差。

mseLin = kfoldLoss(MdlLin)
mseLin = 17.4417
mseGau = kfoldLoss(MdlGau)
mseGau = 16.7333

使用高斯核的SVM回归模型比使用线性核的SVM回归模型性能更好。

通过将整个数据集传递给fitrsvm,并指定产生性能更好的模型的所有名称-值对参数。但是,不要指定任何交叉验证选项。

MdlGau = fitrsvm(X,Y,“标准化”,真的,“KernelFunction”“高斯”);

要预测一组汽车的MPG,通过Mdl还有一张表,上面有赛车的马力和重量预测

这个例子展示了如何使用自动优化超参数fitrsvm.该示例使用carsmall数据。

加载carsmall数据集。

负载carsmall

指定马力而且重量作为预测变量(X),英里/加仑作为响应变量(Y).

X =[马力重量];Y = mpg;

删除X而且Y其中任何一个数组都有缺失值。

R = rmmissing([X Y]);X = R(:,1:end-1);Y = R(:,end);

通过使用自动超参数优化,找到最小化5倍交叉验证损失的超参数。

为了重现性,设置随机种子并使用“expected-improvement-plus”采集功能。

rng默认的Mdl = fitrsvm(X,Y,“OptimizeHyperparameters”“汽车”...“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”...“expected-improvement-plus”))
|====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | BoxConstraint | KernelScale |ε| | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | | |====================================================================================================================| | 最好1 | | 2.9062 | 0.21687 | 2.9062 | 2.9062 | 28.362 | 911.02 | 0.016304 | | 2 |接受| 4.8145 | 5.7538 | 2.9062 | 3.0131 | 0.036953 | 0.053504 | 0.034503 | | 3 |接受| 4.1988 | 0.04507 | 2.9062 | 2.9063 | 0.0062352 | 0.0013479| 81.308 | | 4 |接受| 4.1988 | 0.054743 | 2.9062 | 2.9064 | 680.3 | 293.54 | 162.86 | | 5 |接受| 4.1988 | 7.1972 | 2.9062 | 2.9063 | 14.353 | 0.0066547 | 14.742 | | 6 |接受| 2.9472 | 0.14347 | 2.9062 | 2.9063 | 201.23 | 226.68 | 0.0093069 | | | 7日接受| 2.9475 | 0.24411 | 2.9062 | 2.9062 | 978.06 | 358.58 | 0.07677 | | |接受8 | 3.0499 | 0.062572 | 2.9062 | 2.9064 | 0.15671 | 483.82 | 0.021596 | | | 9日接受| 2.9337 | 0.21888 | 2.9062 | 2.9072 | 996.09 | 983.8 | 0.0099789 | |10 |接受| 2.9362 | 0.080861 | 2.9062 | 2.9143 | 360.93 | 550.72 | 0.023869 | | | 11日接受| 2.9413 | 0.14013 | 2.9062 | 2.921 | 888.36 | 934.77 | 0.036325 | | | 12日接受| 2.9062 | 0.048673 | 2.9062 | 2.9054 | 37.889 | 898.03 | 0.0093655 | | | 13日接受| 2.9667 | 4.962 | 2.9062 | 2.9058 | 938.39 | 53.595 | 0.047829 | | | 14日接受| 2.9165 | 0.044056 | 2.9062 | 2.9084 | 9.5569 | 989.62 | 0.0094747 | | 15 |接受| 2.9228 | 0.040485 | 2.9062 | 2.9069 | 2.4944 | 999.79 | 0.16938 | | 16 |接受| 2.9076 | 0.035094 | 2.9062 | 2.907 | 38.894 | 964.99 | 0.1529 | | | 17日接受| 2.9165 | 0.03856 | 2.9062 | 2.9076 | 13.319 | 996.12 | 0.052038 | | | 18日接受| 2.9071 | 0.10442 | 2.9062 | 2.9067 | 15.421 | 162.57 | 0.31775 | | | 19日接受| 2.9254 | 0.10572 | 2.9062 | 2.9075 | 21.241 | 253.09 | 0.15932 | | |接受20 | 2.9261 | 2.9101 | 2.9062 | 2.9075 | 736.2 | 84.688 | 0.45521 ||====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | BoxConstraint | KernelScale |ε| | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | | |====================================================================================================================| | 21最好| | 2.9028 | 0.1328 | 2.9028 | 2.9032 | 29.769 | 318.09 | 0.59257 | | | 22日接受| 2.9117 | 0.064056 | 2.9028 | 2.9073 | 74.946 | 275.31 | 0.38162 | | | 23日接受| 2.9091 | 0.1816 | 2.9028 | 2.9045 | 2.8513 | 120.39 | 0.94096||24 | Accept | 4.1986 | 0.05993 | 2.9028 | 2.9029 | 0.0013149 | 948.36 | 5.0271 | | 25 | Best | 2.9011 | 0.73481 | 2.9011 | 2.9012 | 23.373 | 34.479 | 1.232 | | 26 | Accept | 2.9064 | 0.18872 | 2.9011 | 2.9022 | 25.394 | 83.156 | 0.81016 | | 27 | Accept | 5.0666 | 5.7849 | 2.9011 | 2.9015 | 834.39 | 7.2639 | 0.54851 | | 28 | Accept | 3.089 | 0.048559 | 2.9011 | 2.9017 | 0.0010403 | 50.88 | 0.63866 | | 29 | Accept | 3.3449 | 0.067819 | 2.9011 | 2.9019 | 117.61 | 45.2 | 10.071 | | 30 | Accept | 2.9363 | 0.30372 | 2.9011 | 2.902 | 19.897 | 46.938 | 0.32841 |

图中包含一个轴对象。标题为Min objective vs. Number of function的axis对象包含2个类型为line的对象。这些对象代表最小观测目标,估计最小目标。

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:40.0806秒总目标函数评估时间:30.0138最佳观测可行点:BoxConstraint KernelScale Epsilon _____________ ___________ _______ 23.373 34.479 1.232观测目标函数值= 2.9011估计目标函数值= 2.902函数评估时间= 0.73481最佳估计可行点(根据模型):BoxConstraint KernelScale Epsilon _____________ ___________ _______ 23.373 34.479 1.232估计目标函数值= 2.902估计函数评估时间= 0.42094
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [70x1 double] Bias: 45.5390 KernelParameters: [1x1 struct] NumObservations: 93 HyperparameterOptimizationResults: [1x1 BayesianOptimization] BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] Is金宝appSupportVector: [93x1 logical] Solver: 'SMO' Properties, Methods

优化搜索BoxConstraintKernelScale,ε.输出是估计交叉验证损失最小的回归。

输入参数

全部折叠

用于训练模型的示例数据,指定为表。每行资源描述对应一个观测值,每一列对应一个预测变量。可选地,资源描述可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。

如果资源描述包含响应变量,您希望在中使用所有剩余变量资源描述作为预测器,然后使用指定响应变量ResponseVarName

如果资源描述包含响应变量,并且您希望仅在中使用其余变量的子集资源描述作为预测器,然后指定一个公式使用公式

如果资源描述不包含响应变量,则指定响应变量使用Y.响应变量的长度和的行数资源描述必须是相等的。

如果一排资源描述或者一个元素Y至少包含一个,然后fitrsvm在训练模型时从两个参数中删除这些行和元素。

中出现的顺序指定预测符的名称资源描述,使用PredictorNames名称-值对参数。

数据类型:表格

响应变量名,指定为中的变量名资源描述.响应变量必须是数值向量。

您必须指定ResponseVarName作为字符向量或字符串标量。例如,如果资源描述存储响应变量Y作为资源描述。Y,然后指定为“Y”.否则,软件处理的所有列资源描述,包括Y,作为训练模型时的预测因子。

数据类型:字符|字符串

响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”.在这种形式下,Y表示响应变量,和x1x2,x3表示预测变量。

中指定变量的子集资源描述使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述没有出现在公式

公式中的变量名必须同时为资源描述Tbl.Properties.VariableNames)和有效的MATLAB®标识符。中的变量名可以验证资源描述通过使用isvarname函数。变量名无效,则可以使用matlab.lang.makeValidName函数。

数据类型:字符|字符串

响应数据,指定为n-by-1数值向量。的长度Y的行数资源描述X必须是相等的。

如果一排资源描述X的元素Y,至少包含一个,然后fitrsvm在训练模型时从两个参数中删除这些行和元素。

要指定响应变量名,请使用ResponseName名称-值对参数。

数据类型:|

支持向量机回归模型适合的预测器数据,指定为n——- - - - - -p数字矩阵。n观察的次数和p是预测变量的数量。

的长度Y的行数X必须是相等的。

如果一排X或者一个元素Y至少包含一个,然后fitrsvm从两个参数中删除这些行和元素。

中出现的顺序指定预测符的名称X,使用PredictorNames名称-值对参数。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。

例子:“KernelFunction”、“高斯”、“标准化”,没错,‘CrossVal’,‘上’使用高斯核和标准化训练数据训练10倍交叉验证的SVM回归模型。

请注意

方法时,不能使用任何交叉验证名称-值参数“OptimizeHyperparameters”名称-值参数。您可以修改交叉验证“OptimizeHyperparameters”只有使用“HyperparameterOptimizationOptions”名称-值参数。

金宝app支持向量机选项

全部折叠

方框约束的alpha系数,指定为逗号分隔的对,由“BoxConstraint”一个正标量。

的绝对值α系数不能超过的值BoxConstraint

默认的BoxConstraint的值。“高斯”“rbf”核函数为差(Y) / 1.349,在那里差(Y)响应的四分位范围是可变的吗Y.对于所有其他内核,默认为BoxConstraint取值为1。

例子:BoxConstraint 10

数据类型:|

核函数用于计算格拉姆矩阵,指定为逗号分隔的对,由“KernelFunction”和这个表中的一个值。

价值 描述 公式
“高斯”“rbf” 高斯或径向基函数(RBF)核

G x j x k 经验值 x j x k 2

“线性” 线性内核

G x j x k x j x k

多项式的 多项式的内核。使用“PolynomialOrder”,指定一个多项式的阶核

G x j x k 1 + x j x k

你可以设置你自己的核函数,例如,内核,通过设置“KernelFunction”、“内核”内核必须有以下表格:

函数G =核(U,V)
地点:

  • U是一个——- - - - - -p矩阵。

  • V是一个n——- - - - - -p矩阵。

  • G是一个——- - - - - -n行的克矩阵U而且V

kernel.m必须在MATLAB路径上。

避免对内核函数使用泛型名称是一种良好的实践。例如,调用一个sigmoid核函数“mysigmoid”而不是“乙状结肠”

例子:“KernelFunction”、“高斯”

数据类型:字符|字符串

内核规模参数,指定为逗号分隔的对,由“KernelScale”而且“汽车”或者一个正标量。该软件划分预测矩阵的所有元素X的值KernelScale.然后,应用相应的核范数计算Gram矩阵。

  • 如果你指定“汽车”,然后软件使用启发式程序选择合适的比例因子。这个启发式过程使用子抽样,所以估计值可以在不同的调用中有所不同。因此,为了重现结果,设置一个随机数种子使用rng前培训。

  • 如果你指定KernelScale比如你自己的核函数,“KernelFunction”、“内核”,然后软件抛出一个错误。您必须在内部应用缩放内核

例子:“KernelScale”、“汽车”

数据类型:||字符|字符串

多项式核函数顺序,指定为逗号分隔的对,由“PolynomialOrder”一个正整数。

如果你设置“PolynomialOrder”而且KernelFunction不是多项式的,然后软件抛出一个错误。

例子:“PolynomialOrder”,2

数据类型:|

内核偏移量参数,指定为逗号分隔的对,由“KernelOffset”一个非负标量。

软件添加KernelOffset格拉姆矩阵的每个元素。

默认值为:

  • 0如果解算器是SMO(也就是说,你设置“规划求解”、“SMO的

  • 0.1如果求解器是ISDA(也就是说,您设置“规划求解”、“ISDA的

例子:“KernelOffset”,0

数据类型:|

不敏感频带宽度的一半,指定为由逗号分隔的对组成‘ε’和一个非负标量值。

默认的ε值是差(Y) / 13.49,这是使用响应变量的四分位范围对标准偏差的十分之一的估计Y.如果差(Y)等于0,那么默认值是多少ε值为0.1。

例子:‘ε’,0.3

数据类型:|

标志来标准化预测器数据,指定为由逗号分隔的对组成“标准化”而且真正的1)或(0)

如果你设置“标准化”,真的:

  • 该软件的中心和规模的每列预测数据(X),分别用加权列均值和标准差(加权标准化的具体方法,请参见算法).MATLAB没有对为分类预测器生成的虚拟变量列中包含的数据进行标准化。

  • 该软件使用标准化的预测矩阵训练模型,但将非标准化的数据存储在模型属性中X

例子:“标准化”,真的

数据类型:逻辑

优化例程,指定为由逗号分隔的对组成“规划求解”和这个表中的一个值。

价值 描述
ISDA的 迭代单数据算法(见[30]
“L1QP” 使用quadprog(优化工具箱)来实现l利用二次规划实现软裕度最小化。此选项需要“优化工具箱”许可证。详情请参见二次规划定义(优化工具箱)
SMO的 顺序最小优化(参见[17]

默认值为:

  • ISDA的如果你设置“OutlierFraction”到正的值

  • SMO的否则

例子:“规划求解”、“ISDA的

alpha系数的初始估计,指定为逗号分隔的对,由“α”和一个数值向量。的长度α必须等于的行数X

  • 的每个元素α对应于X

  • α不能包含年代。

  • 如果你指定α和交叉验证名称-值对参数中的任何一个(“CrossVal”“CVPartition”“坚持”“KFold”,或“Leaveout”),则软件会返回一个错误。

如果Y的所有行,然后删除YX,α对应于缺失的值。也就是说,输入:

idx = ~isnan(Y);Y = Y(idx);X = X(idx,:);Alpha = Alpha (idx);
然后,通过YX,α分别作为响应、预测因子和初始alpha估计值。

默认为0(大小(Y, 1))

例子:“阿尔法”,0.1 *(大小(X, 1), 1)

数据类型:|

缓存大小,由逗号分隔的对组成“CacheSize”而且“最大”或者一个正标量。

如果CacheSize“最大”,然后软件预留足够的内存来保存整个n——- - - - - -n格拉姆矩阵

如果CacheSize是一个正标量,那么软件储备呢CacheSize用于训练模型的兆字节内存。

例子:“CacheSize”、“最大”

数据类型:||字符|字符串

标记来剪辑alpha系数,指定为逗号分隔的对,由“ClipAlphas”,要么真正的

假设观测的系数jαj以及观察的方框约束jCjj= 1,…,n,在那里n是训练样本量。

价值 描述
真正的 在每次迭代中,如果αj是接近0还是接近Cj,然后MATLAB集αjTo 0或ToCj,分别。
MATLAB在优化过程中不改变alpha系数。

的最终值由MATLAB存储αα训练后的SVM模型对象的属性。

ClipAlphas会影响SMO和ISDA的收敛性。

例子:“ClipAlphas”,假的

数据类型:逻辑

优化诊断消息输出之间的迭代次数,指定为由逗号分隔的对组成“NumPrint”和一个非负整数。

如果你指定“详细”,1而且NumPrint, NumPrint,软件显示SMO和ISDA的所有优化诊断信息numprint在命令窗口中的迭代。

例子:“NumPrint”,500年

数据类型:|

训练数据中异常值的期望比例,指定为逗号分隔的对,由“OutlierFraction”和区间[0,1]中的数值标量。fitrsvm删除具有较大梯度的观测值,确保fitrsvm删除指定的观测值的部分OutlierFraction在时间上达到收敛。此名称-值对仅在以下情况下有效“规划求解”ISDA的

例子:“OutlierFraction”,0.1

数据类型:|

标记,以将重复观测值替换为训练数据中的单个观测值,指定为逗号分隔的对,由“RemoveDuplicates”而且真正的

如果RemoveDuplicates真正的,然后fitrsvm用相同值的单个观测值替换训练数据中的重复观测值。单个观测值的权重等于相应去除的重复项的权重之和(参见权重).

提示

如果您的数据集包含许多重复的观察,那么指定“RemoveDuplicates”,真的可以大大减少收敛时间。

数据类型:逻辑

详细级别,指定为逗号分隔的对,由“详细”而且01,或2.的价值详细的控制软件在命令窗口中显示的优化信息的数量,并将信息保存为结构Mdl.ConvergenceInfo.History

下表总结了可用的详细级别选项。

价值 描述
0 软件不显示和保存收敛信息。
1 该软件显示诊断信息,并保存每个收敛条件numprint迭代,numprint名称-值对参数的值“NumPrint”
2 该软件在每次迭代中显示诊断信息并保存收敛条件。

例子:“详细”,1

数据类型:|

其他回归选项

全部折叠

类别预测符列表,指定为此表中的值之一。

价值 描述
正整数向量

向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间p,在那里p用于训练模型的预测器的数量。

如果fitrsvm使用输入变量的子集作为预测器,然后函数仅使用该子集对预测器进行索引。的CategoricalPredictors值不计算响应变量、观察权重变量或函数不使用的任何其他变量。

逻辑向量

一个真正的Entry表示对应的预测器是分类的。向量的长度是p

字符矩阵 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames.用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。
字符向量的字符串数组或单元格数组 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames
“所有” 所有预测因素都是绝对的。

默认情况下,如果预测器数据在表(资源描述),fitrsvm如果一个变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定该变量是分类的。如果预测器数据为矩阵(X),fitrsvm假设所有预测因子都是连续的。要将任何其他预测符标识为类别预测符,请使用CategoricalPredictors名称-值参数。

对于已识别的分类预测因子,fitrsvm使用两种不同的方案创建虚拟变量,具体取决于分类变量是无序的还是有序的。对于一个无序分类变量,fitrsvm为分类变量的每一层创建一个虚拟变量。对于有序分类变量,fitrsvm创建的虚拟变量比类别数少一个。详细信息请参见自动创建虚拟变量

例子:“CategoricalPredictors”、“所有”

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

预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能PredictorNames这取决于你提供训练数据的方式。

  • 如果你提供X而且Y,那么你就可以使用了PredictorNames中预测变量的名称X

    • 里面名字的顺序PredictorNames必须对应的列顺序X.也就是说,PredictorNames {1}名字是X (: 1)PredictorNames {2}名字是X (:, 2)等等。同时,大小(X, 2)而且元素个数(PredictorNames)必须是相等的。

    • 默认情况下,PredictorNames{x1, x2,…}

  • 如果你提供资源描述,那么你就可以使用了PredictorNames选择在训练中使用哪些预测变量。也就是说,fitrsvm中仅使用预测变量PredictorNames以及训练中的响应变量。

    • PredictorNames的子集Tbl.Properties.VariableNames并且不能包括响应变量的名称。

    • 默认情况下,PredictorNames包含所有预测变量的名称。

    • 一个好的实践是使用其中一种来指定训练的预测器PredictorNames公式,但不是两者都有。

例子:“PredictorNames”(“SepalLength”、“SepalWidth”,“PetalLength”,“PetalWidth”)

数据类型:字符串|细胞

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

  • 如果你提供Y,那么你就可以使用了ResponseName为响应变量指定名称。

  • 如果你提供ResponseVarName公式,那么你就不能用了ResponseName

例子:“ResponseName”、“反应”

数据类型:字符|字符串

响应转换,指定为任意一种“没有”或者一个函数句柄。默认为“没有”,这意味着@ (y) y,或者没有变换。对于MATLAB函数或您定义的函数,使用其函数句柄进行响应变换。函数句柄必须接受一个向量(原始响应值)并返回一个相同大小的向量(转换后的响应值)。

例子:假设您创建了一个函数句柄,通过使用将指数变换应用于输入向量Myfunction = @(y)exp(y).然后,您可以将响应转换指定为myfunction ResponseTransform,

数据类型:字符|字符串|function_handle

观察权重,由逗号分隔的对组成“重量”和一个数值向量。的大小权重必须等于行数Xfitrsvm的值规范化权重和为1。

数据类型:|

交叉验证选择

全部折叠

交叉验证标志,指定为逗号分隔的对,由“CrossVal”,要么“上”“关闭”

如果你指定“上”,然后软件实现10倍交叉验证。

若要重写此交叉验证设置,请使用以下名称-值对参数之一:CVPartition坚持KFold,或Leaveout.要创建交叉验证的模型,一次只能使用一个交叉验证的名称-值对参数。

方法对模型进行交叉验证crossval方法。

例子:“CrossVal”,“上”

交叉验证分区,指定为cvpartition创建的分区对象cvpartition.分区对象指定交叉验证的类型以及训练集和验证集的索引。

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition坚持KFold,或Leaveout

例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用cvp = cvpartition(500,'KFold',5).然后,您可以通过使用指定交叉验证的模型“CVPartition”,本量利

用于拒绝验证的数据的百分比,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p,然后软件完成以下步骤:

  1. 随机选择并保留p * 100%的数据作为验证数据,并使用其余数据训练模型。

  2. 将紧凑的、训练过的模型存储在训练有素的交叉验证模型的属性。

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“坚持”,0.1

数据类型:|

交叉验证模型中使用的折叠数,指定为大于1的正整数值。如果你指定KFold, k,然后软件完成以下步骤:

  1. 将数据随机划分为k集。

  2. 对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型k- 1集。

  3. 存储k紧凑,训练有素的模型k的-by-1单元格向量训练有素的交叉验证模型的属性。

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“KFold”,5

数据类型:|

省略一个交叉验证标志,指定为“上”“关闭”.如果你指定“Leaveout”,“上”,然后对每个的n观察(n(不包括遗漏的观测数据)的观测数据数目是否已列明NumObservations属性的模型),软件完成这些步骤:

  1. 保留一个观察数据作为验证数据,并使用另一个数据训练模型n- 1次观察。

  2. 存储n紧凑,训练有素的模型在一个n的-by-1单元格向量训练有素的交叉验证模型的属性。

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition坚持KFold,或Leaveout

例子:“Leaveout”,“上”

收敛控制

全部折叠

由SMO或ISDA获得的上下违规者之间梯度差的容忍度,指定为逗号分隔的对,由“DeltaGradientTolerance”一个非负标量。

例子:“DeltaGradientTolerance”,1的军医

数据类型:|

由SMO或ISDA获得的可行性间隙公差,指定为由逗号分隔的对组成“GapTolerance”一个非负标量。

如果GapTolerance0,然后fitrsvm不使用此参数检查收敛性。

例子:“GapTolerance”,1的军医

数据类型:|

数值优化迭代的最大次数,指定为由逗号分隔的对组成“IterationLimit”一个正整数。

不管优化例程是否成功收敛,软件都会返回一个训练好的模型。Mdl。ConvergenceInfo包含收敛信息。

例子:“IterationLimit”,1 e8

数据类型:|

对Karush-Kuhn-Tucker (KKT)违反的容忍度,指定为逗号分隔的对,由“KKTTolerance”和一个非负标量值。

此名值对仅适用于“规划求解”SMO的ISDA的

如果KKTTolerance0,然后fitrsvm不使用此参数检查收敛性。

例子:“KKTTolerance”,1的军医

数据类型:|

活动集的约简之间的迭代次数,指定为由逗号分隔的对组成“ShrinkagePeriod”和一个非负整数。

如果你设置“ShrinkagePeriod”,0,则软件不收缩活动集。

例子:“ShrinkagePeriod”,1000年

数据类型:|

Hyperparameter优化

全部折叠

参数进行优化,指定为由逗号分隔的对组成“OptimizeHyperparameters”和以下其中之一:

  • “没有”-不要优化。

  • “汽车”——使用{‘BoxConstraint’,‘KernelScale’,‘ε’}

  • “所有”-优化所有符合条件的参数。

  • 符合条件的参数名的字符串数组或单元格数组。

  • 向量的optimizableVariable对象的输出hyperparameters

优化尝试最小化交叉验证损失(错误)fitrsvm通过改变参数。若要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions名称-值对。

请注意

的价值“OptimizeHyperparameters”重写使用其他名称-值参数指定的任何值。例如,设置“OptimizeHyperparameters”“汽车”原因fitrsvm方法所对应的超参数“汽车”选项并忽略超参数的任何指定值。

符合条件的参数fitrsvm是:

  • BoxConstraint- - - - - -fitrsvm在正数值中搜索,默认情况下在范围内按对数缩放(1 e - 3, 1 e3)

  • KernelScale- - - - - -fitrsvm在正数值中搜索,默认情况下在范围内按对数缩放(1 e - 3, 1 e3)

  • ε- - - - - -fitrsvm在正数值中搜索,默认情况下在范围内按对数缩放(1 e - 3, 1 e2) *差(Y) / 1.349

  • KernelFunction- - - - - -fitrsvm搜索中“高斯”“线性”,多项式的

  • PolynomialOrder- - - - - -fitrsvm搜索范围内的整数(2、4)

  • 标准化- - - - - -fitrsvm搜索中“真正的”而且“假”

通过传递的向量来设置非默认参数optimizableVariable具有非默认值的对象。例如,

负载carsmallParams =超参数(“fitrsvm”(功率、重量),MPG);参数(1)。Range = [1e-4,1e6];

通过参数个数作为价值OptimizeHyperparameters

默认情况下,迭代显示出现在命令行上,并根据优化中的超参数数量显示图形。对于优化和绘图,目标函数为Log(1 +交叉验证损失).要控制迭代显示,请设置详细的字段“HyperparameterOptimizationOptions”名称-值参数。为了控制情节,设置ShowPlots字段“HyperparameterOptimizationOptions”名称-值参数。

有关示例,请参见优化SVM回归

例子:“OptimizeHyperparameters”、“汽车”

用于优化的选项,指定为结构。的效果OptimizeHyperparameters名称-值参数。结构中的所有字段都是可选的。

字段名 默认的
优化器
  • “bayesopt”-使用贝叶斯优化。在内部,此设置调用bayesopt

  • “gridsearch”-使用网格搜索NumGridDivisions每个维度的值。

  • “randomsearch”-在其中随机搜索MaxObjectiveEvaluations点。

“gridsearch”以随机顺序进行搜索,使用统一抽样而不从网格中替换。优化后,可以使用命令获取网格顺序的表sortrows (Mdl.HyperparameterOptimizationResults)

“bayesopt”
AcquisitionFunctionName

  • “expected-improvement-per-second-plus”

  • “expected-improvement”

  • “expected-improvement-plus”

  • “expected-improvement-per-second”

  • “lower-confidence-bound”

  • “probability-of-improvement”

名称包括的获取函数每秒不能产生可重复的结果,因为优化依赖于目标函数的运行时间。名称包括的获取函数+当他们过度开发一个区域时,修改他们的行为。详情请参见采集函数类型

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 目标函数求值的最大个数。 30.“bayesopt”而且“randomsearch”,而整个电网为“gridsearch”
MaxTime

时间限制,指定为正实标量。时间限制以秒为单位,由抽搐而且toc.运行时间可以超过MaxTime因为MaxTime不中断函数求值。

NumGridDivisions “gridsearch”,表示每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段将被忽略。 10
ShowPlots 指示是否显示图的逻辑值。如果真正的,该字段根据迭代次数绘制最佳观测目标函数值。如果使用贝叶斯优化(优化器“bayesopt”),则该字段也绘制出目标函数的最佳估计值。最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察)而且BestSoFar (estim)。列的迭代分别显示。您可以在属性中找到这些值ObjectiveMinimumTrace而且EstimatedObjectiveMinimumTraceMdl。HyperparameterOptimizationResults.如果问题包含一个或两个用于贝叶斯优化的优化参数,则ShowPlots还绘制了目标函数对参数的模型。 真正的
SaveIntermediateResults 时是否保存结果的逻辑值优化器“bayesopt”.如果真正的,此字段将覆盖名为“BayesoptResults”在每次迭代中。变量是aBayesianOptimization对象。
详细的

在命令行显示:

  • 0-无迭代显示

  • 1-迭代显示

  • 2-带有额外信息的迭代显示

详细信息请参见bayesopt详细的名称-值参数和示例使用贝叶斯优化优化分类器拟合

1
UseParallel 指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见并行贝叶斯优化
重新分区

指示是否在每次迭代中重新划分交叉验证的逻辑值。如果这个字段是,优化器使用单个分区进行优化。

设置真正的通常会给出最健壮的结果,因为它考虑了分区噪声。然而,为了获得好的结果,真正的需要至少两倍的函数求值。

使用以下三个选项中的一个即可。
CVPartition 一个cvpartition对象创建的cvpartition “Kfold”,5如果没有指定交叉验证字段
坚持 范围内的标量(0,1)表示抵抗分数
Kfold 大于1的整数

例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)

数据类型:结构体

输出参数

全部折叠

训练过的SVM回归模型,返回为RegressionSVM模型或RegressionPartitionedSVM旨在模型。

如果您设置了任何名称-值对参数KFold坚持LeaveoutCrossVal,或CVPartition,然后Mdl是一个RegressionPartitionedSVM旨在模型。否则,Mdl是一个RegressionSVM模型。

限制

fitrsvm金宝app支持低通中等维数据集。对于高维数据集,使用fitrlinear代替。

提示

  • 除非您的数据集很大,否则总是尝试标准化预测器(参见标准化).标准化使得预测因子对测量它们的尺度不敏感。

  • 方法进行交叉验证是一种良好的实践KFold名称-值对参数。交叉验证结果决定了SVM模型的泛化效果。

  • 支持向量的稀疏性是支持向金宝app量机模型的理想特性。若要减少支持向量的数量,请设置金宝appBoxConstraint名称-值对参数设置为大值。这个动作也增加了训练时间。

  • 最佳训练时间,请设置CacheSize尽可能高的内存限制在您的计算机上允许。

  • 如果你期望的支持向量比训练集中的观察数据要少得多,金宝app那么你可以通过使用名值对参数缩小活动集来显著地加快收敛速度“ShrinkagePeriod”.这是一个很好的实践“ShrinkagePeriod”,1000年

  • 远离回归线的重复观测不影响收敛。然而,在回归线附近发生的少数重复观测结果会大大减慢收敛速度。要加快收敛速度,请指定“RemoveDuplicates”,真的如果:

    • 你的数据集包含许多重复的观察结果。

    • 您怀疑一些重复的观察结果可能落在回归线附近。

    然而,为了在训练过程中保持原始数据集,fitrsvm必须临时存储单独的数据集:原始的和没有重复观测的数据集。因此,如果指定真正的对于包含很少重复的数据集,那么fitrsvm消耗的内存接近原始数据的两倍。

  • 在训练模型之后,您可以生成预测新数据响应的C/ c++代码。生成C/ c++代码需要MATLAB编码器™.详细信息请参见代码生成简介

算法

  • 关于线性和非线性SVM回归问题的数学公式和求解算法,请参见理解支持向量机回归金宝app

  • <定义>,空字符向量(,空字符串(""),< >失踪值表示缺失的数据值。fitrsvm删除与缺失响应对应的整行数据。当权重归一化时,fitrsvm忽略与至少一个缺失预测器的观测结果对应的任何权重。因此,观察框的约束可能不相等BoxConstraint

  • fitrsvm删除权重为零的观测值。

  • 如果你设置“标准化”,真的而且“重量”,然后fitrsvm使用相应的加权均值和加权标准差对预测因子进行标准化。也就是说,fitrsvm标准化预测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

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

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

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

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

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

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

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

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

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

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

  • p是你在训练数据中期望的异常值的比例。如果你设置OutlierFraction, p,然后软件实现强劲的学习.换句话说,软件试图删除100个p优化算法收敛时观测值的%。被移除的观测值对应的是幅度较大的梯度。

参考文献

[1]克拉克,D.施雷特,A.亚当斯。“逆向传播与逆向传播的定量比较”,提交给1996年澳大利亚神经网络会议。

[2]范,r.e。,林志信。陈和c - j。林。“使用二阶信息训练支持向量机的工作集选择。”金宝app机器学习研究杂志, 2005年第6卷,第1889-1918页。

[3]凯克曼V. -M。黄和M.沃格特。从庞大数据集训练核心机器的迭代单数据算法:理论和性能。在金宝app支持向量机:理论与应用.王立波编辑,255-274。柏林:斯普林格出版社,2005年。

[4]利希曼,M。UCI机器学习库[http://archive.ics.uci.edu/ml]。加州欧文市:加州大学信息与计算机科学学院。

[5]纳什,w.j., T. L.塞勒斯,S. R.塔尔博特,A. J.考索恩,W. B.福特。鲍鱼种群生物学(石决明种)在塔斯马尼亚。I.黑唇鲍鱼(h . rubra)来自北海岸和巴斯海峡群岛。”海洋渔业司,1994年第48号技术报告。

[6]哇,S。级联相关的扩展和基准测试:前馈监督人工神经网络级联相关架构的扩展和基准测试。塔斯马尼亚大学计算机科学系论文, 1995年。

扩展功能

版本历史

在R2015b中引入