fitrsvm
拟合支持向量金宝app机回归模型
语法
描述
fitrsvm
训练或交叉验证支持向量机(SVM)回归模型上的低通过中等金宝app维预测数据集。fitrsvm
金宝app支持使用内核函数映射预测器数据,并支持SMO, ISDA或l1目标函数最小化的二次规划软边际最小化。
要在高维数据集(即包含许多预测变量的数据集)上训练线性SVM回归模型,请使用fitrlinear
代替。
要训练用于二元分类的SVM模型,请参见fitcsvm
对于低贯穿中维预测器数据集,或fitclinear
对于高维数据集。
返回一个完整的、经过训练的支持向量机(SVM)回金宝app归模型Mdl
= fitrsvm (资源描述
,ResponseVarName
)Mdl
使用表中的预测器值进行训练资源描述
响应值资源描述。ResponseVarName
.
例子
训练线性支持向量机回归模型金宝app
使用存储在矩阵中金宝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.3958 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
训练支持向量金宝app机回归模型
使用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次迭代后收敛。
交叉验证SVM回归模型
加载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
而且MdlGau
是RegressionPartitionedSVM
旨在模型。的训练有素的
属性的5 × 1单元格数组CompactRegressionSVM
模型。单元中的模型存储了4次观察的训练结果,并保留了1次观察。
比较模型的泛化误差。在这种情况下,泛化误差是样本外均方误差。
mseLin = kfoldLoss(MdlLin)
mseLin = 17.4417
mseGau = kfoldLoss(MdlGau)
mseGau = 16.7355
使用高斯核的SVM回归模型比使用线性核的SVM回归模型性能更好。
通过将整个数据集传递给fitrsvm
,并指定产生性能更好的模型的所有名称-值对参数。但是,不要指定任何交叉验证选项。
MdlGau = fitrsvm(X,Y,“标准化”,真的,“KernelFunction”,“高斯”);
要预测一组汽车的MPG,通过Mdl
还有一张表,上面有赛车的马力和重量预测
.
优化SVM回归
这个例子展示了如何使用自动优化超参数fitrsvm
.该示例使用carsmall
数据。
加载carsmall
数据集。
负载carsmall
指定马力
而且重量
作为预测变量(X
),英里/加仑
作为响应变量(Y
).
X =[马力重量];Y = mpg;
通过使用自动超参数优化,找到最小化5倍交叉验证损失的超参数。
为了重现性,设置随机种子并使用“expected-improvement-plus”
采集功能。
rng默认的Mdl = fitrsvm(X,Y,“OptimizeHyperparameters”,“汽车”,...“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”,...“expected-improvement-plus”))
|====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | BoxConstraint | KernelScale |ε| | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | | |====================================================================================================================| | 最好1 | | 6.8077 | 8.9946 | 6.8077 | 6.8077 | 0.35664 | 0.043031 | 0.30396 | | 2 |最好| 2.9108 | 0.079288 | 2.9108 | 3.1259 | 70.67 | 710.65 | 1.6369 | | 3 |接受| 4.1884 | 0.061383 | 2.9108 | 3.1211 | 14.367 | 0.0059144 | 442.64||4 | Accept | 4.159 | 0.072431 | 2.9108 | 3.0773 | 0.0030879 | 715.31 | 2.6045 | | 5 | Best | 2.902 | 0.19692 | 2.902 | 2.9015 | 969.07 | 703.1 | 0.88614 | | 6 | Accept | 4.1884 | 0.063713 | 2.902 | 2.9017 | 993.93 | 919.26 | 22.16 | | 7 | Accept | 2.9307 | 0.09127 | 2.902 | 2.9018 | 219.88 | 613.28 | 0.015526 | | 8 | Accept | 2.9537 | 0.38273 | 2.902 | 2.9017 | 905.17 | 395.74 | 0.021914 | | 9 | Accept | 2.9073 | 0.13752 | 2.902 | 2.9017 | 24.242 | 647.2 | 0.17855 | | 10 | Accept | 2.9044 | 0.2345 | 2.902 | 2.9017 | 117.27 | 173.98 | 0.73387 | | 11 | Accept | 2.9035 | 0.084693 | 2.902 | 2.9016 | 1.3516 | 131.19 | 0.0093404 | | 12 | Accept | 4.0917 | 0.10013 | 2.902 | 2.902 | 0.012201 | 962.58 | 0.0092777 | | 13 | Accept | 2.9525 | 0.88983 | 2.902 | 2.902 | 77.38 | 65.508 | 0.0093299 | | 14 | Accept | 2.9352 | 0.10519 | 2.902 | 2.9019 | 21.591 | 166.43 | 0.035214 | | 15 | Accept | 2.9341 | 0.12667 | 2.902 | 2.9019 | 45.286 | 207.56 | 0.009379 | | 16 | Accept | 2.9104 | 0.072284 | 2.902 | 2.9018 | 0.064315 | 23.313 | 0.0093341 | | 17 | Accept | 2.9056 | 0.11728 | 2.902 | 2.9018 | 0.33909 | 40.311 | 0.053394 | | 18 | Accept | 2.9335 | 0.22476 | 2.902 | 2.8999 | 0.9904 | 41.169 | 0.0099688 | | 19 | Accept | 2.9929 | 0.1796 | 2.902 | 2.8995 | 0.0010811 | 33.401 | 0.017694 | | 20 | Accept | 4.1884 | 0.081198 | 2.902 | 2.9 | 0.0014524 | 1.9514 | 856.49 | |====================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | Epsilon | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | | |====================================================================================================================| | 21 | Accept | 2.904 | 0.11233 | 2.902 | 2.8831 | 88.487 | 405.92 | 0.44372 | | 22 | Accept | 2.9107 | 0.096647 | 2.902 | 2.884 | 344.34 | 992 | 0.28418 | | 23 | Accept | 2.904 | 0.1051 | 2.902 | 2.8841 | 0.92028 | 70.985 | 0.52233 | | 24 | Best | 2.859 | 0.93928 | 2.859 | 2.8606 | 18.319 | 27.763 | 3.008 | | 25 | Accept | 2.9177 | 3.1086 | 2.859 | 2.8612 | 39.154 | 24.119 | 0.67121 | | 26 | Accept | 2.9059 | 0.14666 | 2.859 | 2.8609 | 0.067541 | 15.019 | 1.192 | | 27 | Accept | 4.1884 | 0.093034 | 2.859 | 2.8622 | 987.04 | 3.1666 | 70.752 | | 28 | Accept | 2.8936 | 0.17454 | 2.859 | 2.8744 | 2.2395 | 36.089 | 1.6775 | | 29 | Accept | 2.9156 | 0.067328 | 2.859 | 2.875 | 0.0027368 | 12.221 | 0.10637 | | 30 | Accept | 2.9105 | 0.074655 | 2.859 | 2.8757 | 0.05895 | 21.326 | 0.2563 |
__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:32.4033秒总目标函数评估时间:17.2141最佳观测可行点:BoxConstraint KernelScale Epsilon _____________ ___________ _______ 18.319 27.763 3.008观测目标函数值= 2.859估计目标函数值= 2.8727函数评估时间= 0.93928最佳估计可行点(根据模型):BoxConstraint KernelScale Epsilon _____________ ___________ _______ 2.2395 36.089 1.6775估计目标函数值= 2.8757估计函数评估时间= 0.20807
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [62x1 double] Bias: 45.4806 KernelParameters: [1x1 struct] NumObservations: 93 HyperparameterOptimizationResults: [1x1 bayesioptimization] BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] IsSu金宝apppportVector: [93x1 logical] Solver: 'SMO' Properties, Methods
优化搜索BoxConstraint
,KernelScale
,ε
.输出是估计交叉验证损失最小的回归。
输入参数
资源描述
- - - - - -预测数据
表格
用于训练模型的示例数据,指定为表。每行资源描述
对应一个观测值,每一列对应一个预测变量。可选地,资源描述
可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。
如果资源描述
包含响应变量,您希望在中使用所有剩余变量资源描述
作为预测器,然后使用指定响应变量ResponseVarName
.
如果资源描述
包含响应变量,并且您希望仅在中使用其余变量的子集资源描述
作为预测器,然后指定一个公式使用公式
.
如果资源描述
不包含响应变量,则指定响应变量使用Y
.响应变量的长度和的行数资源描述
必须是相等的。
如果一排资源描述
或者一个元素Y
至少包含一个南
,然后fitrsvm
在训练模型时从两个参数中删除这些行和元素。
中出现的顺序指定预测符的名称资源描述
,使用PredictorNames
名称-值对参数。
数据类型:表格
公式
- - - - - -响应变量的解释模型和预测变量的子集
特征向量|字符串标量
响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”
.在这种形式下,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须同时为资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。中的变量名可以验证资源描述
通过使用isvarname
函数。变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:字符
|字符串
Y
- - - - - -响应数据
数值向量
响应数据,指定为n-by-1数值向量。的长度Y
的行数资源描述
或X
必须是相等的。
如果一排资源描述
或X
的元素Y
,至少包含一个南
,然后fitrsvm
在训练模型时从两个参数中删除这些行和元素。
要指定响应变量名,请使用ResponseName
名称-值对参数。
数据类型:单
|双
X
- - - - - -预测数据
数字矩阵
支持向量机回归模型适合的预测器数据,指定为n——- - - - - -p数字矩阵。n观察的次数和p是预测变量的数量。
的长度Y
的行数X
必须是相等的。
如果一排X
或者一个元素Y
至少包含一个南
,然后fitrsvm
从两个参数中删除这些行和元素。
中出现的顺序指定预测符的名称X
,使用PredictorNames
名称-值对参数。
数据类型:单
|双
名称-值参数
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“KernelFunction”、“高斯”、“标准化”,没错,‘CrossVal’,‘上’
使用高斯核和标准化训练数据训练10倍交叉验证的SVM回归模型。
请注意
方法时,不能使用任何交叉验证名称-值参数“OptimizeHyperparameters”
名称-值参数。您可以修改交叉验证“OptimizeHyperparameters”
只有使用“HyperparameterOptimizationOptions”
名称-值参数。
BoxConstraint
- - - - - -箱约束
正标量值
方框约束的alpha系数,指定为逗号分隔的对,由“BoxConstraint”
一个正标量。
的绝对值α
系数不能超过的值BoxConstraint
.
默认的BoxConstraint
的值。“高斯”
或“rbf”
核函数为差(Y) / 1.349
,在那里差(Y)
响应的四分位范围是可变的吗Y
.对于所有其他内核,默认为BoxConstraint
取值为1。
例子:BoxConstraint 10
数据类型:单
|双
KernelFunction
- - - - - -核函数
“线性”
(默认)|“高斯”
|“rbf”
|多项式的
|函数名
核函数用于计算格拉姆矩阵,指定为逗号分隔的对,由“KernelFunction”
和这个表中的一个值。
价值 | 描述 | 公式 |
---|---|---|
“高斯” 或“rbf” |
高斯或径向基函数(RBF)核 |
|
“线性” |
线性内核 |
|
多项式的 |
多项式的内核。使用“PolynomialOrder”, 指定一个多项式的阶核问 . |
|
你可以设置你自己的核函数,例如,内核
,通过设置“KernelFunction”、“内核”
.内核
必须有以下表格:
函数G =核(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集αjTo 0或ToCj,分别。 |
假 |
MATLAB在优化过程中不改变alpha系数。 |
的最终值由MATLAB存储α在α
训练后的SVM模型对象的属性。
ClipAlphas
会影响SMO和ISDA的收敛性。
例子:“ClipAlphas”,假的
数据类型:逻辑
NumPrint
- - - - - -优化诊断消息输出之间的迭代次数
1000
(默认)|非负整数
优化诊断消息输出之间的迭代次数,指定为由逗号分隔的对组成“NumPrint”
和一个非负整数。
如果你指定“详细”,1
而且NumPrint, NumPrint
,软件显示SMO和ISDA的所有优化诊断信息numprint
在命令窗口中的迭代。
例子:“NumPrint”,500年
数据类型:双
|单
OutlierFraction
- - - - - -训练数据中异常值的期望比例
0(默认)|区间[0,1)中的数值标量
训练数据中异常值的期望比例,指定为逗号分隔的对,由“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
- - - - - -分类预测器列表
正整数向量|逻辑向量|字符矩阵|字符串数组|字符向量的单元格数组|“所有”
类别预测符列表,指定为此表中的值之一。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间 如果 |
逻辑向量 | 一个 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames .用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。 |
字符向量的字符串数组或单元格数组 | 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames . |
“所有” |
所有预测因素都是绝对的。 |
默认情况下,如果预测器数据在表(资源描述
),fitrsvm
如果一个变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定该变量是分类的。如果预测器数据为矩阵(X
),fitrsvm
假设所有预测因子都是连续的。要将任何其他预测符标识为类别预测符,请使用“CategoricalPredictors”
名称-值参数。
对于已识别的分类预测因子,fitrsvm
使用两种不同的方案创建虚拟变量,具体取决于分类变量是无序的还是有序的。对于一个无序分类变量,fitrsvm
为分类变量的每一层创建一个虚拟变量。对于有序分类变量,fitrsvm
创建的虚拟变量比类别数少一个。详细信息请参见自动创建虚拟变量.
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
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”
(默认)|特征向量|字符串标量
响应变量名,指定为字符向量或字符串标量。
如果你提供
Y
,那么你就可以使用了ResponseName
为响应变量指定名称。如果你提供
ResponseVarName
或公式
,那么你就不能用了ResponseName
.
例子:“ResponseName”、“反应”
数据类型:字符
|字符串
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
,坚持
,KFold
,或Leaveout
.
例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用cvp = cvpartition(500,'KFold',5)
.然后,您可以通过使用指定交叉验证的模型“CVPartition”,本量利
.
坚持
- - - - - -顽固性验证的数据比例
范围(0,1)中的标量值
用于拒绝验证的数据的百分比,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p
,然后软件完成以下步骤:
随机选择并保留
p * 100
%的数据作为验证数据,并使用其余数据训练模型。将紧凑的、训练过的模型存储在
训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“坚持”,0.1
数据类型:双
|单
KFold
- - - - - -折叠数
10
(默认)|大于1的正整数值
交叉验证模型中使用的折叠数,指定为大于1的正整数值。如果你指定KFold, k
,然后软件完成以下步骤:
将数据随机划分为
k
集。对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型
k
- 1集。存储
k
紧凑,训练有素的模型k
的-by-1单元格向量训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“KFold”,5
数据类型:单
|双
Leaveout
- - - - - -省略一个交叉验证标志
“关闭”
(默认)|“上”
省略一个交叉验证标志,指定为“上”
或“关闭”
.如果你指定“Leaveout”,“上”
,然后对每个的n观察(n(不包括遗漏的观测数据)的观测数据数目是否已列明NumObservations
属性的模型),软件完成这些步骤:
保留一个观察数据作为验证数据,并使用另一个数据训练模型n- 1次观察。
存储n紧凑,训练有素的模型在一个n的-by-1单元格向量
训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“Leaveout”,“上”
DeltaGradientTolerance
- - - - - -梯度差公差
0(默认)|负的标量
由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的行为
0|非负标量值
对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
方法所对应的超参数“汽车”
选项并忽略超参数的任何指定值。
符合条件的参数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”、“汽车”
HyperparameterOptimizationOptions
- - - - - -优化选项
结构
用于优化的选项,指定为结构。的效果OptimizeHyperparameters
名称-值参数。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
名称包括的获取函数 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数求值的最大个数。 | 30. 为“bayesopt” 而且“randomsearch” ,而整个电网为“gridsearch” |
MaxTime |
时间限制,指定为正实标量。时间限制以秒为单位,由 |
正 |
NumGridDivisions |
为“gridsearch” ,表示每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段将被忽略。 |
10 |
ShowPlots |
指示是否显示图的逻辑值。如果真正的 ,该字段根据迭代次数绘制最佳观测目标函数值。如果使用贝叶斯优化(优化器 是“bayesopt” ),则该字段也绘制出目标函数的最佳估计值。最佳观测目标函数值和最佳估计目标函数值对应于BestSoFar(观察) 而且BestSoFar (estim)。 列的迭代分别显示。您可以在属性中找到这些值ObjectiveMinimumTrace 而且EstimatedObjectiveMinimumTrace 的Mdl。HyperparameterOptimizationResults .如果问题包含一个或两个用于贝叶斯优化的优化参数,则ShowPlots 还绘制了目标函数对参数的模型。 |
真正的 |
SaveIntermediateResults |
时是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,此字段将覆盖名为“BayesoptResults” 在每次迭代中。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
在命令行显示:
详细信息请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见并行贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代中重新划分交叉验证的逻辑值。如果这个字段是 设置 |
假 |
使用以下三个选项中的一个即可。 | ||
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
金宝app支持低通中等维数据集。对于高维数据集,使用fitrlinear
代替。
提示
除非您的数据集很大,否则总是尝试标准化预测器(参见
标准化
).标准化使得预测因子对测量它们的尺度不敏感。方法进行交叉验证是一种良好的实践
KFold
名称-值对参数。交叉验证结果决定了SVM模型的泛化效果。支持向量的稀疏性是支持向金宝app量机模型的理想特性。若要减少支持向量的数量,请设置金宝app
BoxConstraint
名称-值对参数设置为大值。这个动作也增加了训练时间。最佳训练时间,请设置
CacheSize
尽可能高的内存限制在您的计算机上允许。如果你期望的支持向量比训练集中的观察数据要少得多,金宝app那么你可以通过使用名值对参数缩小活动集来显著地加快收敛速度
“ShrinkagePeriod”
.这是一个很好的实践“ShrinkagePeriod”,1000年
.远离回归线的重复观测不影响收敛。然而,在回归线附近发生的少数重复观测结果会大大减慢收敛速度。要加快收敛速度,请指定
“RemoveDuplicates”,真的
如果:你的数据集包含许多重复的观察结果。
您怀疑一些重复的观察结果可能落在回归线附近。
然而,为了在训练过程中保持原始数据集,
fitrsvm
必须临时存储单独的数据集:原始的和没有重复观测的数据集。因此,如果指定真正的
对于包含很少重复的数据集,那么fitrsvm
消耗的内存接近原始数据的两倍。在训练模型之后,您可以生成预测新数据响应的C/ c++代码。生成C/ c++代码需要MATLAB编码器™.详细信息请参见代码生成简介.
算法
关于线性和非线性SVM回归问题的数学公式和求解算法,请参见理解支持向量机回归金宝app.
南
,<定义>
,空字符向量(”
,空字符串(""
),< >失踪
值表示缺失的数据值。fitrsvm
删除与缺失响应对应的整行数据。当权重归一化时,fitrsvm
忽略与至少一个缺失预测器的观测结果对应的任何权重。因此,观察框的约束可能不相等BoxConstraint
.fitrsvm
删除权重为零的观测值。如果你设置
“标准化”,真的
而且“重量”
,然后fitrsvm
使用相应的加权均值和加权标准差对预测因子进行标准化。也就是说,fitrsvm
标准化预测j(xj)使用xjk是观察k(行)预测器j(列)。
如果你的预测数据包含分类变量,那么软件通常对这些变量使用全虚拟编码。该软件为每个分类变量的每个级别创建一个虚拟变量。
的
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年。
扩展功能
自动平行支撑金宝app
通过使用并行计算工具箱™自动并行运行计算来加速代码。
要执行并行超参数优化,请使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
类调用中的名称-值参数fitrsvm
函数。
有关并行超参数优化的更多信息,请参见并行贝叶斯优化.
有关并行计算的一般信息,请参见运行MATLAB函数与自动并行支持金宝app(并行计算工具箱).
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。