fitrkernel
采用随机特征展开方法拟合高斯核回归模型
语法
描述
fitrkernel
训练或交叉验证非线性回归高斯核回归模型。fitrkernel
对于具有大型训练集的大数据应用程序更实用,但也可以应用于适合内存的较小数据集。
fitrkernel
将低维空间中的数据映射到高维空间中,然后通过最小化正则化目标函数在高维空间中拟合线性模型。在高维空间中获得线性模型等价于在低维空间中对模型应用高斯核。现有的线性回归模型包括正则化支持向量机(SVM)和最小二乘回归模型。金宝app
要在内存数据上训练非线性SVM回归模型,请参见fitrsvm
.
返回一个内核回归模型Mdl
= fitrkernel (资源描述
,ResponseVarName
)Mdl
使用表中包含的预测变量进行训练资源描述
响应值资源描述。ResponseVarName
.
[
类优化超参数时,还返回超参数优化结果Mdl
,FitInfo
,HyperparameterOptimizationResults
= fitrkernel(___)“OptimizeHyperparameters”
名称-值对参数。
例子
训练高斯核回归模型
利用支持向量机训练高数组的核回归模型。
在高数组上执行计算时,MATLAB®使用并行池(如果有并行计算工具箱™,则默认为并行池)或本地MATLAB会话。若要在具有并行计算工具箱时使用本地MATLAB会话运行示例,请使用mapreduce
函数。
mapreduce (0)
创建一个使用数据引用文件夹位置的数据存储。数据可以包含在单个文件、文件集合或整个文件夹中。治疗“NA”
值作为丢失的数据,以便数据存储
将它们替换为南
值。选择要使用的变量子集。在数据存储之上创建一个高表。
Varnames = {“ArrTime”,“DepTime”,“ActualElapsedTime”};数据存储(“airlinesmall.csv”,“TreatAsMissing”,“NA”,...“SelectedVariableNames”, varnames);T =高(ds);
指定DepTime
而且ArrTime
作为预测变量(X
),ActualElapsedTime
作为响应变量(Y
).选择相应的观察结果ArrTime
晚于DepTime
.
day = t.ArrTime>t.DepTime;Y = t.ActualElapsedTime(白天);响应数据X = t{白天,{“DepTime”“ArrTime”}};预测数据
标准化预测变量。
Z = zscore(X);数据标准化
用标准化的预测器训练默认的高斯核回归模型。提取一个拟合摘要,以确定优化算法将模型与数据拟合的程度。
[Mdl,FitInfo] = fitrkernel(Z,Y)
找到6块。|========================================================================= | 解算器/客观| | |迭代梯度|β相对| | |数据通过| | |大小改变 | |========================================================================= | INIT | 0/1 | 4.307833 e + 01 | 4.345788 e-02 |南| | LBFGS | 0 / 2 e + 01 | 3.705713 | 1.577301 e-02 e-01 | 9.988252 | | LBFGS | 1 / 3 e + 01 | 3.704022 | 3.082836 e-02 | 1.338410 e 03 | | LBFGS | 2 / 4 e + 01 | 3.701398 | 3.006488 e-02 | 1.116070 e 03 | |LBFGS | 2/5 | 3.698797 e + 01 e-02 | 2.870642 | 2.234599 e 03 | | LBFGS | 2/6 | 3.693687 e + 01 e-02 | 2.625581 | 4.479069 e 03 | | LBFGS | 2/7 | 3.683757 e + 01 e-02 | 2.239620 | 8.997877 e 03 | | LBFGS | 2/8 | 3.665038 e + 01 e-02 | 1.782358 | 1.815682 e-02 | | LBFGS | 3/9 | 3.473411 e + 01 e-02 | 4.074480 | 1.778166 e-01 | | LBFGS | 4/10 | 3.684246 e + 01 e-01 | 1.608942 | 3.294968 e-01 | | LBFGS | 4/11 | 3.441595 e + 01 e-02 | 8.587703 | 1.420892 e-01 | | LBFGS | 5/12 | 3.377755 e + 01 | 3.760006 e-02 |4.640134 e-02 | | LBFGS | 6/13 | 3.357732 e + 01 e-02 | 1.912644 | 3.842057 e-02 | | LBFGS | 7/14 | 3.334081 e + 01 e-02 | 3.046709 | 6.211243 e-02 | | LBFGS | 8/15 | 3.309239 e + 01 e-02 | 3.858085 | 6.411356 e-02 | | LBFGS | 9/16 | 3.276577 e + 01 e-02 | 3.612292 | 6.938579 e-02 | | LBFGS | 10/17 | 3.234029 e + 01 e-02 | 2.734959 | 1.144307 e-01 | | LBFGS | 11/18 | 3.205763 e + 01 e-02 | 2.545990 | 7.323180 e-02 | | LBFGS | 12/19 | 3.183341 e + 01 e-02 | 2.472411 | 3.689625 e-02 | | LBFGS e + 01 | | | 13/20 3.1693072.064613e-02 | 2.998555e-02 | |========================================================================= | Solver | Iteration / | Objective | Gradient | Beta relative | | | Data Pass | | magnitude | change | |========================================================================= | LBFGS | 14 / 21 | 3.146896e+01 | 1.788395e-02 | 5.967293e-02 | | LBFGS | 15 / 22 | 3.118171e+01 | 1.660696e-02 | 1.124062e-01 | | LBFGS | 16 / 23 | 3.106224e+01 | 1.506147e-02 | 7.947037e-02 | | LBFGS | 17 / 24 | 3.098395e+01 | 1.564561e-02 | 2.678370e-02 | | LBFGS | 18 / 25 | 3.096029e+01 | 4.464104e-02 | 4.547148e-02 | | LBFGS | 19 / 26 | 3.085475e+01 | 1.442800e-02 | 1.677268e-02 | | LBFGS | 20 / 27 | 3.078140e+01 | 1.906548e-02 | 2.275185e-02 | |========================================================================|
Mdl = RegressionKernel PredictorNames: {'x1' 'x2'} ResponseName: 'Y' Learner: 'svm' NumExpansionDimensions: 64 KernelScale: 1 Lambda: 8.5385e-06 BoxConstraint: 1 Epsilon: 5.9303属性,方法
FitInfo =带字段的结构:求解器:'LBFGS-tall' LossFunction: 'epsiloninsensitive' Lambda: 8.5385e-06 BetaTolerance: 1.0000 -03 GradientTolerance: 1.0000 -05 ObjectiveValue: 30.7814 GradientMagnitude: 0.0191 RelativeChangeInBeta: 0.0228 FitTime: 32.7701历史:[1x1 struct]
Mdl
是一个RegressionKernel
模型。要检查回归错误,可以通过Mdl
和训练数据或新数据损失
函数。或者,你可以通过Mdl
和新的预测数据预测
函数预测对新观测的响应。你也可以通过Mdl
和训练数据重新开始
继续培训的功能。
FitInfo
包含优化信息的结构数组。使用FitInfo
确定优化的终止测量是否令人满意。
为了提高准确性,您可以增加优化迭代的最大次数(“IterationLimit”
),并降低公差值(“BetaTolerance”
而且“GradientTolerance”
的名称-值对参数fitrkernel
.这样做可以改善诸如ObjectiveValue
而且RelativeChangeInBeta
在FitInfo
.方法也可以优化模型参数“OptimizeHyperparameters”
名称-值对参数。
交叉验证核回归模型
加载carbig
数据集。
负载carbig
指定预测变量(X
)和响应变量(Y
).
X =[加速度,气缸,排量,马力,重量];Y = mpg;
删除X
而且Y
其中任意一个数组南
值。使用南
值,然后将数据传递给fitrkernel
可以加快训练速度,减少内存使用。
R = rmmissing([X Y]);%删除丢失条目的数据X = r (:,1:5);Y = R(:,end);
标准化预测变量。
Z = zscore(X);
使用5倍交叉验证对核回归模型进行交叉验证。
Mdl = fitrkernel(Z,Y,“Kfold”5)
Mdl = RegressionPartitionedKernel CrossValidatedModel: 'Kernel' ResponseName: 'Y' NumObservations: 392 KFold: 5 Partition: [1x1 cvpartition] ResponseTransform: 'none'属性,方法
元素个数(Mdl.Trained)
Ans = 5
Mdl
是一个RegressionPartitionedKernel
模型。因为fitrkernel
实现五重交叉验证,Mdl
包含五个RegressionKernel
软件在训练折叠(in-fold)观察上训练的模型。
检查每一次折叠的交叉验证损失(均方误差)。
kfoldLoss (Mdl“模式”,“个人”)
ans =5×113.0610 14.0975 24.0104 21.1223 24.3979
优化核回归
方法自动优化超参数“OptimizeHyperparameters”
名称-值对参数。
加载carbig
数据集。
负载carbig
指定预测变量(X
)和响应变量(Y
).
X =[加速度,气缸,排量,马力,重量];Y = mpg;
删除X
而且Y
其中任意一个数组南
值。使用南
值,然后将数据传递给fitrkernel
可以加快训练速度,减少内存使用。
R = rmmissing([X Y]);%删除丢失条目的数据X = r (:,1:5);Y = R(:,end);
标准化预测变量。
Z = zscore(X);
通过使用自动超参数优化,找到最小化5倍交叉验证损失的超参数。指定“OptimizeHyperparameters”
作为“汽车”
这fitrkernel
的最优值“KernelScale”
,“λ”
,‘ε’
名称-值对参数。为了重现性,设置随机种子并使用“expected-improvement-plus”
采集功能。
rng (“默认”) [Mdl,FitInfo,HyperparameterOptimizationResults] = fitrkernel(Z,Y,“OptimizeHyperparameters”,“汽车”,...“HyperparameterOptimizationOptions”结构(“AcquisitionFunctionName”,“expected-improvement-plus”))
|====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | KernelScale |λε| | | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | | |====================================================================================================================| | 最好1 | | 4.8295 | 0.8926 | 4.8295 | 4.8295 | 0.011518 | 6.8068 e-05 | 0.95918 | | 2 |最好| 4.1488 | 0.59961 | 4.1488 | 4.1855 | 477.57 | 0.066115 | 0.091828 | | 3 |接受| 4.1521 | 0.16299 | 4.1488 | 4.1747 | 0.0080478 | 0.0052867 |520.84 | | 4 |接受| 4.1506 | 0.14581 | 4.1488 | 4.1488 | 0.10935 | 0.35931 | 0.013372 | | 5 |的| 4.1446 | 0.2171 | 4.1446 | 4.1446 | 326.29 | 2.5457 | 0.22475 | | 6 |接受| 4.1521 | 0.19795 | 4.1446 | 4.1447 | 932.16 | 0.19667 | 873.68 | | | 7日接受| 4.1501 | 0.40649 | 4.1446 | 4.1461 | 0.052426 | 2.5402 | 0.051319 | | 8最好| | 4.1408 | 0.49676 | 4.1408 | 4.1402 | 850.91 | 0.01462 | 0.37284 | | | 9日接受| 4.1521 | 0.48034 | 4.1408 | 4.1427 | 0.019352 | 0.012035 | 63.493 | | |一个ccept | 4.1521 | 0.30724 | 4.1408 | 4.1452 | 853.22 | 1.0698 | 55.679 | | 11 | Accept | 4.1521 | 0.36294 | 4.1408 | 4.1416 | 1.4548 | 0.022234 | 26.275 | | 12 | Accept | 4.1509 | 0.35094 | 4.1408 | 4.1469 | 877.82 | 0.0071133 | 0.012021 | | 13 | Accept | 4.1422 | 0.26559 | 4.1408 | 4.1455 | 944.08 | 0.011177 | 0.31055 | | 14 | Accept | 4.2032 | 0.48806 | 4.1408 | 4.1405 | 979.21 | 0.010842 | 13.776 | | 15 | Accept | 4.1438 | 0.1463 | 4.1408 | 4.1509 | 0.001234 | 0.018449 | 0.044225 | | 16 | Best | 4.1372 | 0.16882 | 4.1372 | 4.1511 | 1.7802 | 2.5477 | 0.014737 | | 17 | Accept | 4.1521 | 0.33509 | 4.1372 | 4.1466 | 0.0015946 | 2.5474 | 590.35 | | 18 | Accept | 4.1452 | 0.17528 | 4.1372 | 4.1464 | 0.058846 | 1.0766 | 0.20569 | | 19 | Accept | 4.1521 | 0.40625 | 4.1372 | 4.1461 | 2.187 | 2.5531e-06 | 278.92 | | 20 | Accept | 4.1451 | 0.16757 | 4.1372 | 4.1461 | 0.0050283 | 0.039894 | 0.14402 | |====================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | KernelScale | Lambda | Epsilon | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | | |====================================================================================================================| | 21 | Best | 4.1362 | 0.16304 | 4.1362 | 4.1426 | 0.0029885 | 0.039099 | 6.3938 | | 22 | Accept | 4.1521 | 0.10407 | 4.1362 | 4.1449 | 0.035949 | 0.038533 | 80.585 | | 23 | Accept | 4.1399 | 0.38537 | 4.1362 | 4.1446 | 50.001 | 0.095432 | 0.19954 | | 24 | Accept | 4.1487 | 0.12018 | 4.1362 | 4.1374 | 0.012199 | 0.089894 | 0.034773 | | 25 | Accept | 4.1521 | 0.10965 | 4.1362 | 4.1447 | 0.0011871 | 0.30153 | 425.89 | | 26 | Accept | 4.1466 | 0.10784 | 4.1362 | 4.145 | 0.0011773 | 0.052213 | 0.017592 | | 27 | Accept | 4.1418 | 0.24389 | 4.1362 | 4.145 | 7.556 | 1.655 | 0.016225 | | 28 | Accept | 4.1407 | 0.10566 | 4.1362 | 4.145 | 0.01201 | 1.6696 | 0.38806 | | 29 | Accept | 5.4256 | 0.76228 | 4.1362 | 4.1365 | 0.0010531 | 1.1032e-05 | 0.034083 | | 30 | Accept | 4.1521 | 0.096382 | 4.1362 | 4.1365 | 7.2684 | 8.4842e-06 | 887.63 |
__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:24.6178秒总目标函数评估时间:8.9721最佳观测可行点:KernelScale Lambda Epsilon ___________ ________ _______ 0.0029885 0.039099 6.3938观测目标函数值= 4.1362估计目标函数值= 4.1365函数评估时间= 0.16304最佳估计可行点(根据模型):KernelScale Lambda Epsilon ___________ ________ _______ 0.0029885 0.039099 6.3938估计目标函数值= 4.1365估计函数评估时间= 0.15086
Mdl = RegressionKernel ResponseName: 'Y' Learner: 'svm' NumExpansionDimensions: 256 KernelScale: 0.0030 Lambda: 0.0391 BoxConstraint: 0.0652 Epsilon: 6.3938属性,方法
FitInfo =带字段的结构:求解器:'LBFGS-fast' LossFunction: 'epsiloninsensitive' Lambda: 0.0391 BetaTolerance: 1.0000 -04 GradientTolerance: 1.0000 -06 ObjectiveValue: 1.7716 GradientMagnitude: 0.0051 RelativeChangeInBeta: 8.5572 -05 FitTime: 0.0046历史:[]
HyperparameterOptimizationResults = BayesianOptimization with properties: ObjectiveFcn: @createObjFcn/inMemoryObjFcn variabledescription: [5x1 optimizableVariable] Options: [1x1 struct] MinObjective: 4.1362 XAtMinObjective: [1x3 table] minestimatedobjobjective: 4.1365 xatminestimatedobjobjective: [1x3 table] numobjectiveevalues: 30 TotalElapsedTime: 24.6178 NextPoint: [1x3 table] XTrace: [30x3 table] ObjectiveTrace: [30x1 double] ConstraintsTrace: [] UserDataTrace:{30x1 cell} ObjectiveEvaluationTimeTrace: [30x1 double] IterationTimeTrace: [30x1 double] ErrorTrace: [30x1 double]可行性trace: [30x1 logical]可行性probabilitytrace: [30x1 double] IndexOfMinimumTrace: [30x1 double] objectivminimumtrace: [30x1 double] estimatedobjectivminimumtrace: [30x1 double]
对于大数据,优化过程可能需要很长时间。如果数据集太大,无法运行优化过程,则可以尝试仅使用部分数据优化参数。使用datasample
函数和指定“替换”,“假”
对数据进行抽样而不进行替换。
输入参数
X
- - - - - -预测数据
数字矩阵
资源描述
- - - - - -样本数据
表格
用于训练模型的示例数据,指定为表。每行资源描述
对应一个观测值,每一列对应一个预测变量。可选地,资源描述
可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。
如果
资源描述
包含响应变量,您希望在中使用所有剩余变量资源描述
作为预测器,然后通过使用指定响应变量ResponseVarName
.如果
资源描述
包含响应变量,并且您希望仅在中使用其余变量的子集资源描述
作为预测器,然后通过使用指定一个公式公式
.如果
资源描述
不包含响应变量,然后通过使用Y
.响应变量的长度和其中的行数资源描述
必须是相等的。
公式
- - - - - -响应变量的解释模型和预测变量的子集
特征向量|字符串标量
响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”
.在这种形式下,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须同时为资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。中的变量名可以验证资源描述
通过使用isvarname
函数。变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:字符
|字符串
请注意
软件处理南
,空字符向量(''
,空字符串(""
),< >失踪
,<定义>
元素作为缺失值,并删除具有以下任何特征的观测值:
响应变量中缺少值
在一个预测器观察中至少有一个缺失值
X
或资源描述
)南
值或0
体重(“重量”
)
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:Mdl = fitrkernel(X,Y,Learner="leastsquares",NumExpansionDimensions=2^15,KernelScale="auto")
实现最小二乘回归后的预测数据映射到2 ^ 15
采用启发式方法选择核尺度参数进行特征展开的维度空间。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:Mdl = fitrkernel(X,Y,'Learner','leastsquares','NumExpansionDimensions',2^15,'KernelScale','auto')
请注意
方法时,不能使用任何交叉验证名称-值参数“OptimizeHyperparameters”
名称-值参数。您可以修改交叉验证“OptimizeHyperparameters”
只有使用“HyperparameterOptimizationOptions”
名称-值参数。
BoxConstraint
- - - - - -箱约束
1
(默认)|积极的标量
箱约束,指定为逗号分隔的对,由“BoxConstraint”
一个正标量。
此论点仅当“学习者”
是“支持向量机”
(默认值),并且不指定正则化术语强度的值“λ”
.你可以指定“BoxConstraint”
或“λ”
因为方框约束(C)和正则化项强度(λ)是由C= 1 / (λn),在那里n观察数(行数X
).
例子:“BoxConstraint”,100年
数据类型:单
|双
ε
- - - - - -不敏感带的半宽
“汽车”
(默认)|非负标量值
不敏感频带宽度的一半,指定为由逗号分隔的对组成‘ε’
而且“汽车”
或者一个非负标量值。
为“汽车”
,fitrkernel
函数决定的值ε
作为差(Y) / 13.49
,这是使用响应变量的四分位范围对标准偏差的十分之一的估计Y
.如果差(Y)
等于0,那么fitrkernel
的值。ε
到0.1。
‘ε’
仅在以下情况下有效学习者
是支持向量机
.
例子:‘ε’,0.3
数据类型:单
|双
NumExpansionDimensions
- - - - - -扩展空间的维数
“汽车”
(默认)|正整数
扩展空间的维数,指定为由逗号分隔的对组成“NumExpansionDimensions”
而且“汽车”
或者一个正整数。为“汽车”
,fitrkernel
函数选择使用的维数2 . ^装天花板(最低(log2 (p) + 5、15))
,在那里p
是预测因子的数量。
例子:“NumExpansionDimensions”、2 ^ 15
数据类型:字符
|字符串
|单
|双
λ
- - - - - -正则化项强度
“汽车”
(默认)|负的标量
正则化术语的强度,指定为由逗号分隔的对组成“λ”
而且“汽车”
或者一个非负标量。
为“汽车”
的值。λ
是1 /n,在那里n是观测的数量。
当学习者
是“支持向量机”
,您可以指定任何一个BoxConstraint
或λ
因为方框约束(C)和正则化项强度(λ)是由C= 1 / (λn).
例子:“λ”,0.01
数据类型:字符
|字符串
|单
|双
学习者
- - - - - -线性回归模型类型
“支持向量机”
(默认)|“leastsquares”
线性回归模型类型,指定为由逗号分隔的对组成“学习者”
而且“支持向量机”
或“leastsquares”
.
在下表中,
x观察值(行向量)是从p预测变量。
是用于特征展开的观测值(行向量)的变换。T(x)地图x在 到高维空间( ).
β是一个系数向量。
b是标量偏置。
价值 | 算法 | 响应范围 | 损失函数 |
---|---|---|---|
“leastsquares” |
用普通最小二乘进行线性回归 | y∊(-∞∞) | 均方误差(MSE): |
“支持向量机” |
金宝app支持向量机回归 | 一样“leastsquares” |
Epsilon-insensitive: |
例子:“学习者”,“leastsquares”
详细的
- - - - - -冗长的水平
0
(默认)|1
详细级别,指定为逗号分隔的对,由“详细”
,要么0
或1
.详细的
控制诊断信息的数量fitrkernel
在命令行中显示。
价值 | 描述 |
---|---|
0 |
fitrkernel 不显示诊断信息。 |
1 |
fitrkernel 显示和存储目标函数、梯度幅度和其他诊断信息的值。FitInfo。历史 包含诊断信息。 |
例子:“详细”,1
数据类型:单
|双
BlockSize
- - - - - -已分配的最大内存量
4 e ^ 3
(4 gb)(默认)|积极的标量
分配的最大内存量(以兆字节为单位),由逗号分隔的对组成“BlockSize”
一个正标量。
如果fitrkernel
所需的内存大于的值BlockSize
来保存转换后的预测器数据,然后MATLAB使用块明智的策略。有关分区策略的详细信息,请参见算法.
例子:e4 BlockSize, 1
数据类型:单
|双
RandomStream
- - - - - -随机数流
全球流(默认)|随机流对象
用于数据转换再现性的随机数流,指定为由逗号分隔的对组成“RandomStream”
和一个随机流对象。详细信息请参见随机特征扩展.
使用“RandomStream”
再现随机基函数fitrkernel
用于将数据转换为X
到高维空间。详细信息请参见使用RandStream管理全局流而且创建和控制随机数流.
例子:RandomStream, RandStream(“mlfg6331_64”)
CategoricalPredictors
- - - - - -分类预测器列表
正整数向量|逻辑向量|字符矩阵|字符串数组|字符向量的单元格数组|“所有”
类别预测符列表,指定为此表中的值之一。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间 如果 |
逻辑向量 | 一个 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames .用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。 |
字符向量的字符串数组或单元格数组 | 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames . |
“所有” |
所有预测因素都是绝对的。 |
默认情况下,如果预测器数据在表(资源描述
),fitrkernel
如果一个变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定该变量是分类的。如果预测器数据为矩阵(X
),fitrkernel
假设所有预测因子都是连续的。要将任何其他预测符标识为类别预测符,请使用CategoricalPredictors
名称-值参数。
对于已识别的分类预测因子,fitrkernel
使用两种不同的方案创建虚拟变量,具体取决于分类变量是无序的还是有序的。对于一个无序分类变量,fitrkernel
为分类变量的每一层创建一个虚拟变量。对于有序分类变量,fitrkernel
创建的虚拟变量比类别数少一个。详细信息请参见自动创建虚拟变量.
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
PredictorNames
- - - - - -预测变量名称
唯一名称的字符串数组|唯一字符向量的单元格数组
预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能PredictorNames
这取决于你提供训练数据的方式。
如果你提供
X
而且Y
,那么你就可以使用了PredictorNames
中预测变量的名称X
.里面名字的顺序
PredictorNames
必须对应的列顺序X
.也就是说,PredictorNames {1}
名字是X (: 1)
,PredictorNames {2}
名字是X (:, 2)
等等。同时,大小(X, 2)
而且元素个数(PredictorNames)
必须是相等的。默认情况下,
PredictorNames
是{x1, x2,…}
.
如果你提供
资源描述
,那么你就可以使用了PredictorNames
选择在训练中使用哪些预测变量。也就是说,fitrkernel
中仅使用预测变量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
权重
- - - - - -观察权重
标量向量|变量名资源描述
CrossVal
- - - - - -交叉验证标志
“关闭”
(默认)|“上”
交叉验证标志,指定为逗号分隔的对,由“Crossval”
而且“上”
或“关闭”
.
如果你指定“上”
,然后软件实现10倍交叉验证。
方法重写此交叉验证设置CVPartition
,坚持
,KFold
,或Leaveout
名称-值对参数。在创建交叉验证模型时,一次只能使用一个交叉验证名称-值对参数。
例子:“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”
而且“上”
或“关闭”
.如果你指定“Leaveout”,“上”
,那么,对于每一个n观察(n为剔除缺失观测的观测数),软件完成以下步骤:
保留观测数据作为验证数据,并使用其他数据训练模型n- 1次观察。
存储n紧凑的,训练有素的模型在一个单元n的-by-1单元格向量
训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能使用以下四个名称-值对参数之一:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“Leaveout”,“上”
BetaTolerance
- - - - - -线性系数和偏置项的相对公差
1的军医
(默认)|负的标量
线性系数和偏置项(截距)的相对公差,指定为非负标量。
让 ,即优化迭代时的系数向量和偏置项t.如果 ,则优化终止。
如果你还指定GradientTolerance
,当软件满足任意一个停止条件时,优化终止。
例子:e-6 BetaTolerance, 1
数据类型:单
|双
GradientTolerance
- - - - - -绝对梯度公差
1 e-6
(默认)|负的标量
绝对梯度公差,指定为非负标量。
让 为目标函数相对于优化迭代时的系数和偏差项的梯度向量t.如果 ,则优化终止。
如果你还指定BetaTolerance
,当软件满足任意一个停止条件时,优化终止。
例子:e-5 GradientTolerance, 1
数据类型:单
|双
HessianHistorySize
- - - - - -黑森近似的历史缓冲区大小
15
(默认)|正整数
黑森近似的历史缓冲区大小,指定为逗号分隔的对,由“HessianHistorySize”
一个正整数。在每次迭代中,fitrkernel
使用最新的统计数据组成黑森HessianHistorySize
迭代。
例子:“HessianHistorySize”,10
数据类型:单
|双
IterationLimit
- - - - - -优化迭代的最大次数
正整数
优化迭代的最大次数,指定为由逗号分隔的对组成“IterationLimit”
一个正整数。
如果转换的数据适合内存,则默认值为1000BlockSize
.否则,默认值为100。
例子:“IterationLimit”,500年
数据类型:单
|双
OptimizeHyperparameters
- - - - - -需要优化的参数
“没有”
(默认)|“汽车”
|“所有”
|符合条件的参数名的字符串数组或单元格数组|向量的optimizableVariable
对象
参数进行优化,指定为由逗号分隔的对组成“OptimizeHyperparameters”
其中一个价值观是:
“没有”
-不要优化。“汽车”
——使用{“KernelScale”、“λ”,“ε”}
.“所有”
-优化所有符合条件的参数。符合条件的参数名称的单元格数组。
向量的
optimizableVariable
对象的输出hyperparameters
.
优化尝试最小化交叉验证损失(错误)fitrkernel
通过改变参数。若要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions
名称-值对参数。
请注意
的价值“OptimizeHyperparameters”
重写使用其他名称-值参数指定的任何值。例如,设置“OptimizeHyperparameters”
来“汽车”
原因fitrkernel
方法所对应的超参数“汽车”
选项并忽略超参数的任何指定值。
符合条件的参数fitrkernel
是:
ε
- - - - - -fitrkernel
在正数值中搜索,默认情况下在范围内按对数缩放(1 e - 3, 1 e2) *差(Y) / 1.349
.KernelScale
- - - - - -fitrkernel
在正数值中搜索,默认情况下在范围内按对数缩放(1 e - 3, 1 e3)
.λ
- - - - - -fitrkernel
在正数值中搜索,默认情况下在范围内按对数缩放(1 e - 3, 1 e3) / n
,在那里n
是观测的数量。学习者
- - - - - -fitrkernel
搜索中“支持向量机”
而且“leastsquares”
.NumExpansionDimensions
- - - - - -fitrkernel
在正整数中搜索,默认情况下在范围内按对数缩放(100、10000)
.
通过传递的向量来设置非默认参数optimizableVariable
具有非默认值的对象。例如:
负载carsmallParams =超参数(“fitrkernel”(功率、重量),MPG);参数(2)。Range = [1e-4,1e6];
通过参数个数
作为价值“OptimizeHyperparameters”
.
默认情况下,迭代显示出现在命令行上,并根据优化中的超参数数量显示图形。对于优化和绘图,目标函数为Log(1 +交叉验证损失).要控制迭代显示,请设置详细的
字段“HyperparameterOptimizationOptions”
名称-值参数。为了控制情节,设置ShowPlots
字段“HyperparameterOptimizationOptions”
名称-值参数。
有关示例,请参见优化核回归.
例子:“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
-训练过的核回归模型
RegressionKernel
模型对象|RegressionPartitionedKernel
交叉验证的模型对象
训练过的核回归模型,返回为RegressionKernel
模型对象或RegressionPartitionedKernel
交叉验证的模型对象。
如果您设置了任何名称-值对参数CrossVal
,CVPartition
,坚持
,KFold
,或Leaveout
,然后Mdl
是一个RegressionPartitionedKernel
旨在模型。否则,Mdl
是一个RegressionKernel
模型。
引用Mdl
,使用点表示法。例如,输入Mdl。NumExpansionDimensions
在命令窗口中显示扩展空间的维数。
请注意
与其他回归模型不同,为了节省内存使用,aRegressionKernel
模型对象不存储训练数据或训练过程细节(例如,收敛历史)。
FitInfo
-优化细节
结构数组
优化细节,作为结构数组返回,包括本表中描述的字段。字段包含最终值或名称-值对参数规范。
场 | 描述 |
---|---|
解算器 |
目标函数最小化技术: |
LossFunction |
损失函数。均方误差(MSE)或不敏感,这取决于线性回归模型的类型。看到学习者 . |
λ |
正则化期限强度。看到λ . |
BetaTolerance |
线性系数和偏置项的相对公差。看到BetaTolerance . |
GradientTolerance |
绝对梯度公差。看到GradientTolerance . |
ObjectiveValue |
优化结束时目标函数的值。回归损失加上正则化项构成目标函数。 |
GradientMagnitude |
优化终止时目标函数梯度向量的无限范数。看到GradientTolerance . |
RelativeChangeInBeta |
优化结束时线性系数和偏置项的相对变化。看到BetaTolerance . |
FitTime |
流逝,时钟时间(以秒为单位),使模型适合数据。 |
历史 |
优化信息的历史。该字段还包括来自训练的优化信息Mdl .此字段为空([] ),如果你指定“详细”,0 .详细信息请参见详细的 而且算法. |
要访问字段,使用点表示法。例如,要访问每个迭代的目标函数值的向量,请输入FitInfo。ObjectiveValue
在命令窗口。
检查所提供的信息FitInfo
评估收敛是否令人满意。
HyperparameterOptimizationResults
-超参数交叉验证优化
BayesianOptimization
对象|表包含超参数和相关值
超参数的交叉验证优化,返回为BayesianOptimization
对象或超参数及相关值的表。的值时,输出为非空“OptimizeHyperparameters”
不是“没有”
.输出值取决于优化器
字段的值。“HyperparameterOptimizationOptions”
名称-值对参数:
的价值优化器 场 |
的价值HyperparameterOptimizationResults |
---|---|
“bayesopt” (默认) |
类的对象BayesianOptimization |
“gridsearch” 或“randomsearch” |
使用的超参数表,观察到的目标函数值(交叉验证损失),以及从最低(最好)到最高(最差)的观察值排序 |
更多关于
随机特征扩展
随机扩展功能,如随机厨房水槽[1]或快餐[2],是一种计算效率高的大数据核回归算法的高斯核近似方案。随机特征扩展对于拥有大型训练集的大数据应用更为实用,但也可以应用于适合内存的较小数据集。
在将预测器数据映射到高维空间后,核回归算法搜索偏离每个响应数据点的最优函数(y我)以不大于边距(ε).
有些回归问题不能用线性模型来充分描述。在这种情况下,通过替换点积得到非线性回归模型x1x2”用一个非线性核函数 ,在那里x我是我观测值(行向量)和φ(x我)是映射的变换吗x我到高维空间(称为“核技巧”)。然而,评估G(x1,x2)对于一个大数据集(largen).
随机特征展开方案寻找一个随机变换,使其点积近似于高斯核。也就是说,
在哪里T(x)地图x在 到高维空间( ).随意的厨房水槽[1]方案采用随机变换
在哪里
样品是从哪里抽取的
而且σ是核标度。这个方案需要O(米p)计算和存储。的快餐[2]方案引入了另一种随机基V而不是Z使用阿达玛矩阵结合高斯尺度矩阵。这种随机基将计算成本降低到O(米日志
p)并将存储减少到O(米).
可以为指定值米而且σ,使用NumExpansionDimensions
而且KernelScale
的名称-值对参数fitrkernel
,分别。
的fitrkernel
函数使用Fastfood格式进行随机特征展开,并使用线性回归训练高斯核回归模型。不像求解器fitrsvm
函数,这需要计算n——- - - - - -n克矩阵,解算器fitrkernel
只需要形成一个大小的矩阵n——- - - - - -米,米通常比n对于大数据。
箱约束
框约束是一个参数,用于控制对位于边缘之外的观测值施加的最大惩罚(ε),并有助于防止过拟合(正则化)。增加框约束可以导致更长的训练时间。
方框约束(C)和正则化项强度(λ)是由C= 1 / (λn),在那里n是观测的数量。
提示
在训练模型之前标准化预测器是有帮助的。方法可以对训练数据进行标准化,并对测试数据进行缩放,使其具有与训练数据相同的缩放
正常化
函数。
算法
fitrkernel
利用有限内存Broyden-Fletcher-Goldfarb-Shanno (LBFGS)求解器使正则化目标函数最小化。l2)正规化。要查找用于训练的LBFGS求解器的类型,请键入FitInfo。解算器
在命令窗口。
“LBFGS-fast”
- LBFGS求解器。“LBFGS-blockwise”
- LBFGS求解器与块明智的策略。如果fitrkernel
所需的内存大于的值BlockSize
为了保存转换后的预测器数据,该函数使用块策略。“LBFGS-tall”
- LBFGS求解器与块明智的策略高阵列。
当fitrkernel
它采用块策略,通过在每次迭代中将损失和梯度的计算分布到数据的不同部分来实现LBFGS。同时,fitrkernel
通过将模型局部拟合到部分数据并通过平均将系数组合,改进线性系数和偏置项的初始估计。如果你指定“详细”,1
,然后fitrkernel
显示每个数据传递的诊断信息,并将信息存储在历史
领域的FitInfo
.
当fitrkernel
不使用区块策略,初始估计值为零。如果你指定“详细”,1
,然后fitrkernel
控件中显示每次迭代的诊断信息并将信息存储在历史
领域的FitInfo
.
参考文献
[1]拉希米,A.和B.雷希特。大规模核机器的随机特征。神经信息处理系统研究进展.Vol. 20, 2008, pp. 1177-1184。
[2] Le, Q, T. Sarlós和A. Smola。“快餐-在对数线性时间内近似核扩展。”第30届机器学习国际会议论文集.Vol. 28 No. 3, 2013, pp. 244-252。
[3]黄,P. S., H. Avron, T. N. Sainath, V. Sindhwani和B. Ramabhadran。“核方法匹配TIMIT上的深度神经网络。”2014年IEEE声学、语音和信号处理国际会议.2014,第205-209页。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
使用注意事项和限制:
fitrkernel
不支持高金宝app表格
数据。与内存中的默认值相比,一些名称-值对参数具有不同的默认值
fitrkernel
函数。金宝app支持的名称-值对参数,以及任何差异,是:“BoxConstraint”
‘ε’
“NumExpansionDimensions”
“KernelScale”
“λ”
“学习者”
“详细”
—默认值为1
.“BlockSize”
“RandomStream”
“ResponseTransform”
“重量”
—Value必须为高数组。“BetaTolerance”
—将默认值放宽为1 e - 3
.“GradientTolerance”
—将默认值放宽为1 e-5
.“HessianHistorySize”
“IterationLimit”
—将默认值放宽为20.
.“OptimizeHyperparameters”
“HyperparameterOptimizationOptions”
-对于交叉验证,只支持高优化金宝app“坚持”
验证。默认情况下,软件选择并保留20%的数据作为拒绝验证数据,并使用其余数据训练模型。可以使用此参数为拒绝分数指定不同的值。例如,指定“HyperparameterOptimizationOptions”、结构(“抵抗”,0.3)
保留30%的数据作为验证数据。
如果
“KernelScale”
是“汽车”
,然后fitrkernel
所控制的随机流tallrng
二次抽样。为了重现性,您必须为全局流和受控的随机流设置随机数种子tallrng
.如果
“λ”
是“汽车”
,然后fitrkernel
可能需要额外的遍历数据来计算在X
.fitrkernel
使用块明智的策略。详细信息请参见算法.
有关更多信息,请参见高大的数组.
自动平行支撑金宝app
通过使用并行计算工具箱™自动并行运行计算来加速代码。
要执行并行超参数优化,请使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
类调用中的名称-值参数fitrkernel
函数。
有关并行超参数优化的更多信息,请参见并行贝叶斯优化.
有关并行计算的一般信息,请参见运行MATLAB函数与自动并行支持金宝app(并行计算工具箱).
版本历史
在R2018a中引入
Beispiel offnen
Sie haben eine geänderte版本dieses Beispiels。Möchten Sie dieses Beispiel mit Ihren Änderungen öffnen?
MATLAB-Befehl
你的身体和身体之间的联系MATLAB-Befehl
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus。web浏览器unterstützen keine MATLAB-Befehle。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。