拟合支持向量万博1manbetx机回归模型
fitrsvm
在低至中维预测数据集上训练或交叉验证支持向量机(SVM)万博1manbetx回归模型。fitrsvm
万博1manbetx支持使用内核函数映射预测器数据,并支持SMO、ISDA或l1软边际最小化通过二次规划的目标函数最小化。
要在高维数据集(即包含许多预测变量的数据集)上训练线性SVM回归模型,请使用fitrlinear
代替。
要训练用于二元分类的SVM模型,请参见fitcsvm
对于低至中等维预测器数据集,或fitclinear
对于高维数据集。
返回一个完整的、训练好的支持向量机(SVM)回归万博1manbetx模型Mdl
= fitrsvm (资源描述
,ResponseVarName
)Mdl
使用表中的预测值进行训练资源描述
和响应值资源描述。ResponseVarName
.
使用存储在矩阵中万博1manbetx的样本数据训练支持向量机(SVM)回归模型。
加载carsmall
数据集。
负载carsmallrng“默认”%为了重现性
指定马力
和重量
作为预测变量(X
),英里/加仑
作为响应变量(Y
).
X =[马力,重量];Y = mpg;
训练一个默认的SVM回归模型。
Mdl = fitrsvm(X,Y)
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [75x1 double] Bias: 43.2943 KernelParameters: [1x1 struct] NumObservations: 93 BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] Is万博1manbetxSupportVector: [93x1 logical] Solver: 'SMO'属性,方法
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万博1manbetxSupportVector: [93x1 logical] Solver: 'SMO'属性,方法
检查模型是否收敛。
MdlStd.ConvergenceInfo.Converged
ans =逻辑1
1
表明模型确实收敛。
计算新模型的再替换(样本内)均方误差。
lStd = resubLoss(MdlStd)
lStd = 17.0256
使用UCI机器学万博1manbetx习库中的鲍鱼数据训练支持向量机回归模型。
下载数据并将其保存在当前文件夹中“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”;“戒指”};table = readtable(“abalone.csv”,“文件类型”,“文本”,“ReadVariableNames”、假);table . properties . variablenames = varnames;
样本数据包含4177个观测值。所有预测变量都是连续的,除了性
,它是一个具有可能值的分类变量“米”
(男性)“F”
(女性),和“我”
(婴儿)。目标是预测存储在环
),并通过物理测量确定鲍鱼的年龄。
训练支持向量机回归模型,使用高斯核函数与自动核尺度。标准化数据。
rng默认的%为了重现性Mdl = fitrsvm(表1,“戒指”,“KernelFunction”,“高斯”,“KernelScale”,“汽车”,…“标准化”,真正的)
Mdl = RegressionSVM PredictorNames: {1×8 cell} ResponseName: 'Rings' CategoricalPredictors: 1 ResponseTransform: 'none' Alpha: [3635×1 double] Bias: 10.8144 KernelParameters: [1×1 struct] Mu: [1×10 double] Sigma: [1×10 double] NumObservations: 4177 BoxConstraints: [4177×1 double] ConvergenceInfo: [1×1 struct] Is万博1manbetxSupportVector: [4177×1 logical] Solver: 'SMO'
命令窗口显示了这一点Mdl
是受过训练的RegressionSVM
建模并显示属性列表。
的属性Mdl
使用点符号。例如,检查以确认模型是否收敛,以及它完成了多少次迭代。
conv = Mdl. convergenceinfo . convergenceiter = Mdl。NumIterations
Conv =逻辑1 iter = 2759
返回的结果表明,该模型经过2759次迭代后收敛。
加载carsmall
数据集。
负载carsmallrng“默认”%为了重现性
指定马力
和重量
作为预测变量(X
),英里/加仑
作为响应变量(Y
).
X =[马力重量];Y = mpg;
采用5次交叉验证对两个SVM回归模型进行交叉验证。对于这两个模型,指定以标准化预测器。对于其中一个模型,指定使用默认的线性核进行训练,对于另一个模型使用高斯核进行训练。
MdlLin = fitrsvm(X,Y,“标准化”,真的,“KFold”5)
MdlLin = classrege .learning. Partition . 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 = classregg .learning. Partition . 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
和MdlGau
是RegressionPartitionedSVM
旨在模型。的训练有素的
属性为5 × 1的单元格数组CompactRegressionSVM
模型。单元中的模型将训练结果存储在4倍的观察值上,并留下1倍的观察值。
比较模型的泛化误差。在这种情况下,泛化误差是样本外均方误差。
mseLin = kfoldLoss(mseLin)
mseLin = 17.4417
mseGau = kfoldLoss(MdlGau)
mseGau = 16.7397
使用高斯核的支持向量机回归模型优于使用线性核的支持向量机回归模型。
创建一个适合进行预测的模型,方法是将整个数据集传递给fitrsvm
,并指定产生性能更好的模型的所有名称-值对参数。但是,不要指定任何交叉验证选项。
MdlGau = fitrsvm(X,Y,“标准化”,真的,“KernelFunction”,“高斯”);
要预测一组汽车的MPG,请通过Mdl
还有一张表,里面记录了赛车的马力和重量预测
.
这个例子展示了如何使用fitrsvm
.该示例使用carsmall
数据。
加载carsmall
数据集。
负载carsmall
指定马力
和重量
作为预测变量(X
),英里/加仑
作为响应变量(Y
).
X =[马力重量];Y = mpg;
通过使用自动超参数优化,找到最小化五倍交叉验证损失的超参数。
为了再现性,设置随机种子并使用“expected-improvement-plus”
采集功能。
rng默认的Mdl = fitrsvm(X,Y,“OptimizeHyperparameters”,“汽车”,…“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”,…“expected-improvement-plus”))
|====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | BoxConstraint | KernelScale |ε| | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | | |====================================================================================================================| | 最好1 | | 6.1124 | 10.173 | 6.1124 | 6.1124 | 0.35664 | 0.043031 | 0.30396 |
| 2 |最佳| 2.9114 | 0.085431 | 2.9114 | 3.088 | 70.67 | 710.65 | 1.6369 |
| |接收| 4.1884 | 0.055579 | 2.9114 | 3.078 | 14.367 | 0.0059144 | 442.64 |
| |接收| 4.159 | 0.047438 | 2.9114 | 3.0457 | 0.0030879 | 715.31 | 2.6045 |
| |最佳| 2.9044 | 0.17255 | 2.9044 | 2.9042 | 906.95 | 761.46 | 1.3274 |
| |最佳| 2.8666 | 0.50424 | 2.8666 | 2.8668 | 997.3 | 317.41 | 3.7696 |
| |接收| 4.1881 | 0.04287 | 2.8666 | 2.8669 | 759.56 | 987.74 | 15.074 |
| |接收| 2.8992 | 2.4538 | 2.8666 | 2.8669 | 819.07 | 152.11 | 1.5192 |
| |接收| 2.8916 | 0.14372 | 2.8666 | 2.8672 | 921.52 | 627.48 | 2.3029 |
| 10 |接收| 2.9001 | 0.28839 | 2.8666 | 2.8676 | 382.91 | 343.04 | 1.5448 |
| 11 |接收| 3.6573 | 9.616 | 2.8666 | 2.8784 | 945.1 | 8.885 | 3.9207 |
| 12 |接收| 2.9381 | 0.10258 | 2.8666 | 2.871 | 935.49 | 979.29 | 0.1384 |
| 13 |接收| 2.9341 | 0.043204 | 2.8666 | 2.8719 | 1.992 | 999.49 | 0.21557 |
| 14 |接收| 2.9227 | 0.044301 | 2.8666 | 2.8742 | 2.351 | 977.85 | 0.026124 |
| 15 |接收| 2.9483 | 0.12695 | 2.8666 | 2.8751 | 826.92 | 713.57 | 0.0096305 |
| 16 |接收| 2.9502 | 1.1304 | 2.8666 | 2.8813 | 345.64 | 129.6 | 0.027832 |
| 17 |接收| 2.9329 | 0.081387 | 2.8666 | 2.8799 | 836.96 | 970.73 | 0.034398 |
| 18 |接收| 2.9177 | 0.04481 | 2.8666 | 2.8771 | 0.10167 | 129.91 | 0.0092675 |
| 19 |接收| 2.95 | 2.4018 | 2.8666 | 2.8749 | 199.85 | 68.93 | 0.0092982 |
|0 |接收| 4.1964 | 0.043585 | 2.8666 | 2.8685 | 0.0012054 | 940.94 | 0.0097673 |
|====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | BoxConstraint | KernelScale |ε| | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | | |====================================================================================================================| | 21日|接受| 2.905 | 0.051636 | 2.8666 | 2.8675 | 5.9475 | 199.82 | 0.013585 |
| 22 |接收| 2.9329 | 0.078409 | 2.8666 | 2.8747 | 0.33221 | 21.509 | 0.0094248 |
| 23 |接收| 2.9017 | 0.061248 | 2.8666 | 2.8689 | 13.341 | 554.39 | 0.069216 |
| 24 |接收| 2.9067 | 0.046904 | 2.8666 | 2.8694 | 0.21467 | 73.415 | 0.028231 |
| 25 |接收| 2.9046 | 0.070385 | 2.8666 | 2.8731 | 0.68546 | 61.287 | 0.0099165 |
| 26 |接收| 2.9138 | 0.044185 | 2.8666 | 2.8676 | 0.0012185 | 8.8743 | 0.0093263 |
| 27 |接收| 2.9193 | 0.045608 | 2.8666 | 2.8731 | 0.0099434 | 30.484 | 0.0093546 |
| 28 |接收| 8.5384 | 9.9821 | 2.8666 | 2.8683 | 992.36 | 1.4043 | 0.0093129 |
| 29 |接收| 3.2254 | 0.043063 | 2.8666 | 2.8682 | 0.0010092 | 16.917 | 7.3665 |
| 30 |接收| 4.1884 | 0.042358 | 2.8666 | 2.8683 | 983.95 | 42.654 | 287.19 |
__________________________________________________________ 优化完成。达到30分的评价。总函数计算:30总运行时间:67.1005秒。总目标函数评价时间:38.0678最佳观测可行点:BoxConstraint KernelScale Epsilon _____________ ___________ _______ 997.3 317.41 3.7696观察目标函数值= 2.8666估计目标函数值= 2.8683函数评价时间= 0.50424估计最佳可行点(根据模型):BoxConstraint KernelScale Epsilon _____________ ___________ _______ 997.3 317.41 3.7696估计目标函数值= 2.8683估计函数评估时间= 0.44423
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [35×1 double] Bias: 48.8155 KernelParameters: [1×1 struct] NumObservations: 93 HyperparameterOptimizationResults: [1×1贝叶斯优化]BoxConstraints: [93×1 double] ConvergenceInfo: [1×1 struct] IsSupportVector: [9万博1manbetx3×1 logical] Solver: 'SMO'属性,方法
搜索到的优化BoxConstraint
,KernelScale
,ε
.输出是具有最小估计交叉验证损失的回归。
资源描述
- - - - - -预测数据用于训练模型的样本数据,指定为表。每行资源描述
对应一个观测值,每一列对应一个预测变量。可选地,资源描述
可以包含一个用于响应变量的附加列。除了字符向量的单元格数组之外,不允许使用多列变量和单元格数组。
如果资源描述
包含响应变量,并且您希望使用中的所有剩余变量资源描述
作为预测器,然后使用。指定响应变量ResponseVarName
.
如果资源描述
包含响应变量,并且您希望仅使用中剩余变量的子集资源描述
作为预测器,然后使用公式
.
如果资源描述
不包含响应变量,然后使用Y
.响应变量的长度和行数资源描述
必须是相等的。
如果有一行资源描述
或者是Y
至少包含一个南
,然后fitrsvm
在训练模型时,从两个参数中删除这些行和元素。
中出现的顺序指定预测器的名称资源描述
,使用PredictorNames
名称-值对参数。
数据类型:表格
公式
- - - - - -反应变量和预测变量子集的解释模型响应变量的解释模型和预测变量的子集,以字符向量或字符串标量的形式指定“Y ~ X1 + X2 + X3”
.在这个形式中,Y
表示响应变量,和X1
,X2
,X3
表示预测变量。
中的变量子集资源描述
作为训练模型的预测器,请使用公式。如果你指定一个公式,那么软件不使用任何变量资源描述
那就不要出现在公式
.
公式中的变量名必须是资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。
中的变量名进行验证资源描述
通过使用isvarname
函数。下面的代码返回逻辑1
(真正的
),以获取每个具有有效变量名的变量。
cellfun (@isvarname Tbl.Properties.VariableNames)
资源描述
无效,然后使用matlab.lang.makeValidName
函数。table . properties . variablenames = matlab.lang.makeValidName(table . properties . variablenames);
数据类型:字符
|字符串
Y
- - - - - -响应数据响应数据,指定为n- × 1数值向量。的长度Y
和的行数资源描述
或X
必须是相等的。
如果有一行资源描述
或X
的元素Y
,至少包含一个南
,然后fitrsvm
在训练模型时,从两个参数中删除这些行和元素。
要指定响应变量名,请使用ResponseName
名称-值对参数。
数据类型:单
|双
X
- - - - - -预测数据SVM回归模型拟合的预测数据,指定为n——- - - - - -p数字矩阵。n观察的次数是和吗p是预测变量的个数。
的长度Y
和的行数X
必须是相等的。
如果有一行X
或者是Y
至少包含一个南
,然后fitrsvm
从两个参数中删除这些行和元素。
中出现的顺序指定预测器的名称X
,使用PredictorNames
名称-值对参数。
数据类型:单
|双
指定可选的逗号分隔对名称,值
参数。名字
参数名称和价值
是对应的值。名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数,如Name1, Value1,…,的家
.
“KernelFunction”、“高斯”、“标准化”,没错,‘CrossVal’,‘上’
使用高斯核和标准化训练数据训练10倍交叉验证的SVM回归模型。
方法之外不能使用任何交叉验证名称-值对参数“OptimizeHyperparameters”
名称-值对参数。您可以修改的交叉验证“OptimizeHyperparameters”
只有使用“HyperparameterOptimizationOptions”
名称-值对参数。
“BoxConstraint”
- - - - - -箱约束的框约束,指定为由逗号分隔的对组成“BoxConstraint”
一个正的标量值。
的绝对值α
系数不能超过的值BoxConstraint
.
默认的BoxConstraint
的值“高斯”
或“rbf”
核函数为差(Y) / 1.349
,在那里差(Y)
四分位数范围是可变的吗Y
.对于所有其他内核,默认为BoxConstraint
取值为1。
例子:BoxConstraint 10
数据类型:单
|双
“KernelFunction”
- - - - - -核函数“线性”
(默认)|“高斯”
|“rbf”
|多项式的
|函数名核函数用于计算格拉姆矩阵,指定为由“KernelFunction”
和这个表中的一个值。
价值 | 描述 | 公式 |
---|---|---|
“高斯” 或“rbf” |
高斯或径向基函数(RBF)核 |
|
“线性” |
线性内核 |
|
多项式的 |
多项式的内核。使用“PolynomialOrder”, 指定一个多项式核的阶p . |
|
你可以设置自己的核函数,比如,内核
,通过设置“KernelFunction”、“内核”
.内核
必须有以下表格:
函数G = kernel(U,V)
U
是一个米——- - - - - -p矩阵。
V
是一个n——- - - - - -p矩阵。
G
是一个米——- - - - - -n的行格拉姆矩阵U
和V
.
和kernel.m
必须在MATLAB路径上。
避免为内核函数使用通用名称是一种良好的做法。例如,调用sigmoid内核函数“mysigmoid”
而不是“乙状结肠”
.
例子:“KernelFunction”、“高斯”
数据类型:字符
|字符串
“KernelScale”
- - - - - -核尺度参数1
(默认)|“汽车”
|积极的标量“PolynomialOrder”
- - - - - -多项式核函数阶3.
(默认)|正整数多项式核函数的顺序,指定为由逗号分隔的对组成“PolynomialOrder”
一个正整数。
如果你设置“PolynomialOrder”
和KernelFunction
不是多项式的
,然后软件抛出一个错误。
例子:“PolynomialOrder”,2
数据类型:双
|单
“KernelOffset”
- - - - - -核偏移参数内核偏移量参数,指定为由“KernelOffset”
一个非负的标量。
软件补充道KernelOffset
到格拉姆矩阵的每个元素。
默认值为:
0
如果解算器是SMO(即设置“规划求解”、“SMO的
)
0.1
如果求解器是ISDA(即设置“规划求解”、“ISDA的
)
例子:“KernelOffset”,0
数据类型:双
|单
‘ε’
- - - - - -不敏感带宽度的一半差(Y) / 13.49
(默认)|非负标量值不敏感带宽度的一半,指定为由逗号分隔的对组成‘ε’
一个非负的标量值。
默认的ε
值是差(Y) / 13.49
,这是使用响应变量的四分位数范围对标准偏差的十分之一的估计Y
.如果差(Y)
等于0,那么默认值呢ε
值为0.1。
例子:‘ε’,0.3
数据类型:单
|双
“α”
- - - - - -系数的初始估计alpha系数的初始估计,指定为由逗号分隔的对“α”
一个数值向量。的长度α
一定等于的行数X
.
的每个元素α
对应于中的观察值X
.
α
不能包含任何南
年代。
如果你指定α
以及任何一个交叉验证名称-值对参数(“CrossVal”
,“CVPartition”
,“坚持”
,“KFold”
,或“Leaveout”
),则软件返回一个错误。
如果Y
包含任何缺失值,然后删除的所有行Y
,X
,α
对应于缺失的值。即输入:
idx = ~isnan(Y);Y = Y(idx);X = X(idx,:);Alpha = Alpha (idx);
Y
,X
,α
分别作为响应、预测因子和初始alpha估计。
默认值为0(大小(Y, 1))
.
例子:“阿尔法”,0.1 *(大小(X, 1), 1)
数据类型:单
|双
“CacheSize”
- - - - - -缓存大小1000
(默认)|“最大”
|积极的标量缓存大小,指定为由逗号分隔的对“CacheSize”
和“最大”
或者一个正标量。
如果CacheSize
是“最大”
,那么软件就会保留足够的内存来存储整个文件n——- - - - - -n格拉姆矩阵.
如果CacheSize
是正标量,那么软件储备呢CacheSize
兆字节的内存用于训练模型。
例子:“CacheSize”、“最大”
数据类型:双
|单
|字符
|字符串
“ClipAlphas”
- - - - - -标记剪切alpha系数真正的
(默认)|假
标记用于剪辑alpha系数,指定为由逗号分隔的对“ClipAlphas”
,要么真正的
或假
.
假设观测值的系数j是αj以及观察的方框约束j是Cj,j= 1,…,n,在那里n为训练样本大小。
价值 | 描述 |
---|---|
真正的 |
在每次迭代中,如果αj是接近0还是接近Cj,则MATLAB集αj到0或到Cj,分别。 |
假 |
MATLAB在优化过程中不改变alpha系数。 |
的最终值α在α
的属性。
ClipAlphas
会影响SMO和ISDA的收敛。
例子:“ClipAlphas”,假的
数据类型:逻辑
“NumPrint”
- - - - - -优化诊断消息输出之间的迭代次数1000
(默认)|非负整数优化诊断消息输出之间的迭代次数,指定为由逗号分隔的对组成“NumPrint”
一个非负整数。
如果你指定“详细”,1
和NumPrint, NumPrint
,然后软件显示SMO和ISDA的所有优化诊断信息numprint
在命令窗口中迭代。
例子:“NumPrint”,500年
数据类型:双
|单
“OutlierFraction”
- - - - - -训练数据中异常值的期望比例训练数据中异常值的期望比例,用逗号分隔的对组成“OutlierFraction”
和区间[0,1)内的一个数值标量。fitrsvm
移除具有大梯度的观测值,确保fitrsvm
指定的观测值的百分比OutlierFraction
时间达到收敛。此名称-值对仅在以下情况下有效“规划求解”
是ISDA的
.
例子:“OutlierFraction”,0.1
数据类型:单
|双
“RemoveDuplicates”
- - - - - -用单个观测值替换重复观测值的标志假
(默认)|真正的
标记将训练数据中的重复观测值替换为单个观测值,指定为由逗号分隔的对“RemoveDuplicates”
和真正的
或假
.
如果RemoveDuplicates
是真正的
,然后fitrsvm
用相同值的单个观测值替换训练数据中的重复观测值。单个观测值的权重等于相应删除的重复项的权重之和(参见权重
).
如果您的数据集包含许多重复的观测值,则指定“RemoveDuplicates”,真的
可以大大减少收敛时间。
数据类型:逻辑
“详细”
- - - - - -冗长的水平0
(默认)|1
|2
详细级别,指定为由逗号分隔的对“详细”
和0
,1
,或2
.的价值详细的
控制软件在命令窗口中显示的优化信息的数量,并将信息保存为一个结构Mdl.ConvergenceInfo.History
.
此表总结了可用的冗长级别选项。
价值 | 描述 |
---|---|
0 |
软件不显示或保存收敛信息。 |
1 |
该软件显示诊断信息,并保存收敛标准numprint 迭代,numprint 是名称-值对参数的值吗“NumPrint” . |
2 |
该软件在每次迭代中显示诊断信息并保存收敛标准。 |
例子:“详细”,1
数据类型:双
|单
“CategoricalPredictors”
- - - - - -分类预测表“所有”
分类预测符列表,指定为由逗号分隔的对“CategoricalPredictors”
这张表中的一个值。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每个条目都是一个索引值,对应于预测器数据(X 或资源描述 ),其中包含一个分类变量。 |
逻辑向量 | 一个真正的 条目意味着预测器数据的对应列(X 或资源描述 )是一个分类变量。 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames .用额外的空格填充名称,使字符矩阵的每一行具有相同的长度。 |
字符向量的字符串数组或单元数组 | 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames . |
“所有” |
所有的预测都是绝对的。 |
默认情况下,如果预测器数据在表中(资源描述
),fitrsvm
如果变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元数组,则假定它是分类的。如果预测数据是一个矩阵(X
),fitrsvm
假设所有预测因子都是连续的。要将任何其他预测符标识为分类预测符,请使用“CategoricalPredictors”
名称-值对参数。
对于已确定的分类预测因子,fitrsvm
根据分类变量是无序的还是有序的,使用两种不同的模式创建虚拟变量。详细信息请参见自动创建虚拟变量.
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
“PredictorNames”
- - - - - -预测变量名称预测变量名,指定为由“PredictorNames”
和唯一名称的字符串数组或唯一字符向量的单元格数组。的功能“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}
数据类型:字符串
|细胞
“ResponseName”
- - - - - -响应变量名称“Y”
(默认)|特征向量|字符串标量响应变量名,指定为由“ResponseName”
以及字符向量或字符串标量。
如果你提供Y
,那么你可以使用“ResponseName”
为响应变量指定一个名称。
如果你提供ResponseVarName
或公式
,那么你就不能使用“ResponseName”
.
例子:“ResponseName”、“响应”
数据类型:字符
|字符串
“ResponseTransform”
- - - - - -响应转换“没有”
(默认)|函数处理响应转换,指定为由逗号分隔的对组成“ResponseTransform”
,要么“没有”
或者函数句柄。默认值为“没有”
,这意味着@ (y) y
,或者没有变换。对于MATLAB函数或您定义的函数,使用其函数句柄。函数句柄必须接受一个向量(原始响应值)并返回一个大小相同的向量(转换后的响应值)。
例子:假设您创建了一个函数句柄,通过使用对输入向量应用指数变换Myfunction = @(y)exp(y)
.然后,您可以将响应转换指定为myfunction ResponseTransform,
.
数据类型:字符
|字符串
|function_handle
“重量”
- - - - - -观察权重(大小(X, 1), 1)
(默认)|数值向量观察值权重,指定为由逗号分隔的对“重量”
一个数值向量。的大小权重
必须等于里面的行数X
.fitrsvm
的值进行规范化权重
和为1。
数据类型:单
|双
“CrossVal”
- - - - - -交叉验证标志“关闭”
(默认)|“上”
交叉验证标志,指定为包含的逗号分隔对“CrossVal”
,要么“上”
或“关闭”
.
如果你指定“上”
,然后软件实现10倍交叉验证。
要覆盖此交叉验证设置,请使用以下名称-值对参数之一:CVPartition
,坚持
,KFold
,或Leaveout
.要创建一个交叉验证的模型,一次只能使用一个交叉验证的名称-值对参数。
或者,您可以稍后使用crossval
方法。
例子:“CrossVal”,“上”
“CVPartition”
- - - - - -交叉验证分区[]
(默认)|cvpartition
分区对象交叉验证分区,指定为由逗号分隔的对组成“CVPartition”
和一个cvpartition
创建的分区对象cvpartition
.分区对象指定交叉验证的类型以及训练集和验证集的索引。
要创建一个交叉验证的模型,你可以只使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:假设您创建了一个随机分区,在500个观察值上进行5次交叉验证cvp = cvpartition(500,'KFold',5)
.然后,您可以通过使用来指定交叉验证模型“CVPartition”,本量利
.
“坚持”
- - - - - -保留验证的数据部分用于保留验证的数据的一部分,指定为由逗号分隔的对组成“坚持”
在(0,1)范围内的标量值。如果你指定‘坚持’,p
,然后软件完成以下步骤:
随机抽取和保留p * 100
%的数据作为验证数据,并使用其余数据训练模型。
将紧凑的训练过的模型存储在训练有素的
交叉验证模型的属性。
要创建一个交叉验证的模型,你可以只使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“坚持”,0.1
数据类型:双
|单
“KFold”
- - - - - -折叠数10
(默认)|大于1的正整数在交叉验证模型中使用的折叠数,指定为由逗号分隔的对组成“KFold”
一个大于1的正整数。如果你指定KFold, k
,然后软件完成以下步骤:
将数据随机划分为k
集。
对于每一个集合,保留一个集合作为验证数据,使用另一个集合训练模型k
- 1集。
存储k
在a的单元格中建立紧凑的训练模型k
- × 1的单元向量训练有素的
交叉验证模型的属性。
要创建一个交叉验证的模型,你可以只使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“KFold”,5
数据类型:单
|双
“Leaveout”
- - - - - -留一个交叉验证标志“关闭”
(默认)|“上”
留一个交叉验证标志,指定为由逗号分隔的对“Leaveout”
和“上”
或“关闭”
.如果你指定“Leaveout”,“上”
,然后,对于每一个n观察(n不包括缺失观测的观测数是否在NumObservations
属性),软件完成以下步骤:
保留观测值作为验证数据,使用另一个来训练模型n- 1次观察。
存储n紧凑,训练模型的细胞n- × 1的单元向量训练有素的
交叉验证模型的属性。
要创建一个交叉验证的模型,你可以只使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“Leaveout”,“上”
“DeltaGradientTolerance”
- - - - - -梯度差公差由SMO或ISDA获得的上下违规者之间的梯度差容差,指定为由逗号分隔的对“DeltaGradientTolerance”
一个非负的标量。
例子:“DeltaGradientTolerance”,1的军医
数据类型:单
|双
“GapTolerance”
- - - - - -可行性差容限1 e - 3
(默认)|负的标量可行性间隙公差由SMO或ISDA获得,指定为由逗号分隔的对组成“GapTolerance”
一个非负的标量。
如果GapTolerance
是0
,然后fitrsvm
不使用此参数检查收敛性。
例子:“GapTolerance”,1的军医
数据类型:单
|双
“IterationLimit”
- - - - - -最大数值优化迭代次数1 e6
(默认)|正整数数值优化迭代的最大次数,指定为由逗号分隔的对组成“IterationLimit”
一个正整数。
无论优化程序是否成功收敛,软件都会返回一个训练好的模型。Mdl。ConvergenceInfo
包含收敛信息。
例子:“IterationLimit”,1 e8
数据类型:双
|单
“KKTTolerance”
- - - - - -对违反KKT的容忍度对Karush-Kuhn-Tucker (KKT)违例的容忍度,指定为由逗号分隔的对组成“KKTTolerance”
一个非负的标量值。
此名称-值对仅在以下情况下适用“规划求解”
是SMO的
或ISDA的
.
如果KKTTolerance
是0
,然后fitrsvm
不使用此参数检查收敛性。
例子:“KKTTolerance”,1的军医
数据类型:单
|双
“ShrinkagePeriod”
- - - - - -活动集约简之间的迭代次数0
(默认)|非负整数活动集的约简之间的迭代次数,指定为由逗号分隔的对“ShrinkagePeriod”
一个非负整数。
如果你设置“ShrinkagePeriod”,0
,则软件不会收缩活动集。
例子:“ShrinkagePeriod”,1000年
数据类型:双
|单
“OptimizeHyperparameters”
- - - - - -需要优化的参数“没有”
(默认)|“汽车”
|“所有”
|符合条件的参数名称的字符串数组或单元格数组|向量的optimizableVariable
对象要优化的参数,指定为由逗号分隔的对“OptimizeHyperparameters”
以及以下其中之一:
“没有”
—不优化。
“汽车”
——使用{‘BoxConstraint’,‘KernelScale’,‘ε’}
.
“所有”
—优化所有符合条件的参数。
符合条件的参数名称的字符串数组或单元格数组。
向量的optimizableVariable
对象的输出hyperparameters
.
的交叉验证损失(错误)最小化fitrsvm
通过改变参数。控件来控制交叉验证类型和优化的其他方面HyperparameterOptimizationOptions
名称-值对。
“OptimizeHyperparameters”
值将覆盖使用其他名称-值对参数设置的任何值。例如,设置“OptimizeHyperparameters”
来“汽车”
导致“汽车”
值要应用。
的合格参数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
具有非默认值的对象。例如,
负载carsmall参数=超参数(“fitrsvm”(功率、重量),MPG);参数(1)。Range = [1e-4,1e6];
通过参数个数
的值OptimizeHyperparameters
.
默认情况下,在命令行中出现迭代显示,并根据优化中的超参数数量出现绘图。对于优化和绘图,目标函数为Log(1 +交叉验证损失)用于回归和误分类率用于分类。要控制迭代显示,请设置详细的
田野“HyperparameterOptimizationOptions”
名称-值对参数。要控制情节,设置ShowPlots
田野“HyperparameterOptimizationOptions”
名称-值对参数。
使用示例请参见优化SVM回归.
例子:“OptimizeHyperparameters”、“汽车”
“HyperparameterOptimizationOptions”
- - - - - -优化选项优化选项,指定为由。组成的逗号分隔对“HyperparameterOptimizationOptions”
还有一个结构。的效果OptimizeHyperparameters
名称-值对参数。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
获取函数的名称包括 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数评价的最大次数。 | 30. 为“bayesopt” 或“randomsearch” ,以及整个电网“gridsearch” |
MaxTime |
时间限制,指定为正实数。时间限制以秒为单位,由 |
正 |
NumGridDivisions |
为“gridsearch” 表示每个维度中值的个数。该值可以是表示每个维度的值的正整数向量,也可以是适用于所有维度的标量。对于分类变量,此字段将被忽略。 |
10 |
ShowPlots |
指示是否显示图形的逻辑值。如果真正的 ,该字段根据迭代次数绘制最佳目标函数值。如果有一个或两个优化参数,如果优化器 是“bayesopt” ,然后ShowPlots 并根据参数绘制了目标函数的模型。 |
真正的 |
SaveIntermediateResults |
时是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,此字段覆盖名为“BayesoptResults” 在每次迭代中。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
显示到命令行。
详细信息请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,这需要parallel Computing Toolbox™。由于并行时序的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见并行贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代时重新划分交叉验证的逻辑值。如果
|
假 |
请使用以下三个字段名中的一个。 | ||
CVPartition |
一个cvpartition 对象创建的cvpartition . |
“Kfold”,5 如果未指定任何交叉验证字段 |
坚持 |
范围内的标量(0,1) 表示保留分数。 |
|
Kfold |
大于1的整数。 |
例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)
数据类型:结构体
Mdl
-训练的SVM回归模型RegressionSVM
模型|RegressionPartitionedSVM
旨在模型训练后的SVM回归模型,返回为RegressionSVM
模型或RegressionPartitionedSVM
旨在模型。
如果您设置了任何名称-值对参数KFold
,坚持
,Leaveout
,CrossVal
,或CVPartition
,然后Mdl
是一个RegressionPartitionedSVM
旨在模型。否则,Mdl
是一个RegressionSVM
模型。
fitrsvm
万博1manbetx支持低到中等维度的数据集。对于高维数据集,使用fitrlinear
代替。
除非您的数据集很大,否则请始终尝试标准化预测器(参见标准化
).标准化使得预测者对测量他们的尺度不敏感。
方法进行交叉验证是一种很好的实践KFold
名称-值对参数。交叉验证结果决定了支持向量机模型的泛化程度。
支持向量的稀疏性是支持向万博1manbetx量机模型的理想特性。要减少支持向量的数量,请设置万博1manbetxBoxConstraint
名称-值对参数设置为较大的值。这个动作也增加了训练时间。
对于最佳训练时间,设置CacheSize
尽可能高的内存限制在您的计算机允许。
如果期望的支持向量比训练集中的观察值少得多,那么可万博1manbetx以通过使用名称-值对参数缩小活动集来显著加快收敛速度“ShrinkagePeriod”
.这是一个很好的实践“ShrinkagePeriod”,1000年
.
远离回归线的重复观测值不影响收敛。然而,在回归线附近出现的几个重复观测值会大大减缓收敛速度。为了加速收敛,指定“RemoveDuplicates”,真的
如果:
您的数据集包含许多重复的观测值。
您怀疑一些重复的观测值可能落在回归线附近。
然而,为了在训练过程中保持原始数据集,fitrsvm
必须临时存储单独的数据集:原始数据集和没有重复观测值的数据集。因此,如果您指定真正的
对于包含少量重复项的数据集,则fitrsvm
消耗的内存几乎是原始数据的两倍。
在训练模型之后,您可以生成预测新数据响应的C/ c++代码。生成C/ c++代码需要MATLAB编码器™.详细信息请参见代码生成简介.
有关线性和非线性支持向量机回归问题的数学公式和求解算法,请参见理解支持向量机回归万博1manbetx.
南
,<定义>
,空字符向量(”
),空字符串(”“
),< >失踪
值表示缺失的数据值。fitrsvm
删除与缺失响应对应的整行数据。当权重归一化时,fitrsvm
忽略与至少缺少一个预测因子的观测值相对应的任何权重。因此,观察盒约束可能不相等BoxConstraint
.
fitrsvm
删除权重为零的观测值。
如果你设置“标准化”,真的
和“重量”
,然后fitrsvm
使用相应的加权均值和加权标准差对预测因子进行标准化。也就是说,fitrsvm
标准化预测j(xj)使用
xjk是观察k(行)预测器j(列)。
如果你的预测数据包含分类变量,那么软件通常会对这些变量使用完全虚拟编码。该软件为每个分类变量的每个级别创建一个虚拟变量。
的PredictorNames
属性为每个原始预测器变量名称存储一个元素。例如,假设有三个预测因子,其中一个是具有三个级别的分类变量。然后PredictorNames
是字符向量的1 × 3单元数组,包含预测变量的原始名称。
的ExpandedPredictorNames
属性为每个预测变量(包括虚拟变量)存储一个元素。例如,假设有三个预测因子,其中一个是具有三个级别的分类变量。然后ExpandedPredictorNames
是一个1乘5的字符向量单元数组,包含预测变量和新的虚拟变量的名称。
类似地,β
属性为每个预测器(包括虚拟变量)存储一个beta系数。
的万博1manbetxSupportVectors
属性存储支持向量的预测值,包括虚拟变量。万博1manbetx例如,假设有米万博1manbetx支持向量和三个预测因子,其中一个是具有三个层次的分类变量。然后万博1manbetxSupportVectors
是一个米5矩阵。
的X
属性将训练数据存储为原始输入。它不包括虚拟变量。当输入是表格时,X
仅包含用作预测符的列。
对于表中指定的预测器,如果任何变量包含有序(序数)类别,则软件对这些变量使用序数编码。
对于具有的变量k有序的关卡,由软件创建k- 1虚拟变量。的j哑变量是1对于以下级别j,+ 1的水平j+ 1通过k.
中存储的虚拟变量的名称ExpandedPredictorNames
属性用该值指示第一层+ 1.软件商店k- 1虚拟变量的额外预测器名称,包括级别2、3、…k.
所有求解器实现l软边际最小化。
让p
是你期望的训练数据中异常值的比例。如果你设置OutlierFraction, p
,然后软件实现强劲的学习.换句话说,软件试图删除100个p
优化算法收敛时观测值的%。去除的观测值对应于较大的梯度。
bbb Clark, D. Z. Schreter, A. Adams。纵向和反向传播的定量比较,提交给1996年澳大利亚神经网络会议。
[2] Fan, r - e。,林志信。c - j。林。使用二阶信息选择工作集用于训练支持向量机。万博1manbetx机器学习研究杂志, 2005年第6卷,1889-1918页。
[3]凯曼V., T. -M.;黄先生和沃格特先生。从大数据集训练核机器的迭代单数据算法:理论与性能。在万博1manbetx支持向量机:理论与应用.王立波编辑,255-274。柏林:斯普林格出版社,2005。
李奇曼,M。UCI机器学习存储库[http://archive.ics.uci.edu/ml]。加州尔湾:加州大学信息与计算机科学学院。
纳什,w.j., T. L.塞勒斯,S. R.塔尔博特,A. J.考索恩和W. B.福特。塔斯马尼亚州鲍鱼种群生物学研究。北海岸和巴斯海峡岛屿的黑唇鲍鱼(H. rubra)海洋渔业司,技术报告第48号,1994年。
哇,S。级联相关的扩展和基准测试,博士论文,塔斯马尼亚大学计算机科学系,1995。
要并行运行,请设置“UseParallel”
选项真正的
.
执行并行超参数优化,请使用“HyperparameterOptions”、结构(UseParallel,真的)
此函数调用中的名称-值对参数。
有关并行超参数优化的更多信息,请参见并行贝叶斯优化.
有关并行计算的更多一般信息,请参见运行MATLAB函数与自动并行支持万博1manbetx(并行计算工具箱)。
您点击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
你亦可选择下列网址:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。