主要内容

fitrlinear

对高维数据拟合线性回归模型

描述

fitrlinear高效地训练线性回归模型与高维,完整或稀疏预测数据。可用的线性回归模型包括正则化支持向量机(SVM)和最小二乘回归方法。金宝appfitrlinear使用减少计算时间的技术(例如,随机梯度下降)最小化目标函数。

为了减少包含许多预测变量的高维数据集上的计算时间,可以使用fitrlinear.有关低通过中维预测器数据集,请参见低维数据的替代方案

例子

Mdl= fitrlinear (XY返回一个训练好的回归模型对象Mdl其中包含了将支持向量机回归模型拟合到预测因子的结果金宝appX和响应Y

Mdl= fitrlinear (资源描述ResponseVarName使用表中的预测变量返回一个线性回归模型资源描述响应值资源描述。ResponseVarName

Mdl= fitrlinear (资源描述公式使用表中的示例数据返回一个线性回归模型资源描述.输入参数公式是否有响应的解释模型和预测变量的子集资源描述曾经适合Mdl

Mdl= fitrlinear (资源描述Y使用表中的预测变量返回一个线性回归模型资源描述以及向量中的响应值Y

例子

Mdl= fitrlinear (XY名称,值除以前语法中的任何输入参数组合外,还使用一个或多个名称-值对参数指定选项。例如,您可以指定交叉验证、实现最小二乘回归或指定正则化的类型。方法进行交叉验证是一种良好的实践“Kfold”名称-值对参数。交叉验证结果决定了模型的泛化程度。

例子

MdlFitInfo= fitrlinear(___还使用任何前面的语法返回优化细节。你不能要求FitInfo对于交叉验证的模型。

例子

MdlFitInfoHyperparameterOptimizationResults= fitrlinear(___参数时,还返回超参数优化细节OptimizeHyperparameters名称-值对。

例子

全部折叠

使用SVM、双SGD和山脊正则化训练线性回归模型。

从这个模型中模拟10000个观测值

y x 1 0 0 + 2 x 2 0 0 + e

  • X x 1 x 1 0 0 0 是一个10000 × 1000的稀疏矩阵,其中10%为非零标准正规元素。

  • e均值为0,标准差为0.3的随机正态误差。

rng (1)%用于再现性N = 1e4;D = 1e3;Nz = 0.1;X = sprandn(n,d,nz);Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

训练一个线性回归模型。默认情况下,fitrlinear采用带山脊金宝app惩罚的支持向量机,并使用双SGD优化支持向量机。通过提取拟合摘要来确定优化算法对模型与数据的拟合程度。

[Mdl,FitInfo] = fitrlinear(X,Y)
Mdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double]偏差:-0.0056 Lambda: 1.0000 -04学习者:'svm'属性,方法
FitInfo =带字段的结构:Lambda: 1.0000e-04目标:0.2725 PassLimit: 10 NumPasses: 10 BatchLimit: [] NumIterations: 100000 GradientNorm: NaN GradientTolerance: 0 RelativeChangeInBeta: 0.4907 BetaTolerance: 1.0000e-04 DeltaGradient: 1.5816 DeltaGradientTolerance: 0.1000 TerminationCode: 0 TerminationStatus:{'迭代限制超过。'} Alpha: [10000x1 double]历史记录:[]FitTime: 0.0606求解器:{'dual'}

Mdl是一个RegressionLinear模型。你可以通过Mdl而训练或新的数据损失检验样本内均方误差。或者,你可以通过Mdl新的预测数据预测预测对新观测结果的反应。

FitInfo是一个结构数组,其中包含终止状态(TerminationStatus),以及求解器将模型与数据拟合所需的时间(FitTime).这是一个很好的实践FitInfo确定优化终止测量是否令人满意。在这种情况下,fitrlinear达到最大迭代次数。因为训练时间很快,所以可以重新训练模型,但要增加数据的遍历次数。或者,尝试其他求解器,如LBFGS。

为了确定使用最小二乘的线性回归模型的良好套索惩罚强度,实现5倍交叉验证。

从这个模型中模拟10000个观测值

y x 1 0 0 + 2 x 2 0 0 + e

  • X x 1 x 1 0 0 0 } 是一个10000 × 1000的稀疏矩阵,其中10%为非零标准正规元素。

  • e均值为0,标准差为0.3的随机正态误差。

rng (1)%用于再现性N = 1e4;D = 1e3;Nz = 0.1;X = sprandn(n,d,nz);Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

创建一组15个对数间隔的正则化强度 1 0 - 5 通过 1 0 - 1

Lambda = logspace(-5,-1,15);

交叉验证模型。要提高执行速度,可以调换预测器数据,并指定观察值为列。利用SpaRSA对目标函数进行优化。

X = X';CVMdl = fitrlinear(X,Y,“ObservationsIn”“列”“KFold”5,“λ”λ,...“学习者”“leastsquares”“规划求解”“sparsa”“正规化”“套索”);numCLModels = nummel (CVMdl.Trained)
numCLModels = 5

CVMdl是一个RegressionPartitionedLinear模型。因为fitrlinear实现5倍交叉验证,CVMdl包含5RegressionLinear软件在每次折叠上训练的模型。

显示第一个训练好的线性回归模型。

Mdl1 = CVMdl。训练有素的{1}
Mdl1 = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x15 double]偏差:[-0.0049 -0.0049 -0.0049 -0.0049 -0.0048…[1.0000e-05 1.9307e-05 3.7276e-05 7.1969e-05…]学习者:'最小二乘'属性,方法

Mdl1是一个RegressionLinear模型对象。fitrlinear构造Mdl1通过训练前四层。因为λ是一个正则化强度序列,你能想到吗Mdl1作为15个模型,每一个正则化强度在其中λ

估计交叉验证的MSE。

mse = kfoldLoss(CVMdl);

较高的值λ导致预测变量的稀疏性,这是回归模型的一个很好的品质。对于每个正则化强度,使用整个数据集和交叉验证模型时相同的选项训练线性回归模型。确定每个模型的非零系数的数量。

Mdl = fitrlinear(X,Y,“ObservationsIn”“列”“λ”λ,...“学习者”“leastsquares”“规划求解”“sparsa”“正规化”“套索”);numNZCoeff = sum(Mdl.Beta~=0);

在同一图中,绘制每个正则化强度的交叉验证MSE和非零系数的频率。在对数尺度上画出所有变量。

figure [h,hL1,hL2] = plotyy(log10(Lambda),log10(mse),...log10(λ)log10 (numNZCoeff));hL1。标志=“o”;hL2。标志=“o”;ylabel (h (1),“log_ {10} MSE的) ylabel (h (2),'log_{10}非零系数频率')包含(“log_{10}λ的)举行

图中包含2个轴对象。Axes对象1包含一个line类型的对象。坐标轴对象2包含一个line类型的对象。

选择正则化强度指数,以平衡预测变量稀疏性和低MSE(例如,λ(10)).

idxFinal = 10;

提取最小均方误差对应的模型。

MdlFinal = selectModels(Mdl,idxFinal)
MdlFinal = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double]偏差:-0.0050 Lambda: 0.0037学习者:'最小二乘'属性,方法
idxNZCoeff = find(MdlFinal.Beta~=0)
idxNZCoeff =2×1100 200
EstCoeff = Mdl.Beta(idxNZCoeff)
EstCoeff =2×11.0051 - 1.9965

MdlFinal是一个RegressionLinear具有一个正则化强度的模型。非零系数EstCoeff接近模拟数据的系数。

这个例子展示了如何使用自动优化超参数fitrlinear.该示例为模型使用了人工(模拟)数据

y x 1 0 0 + 2 x 2 0 0 + e

  • X x 1 x 1 0 0 0 } 是一个10000 × 1000的稀疏矩阵,其中10%为非零标准正规元素。

  • e均值为0,标准差为0.3的随机正态误差。

rng (1)%用于再现性N = 1e4;D = 1e3;Nz = 0.1;X = sprandn(n,d,nz);Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

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

为了重现性,使用“expected-improvement-plus”采集功能。

Hyperopts = struct(“AcquisitionFunctionName”“expected-improvement-plus”);[Mdl,FitInfo,HyperparameterOptimizationResults] = fitrlinear(X,Y,...“OptimizeHyperparameters”“汽车”...“HyperparameterOptimizationOptions”hyperopts)
|=====================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar |λ|学生| | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.16029 | 0.7907 | 0.16029 | 0.16029 | 2.4206 e-09 |支持向量机| | 2 |最好| 0.14496 | 0.63743 | 0.14496 | 0.14601 | 0.001807 |支持向量机| | 3 |最好| 0.13879 | 0.67527 | 0.13879 | 0.14065 | 2.4681 e-09 | leastsquares | | 4 |的| 0.115 | 0.55616 | 0.115 | 0.11501 |0.021027 | leastsquares | | 5 |接受| 0.44352 | 0.6156 | 0.115 | 0.1159 | 4.6795 | leastsquares | | 6 |的| 0.11025 | 0.63043 | 0.11025 | 0.11024 | 0.010671 | leastsquares | | | 7日接受| 0.13222 | 0.51473 | 0.11025 | 0.11024 | 8.6067 e-08 | leastsquares | | |接受8 | 0.13262 | 0.58507 | 0.11025 | 0.11023 | 8.5109 e-05 | leastsquares | | | 9日接受| 0.13543 | 0.62007 | 0.11025 | 0.11021 | 2.7562 e-06 | leastsquares | | |接受10 | 0.15751 | 0.61176 | 0.11025 | 0.11022 | 5.0559 e-06 |支持向量机| | | 11日接受| 0.40673 | 0.68834 | 0.11025 | 0.1102 | 0.52074 |支持向量机| | | 12日接受| 0.16057 | 0.80978 | 0.11025 | 0.1102 | 0.00014292 |支持向量机| | | 13日接受| 0.16105 | 0.58199 | 0.11025 | 0.11018 | 1.0079 e-07 |支持向量机| | | 14日接受| 0.12763 | 0.50879 | 0.11025 | 0.11019 | 0.0012085 | leastsquares | | |接受15 | 0.13504 | 0.48453 | 0.11025 | 0.11019 | 1.3981 e-08 | leastsquares | | | 16日接受| 0.11041 | 0.58515 | 0.11025 | 0.11026 | 0.0093968 | leastsquares | | 17 | | 0.10954 |最好0.59682 | 0.10954 | 0.11003 | 0.010393 | leastsquares | | | 18日接受| 0.10998 | 0.62937 | 0.10954 | 0.11002 | 0.010254 | leastsquares | | | 19日接受| 0.45314 | 0.50955 | 0.10954 | 0.11001 | 9.9932 |支持向量机| |最好20 | | 0.10753 | 0.60143 | 0.10753 | 0.10759 | 0.022576 |支持向量机  | |=====================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar |λ|学生| | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 21最好| | 0.10737 | 0.63705 | 0.10737 | 0.10728 | 0.010171 |支持向量机| | | 22日接受| 0.13448 | 0.65832 | 0.10737 | 0.10727 | 1.5344 e-05 | leastsquares | | 23最好| | 0.10645 | 0.73373 | 0.10645 | 0.10565 | 0.015495 |支持向量机| | | 24日接受| 0.13598 | 0.48257 | 0.10645 |0.10559 | 4.5984 e-07 | leastsquares | | | 25日接受| 0.15962 | 0.71824 | 0.10645 | 0.10556 | 1.4302 e-08 |支持向量机| | | 26日接受| 0.10689 | 0.77732 | 0.10645 | 0.10616 | 0.015391 |支持向量机| | | 27日接受| 0.13748 | 0.43259 | 0.10645 | 0.10614 | 1.001 e-09 | leastsquares | | | 28日接受| 0.10692 | 0.64502 | 0.10645 | 0.10639 | 0.015761 |支持向量机| | | 29日接受| 0.10681 | 0.66523 | 0.10645 | 0.10649 | 0.015777 |支持向量机| | | 30日接受| 0.34314 | 0.58592 | 0.10645 | 0.10651 | 0.39671 | leastsquares |

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

图中包含一个轴对象。标题为目标函数模型的轴对象包含线、面、等高线类型的5个对象。这些对象代表观测点,模型均值,下一个点,模型最小可行。

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:46.3613秒总目标函数评估时间:18.569最佳观测可行点:Lambda Learner ________ _______ 0.015495 svm观测目标函数值= 0.10645估计目标函数值= 0.10651函数评估时间= 0.73373最佳估计可行点(根据模型):Lambda Learner ________ _______ 0.015777 svm估计目标函数值= 0.10651估计函数评估时间= 0.65559
Mdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double]偏差:-0.0018 Lambda: 0.0158学习者:'svm'属性,方法
FitInfo =带字段的结构:Lambda: 0.0158目标:0.2309 PassLimit: 10 NumPasses: 10 BatchLimit: [] NumIterations: 99989 GradientNorm: NaN GradientTolerance: 0 RelativeChangeInBeta: 0.0641 BetaTolerance: 1.0000e-04 DeltaGradient: 1.1697 DeltaGradientTolerance: 0.1000 TerminationCode: 0 TerminationStatus:{'迭代限制超过。'} Alpha: [10000x1 double]历史记录:[]FitTime: 0.0681求解器:{'dual'}
HyperparameterOptimizationResults = BayesianOptimization with properties: ObjectiveFcn: @createObjFcn/inMemoryObjFcn variabledescription: [3x1 optimizableVariable] Options: [1x1 struct] MinObjective: 0.1065 XAtMinObjective: [1x2 table] minestimatedobjobjective: 0.1065 xatminestimatedobjobjective: [1x2 table] numobjectiveevalues: 30 TotalElapsedTime: 46.3613 NextPoint: [1x2 table] XTrace: [30x2 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]

此优化技术比中所示的优化技术更简单使用交叉验证找到好的套索惩罚,但不允许您权衡模型复杂性和交叉验证损失。

输入参数

全部折叠

预测器数据,指定为n——- - - - - -p全矩阵或稀疏矩阵。

的长度Y观察的次数X必须是相等的。

请注意

如果你定位你的预测矩阵,使观察结果与列相对应,并指定“ObservationsIn”、“列”,那么优化执行时间可能会显著减少。

数据类型:|

响应数据,指定为n-维数值向量。的长度Y必须等于中的观测数X资源描述

数据类型:|

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

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

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

  • 如果资源描述不包含响应变量,然后通过使用Y.响应变量的长度和其中的行数资源描述必须是相等的。

数据类型:表格

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

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

数据类型:字符|字符串

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

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

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

数据类型:字符|字符串

请注意

软件处理,空字符向量(,空字符串(""),< >失踪,<定义>元素作为缺失值,并删除具有以下任何特征的观测值:

  • 响应中缺少值(例如,YValidationData{2}

  • 在预测器观察中至少有一个缺失值(例如,行XValidationData {1}

  • 值或0权重(例如,在权重ValidationData {3}

为了节省内存使用,最好的做法是在训练之前手动从训练数据中删除包含缺失值的观察值。

名称-值参数

的可选逗号分隔对名称,值参数。名字参数名称和价值对应的值。名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:Mdl = fitrlinear(X,Y,'Learner','leastsquares','CrossVal','on','Regularization','lasso')指定实现最小二乘回归、实现10倍交叉验证,并指定包含套索正则化项。

请注意

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

线性回归选项

全部折叠

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

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

例子:‘ε’,0.3

数据类型:|

正则化术语的强度,指定为由逗号分隔的对组成“λ”而且“汽车”,一个非负的标量,或者一个非负的值的向量。

  • “汽车”λ= 1 /n.

    • 如果指定了交叉验证、名值对参数(例如,CrossVal),然后n是折叠观察数。

    • 否则,n是训练样本量。

  • 对于一个非负值的向量,fitrlinear中每个不同值依次优化目标函数λ按升序排列。

    • 如果解算器“sgd”“asgd”而且正则化“套索”fitrlinear不使用以前的系数估计作为温暖的开始用于下一个优化迭代。否则,fitrlinear使用热启动。

    • 如果正则化“套索”时,则任意系数估计值为0时,均保持其值fitrlinear中的后续值进行优化λ

    • fitrlinear返回每个指定正则化强度的系数估计值。

例子:“λ”,10 ^ (- (10:2:2))

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

线性回归模型类型,指定为由逗号分隔的对组成“学习者”而且“支持向量机”“leastsquares”

在这个表格中, f x x β + b

  • β的向量p系数。

  • x是来自p预测变量。

  • b是标量偏置。

价值 算法 响应范围 损失函数
“leastsquares” 用普通最小二乘进行线性回归 y∊(-∞∞) 均方误差(MSE): y f x 1 2 y f x 2
“支持向量机” 金宝app支持向量机回归 一样“leastsquares” Epsilon-insensitive: y f x 马克斯 0 | y f x | ε

例子:“学习者”,“leastsquares”

预测器数据观测维数,指定为“行”“列”

请注意

如果你定位你的预测矩阵,使观察结果与列相对应,并指定“ObservationsIn”、“列”,那么您可能会经历计算时间的显著减少。你不能指定“ObservationsIn”、“列”用于表中的预测器数据。

例子:“ObservationsIn”、“列”

数据类型:字符|字符串

复杂度惩罚类型,指定为由逗号分隔的对组成“正规化”而且“套索”“岭”

该软件从平均损失函数的和组成最小化的目标函数(见学习者)和该表中的正则化项。

价值 描述
“套索” 套索(L1)惩罚: λ j 1 p | β j |
“岭” 脊(L2)惩罚: λ 2 j 1 p β j 2

要指定正则化项的强度,即λ在表达式中,使用λ

该软件排除偏差项(β0)从正规化惩罚。

如果解算器“sparsa”,则为默认值正则化“套索”.否则,默认为“岭”

提示

  • 对于预测变量选择,请指定“套索”.有关变量选择的更多信息,请参见特征选择简介

  • 为了优化精度,请指定“岭”

例子:“正规化”、“套索”

目标函数最小化技术,指定为逗号分隔对组成“规划求解”一个字符向量或字符串标量,一个字符串数组,或一个单元格数组的字符向量的值从这个表。

价值 描述 限制
“sgd” 随机梯度下降(SGD)[5][3]
“asgd” 平均随机梯度下降(ASGD)[8]
“双重” 支持向量机的双SGD[2][7] 正则化必须“岭”而且学习者必须“支持向量机”
“蓄热” Broyden-Fletcher-Goldfarb-Shanno准牛顿算法(BFGS)[4] 效率低下,如果X是非常高维的。
“lbfgs” 有限内存BFGS (LBFGS)[4] 正则化必须“岭”
“sparsa” 基于可分离近似的稀疏重建[6] 正则化必须“套索”

如果你指定:

  • 山脊惩罚(见正则化),size(X,1) <= 100(100个或更少的预测变量),则默认求解器为“蓄热”

  • 支持向量机回归模型(见学习者)、山脊惩罚,以及size(X,1) >(超过100个预测变量),则默认解算器为“双重”

  • 套索罚X包含100个或更少的预测变量,则默认解算器为“sparsa”

否则,默认解算器为“sgd”

如果指定求解器名称的字符串数组或单元格数组,则λ,软件采用求解器的解金宝搏官方网站j作为求解的一个温暖的开始j+ 1。

例子:{“sgd”“lbfgs”}应用SGD求解目标,并将其作为LBFGS的热启动。

提示

  • SGD和ASGD能比其他求解器更快地求解目标函数,而LBFGS和SpaRSA能比其他求解器得到更精确的解。金宝搏官方网站求解器组合,比如{“sgd”“lbfgs”}而且{“sgd”“sparsa”}能够平衡优化速度和精度。

  • 在SGD和ASGD之间进行选择时,请考虑:

    • SGD每次迭代花费更少的时间,但需要更多的迭代来收敛。

    • ASGD需要更少的迭代来收敛,但是每次迭代需要更多的时间。

  • 如果预测数据是高维的正则化“岭”,设置解算器对这些组合中的任何一个:

    • “sgd”

    • “asgd”

    • “双重”如果学习者“支持向量机”

    • “lbfgs”

    • {“sgd”、“lbfgs”}

    • {“asgd”、“lbfgs”}

    • {“双”、“lbfgs”}如果学习者“支持向量机”

    虽然您可以设置其他组合,但它们通常会导致精度较差的解决方案。金宝搏官方网站

  • 如果预测数据是中等到低维的正则化“岭”,设置解算器“蓄热”

  • 如果正则化“套索”,设置解算器对这些组合中的任何一个:

    • “sgd”

    • “asgd”

    • “sparsa”

    • {“sgd”、“sparsa”}

    • {“asgd”、“sparsa”}

例子:“规划求解”,{‘sgd’,‘lbfgs}

初始线性系数估计值(β),指定为逗号分隔的对,由“β”和一个p-维数字向量或ap——- - - - - -l数字矩阵。p预测变量的数量在吗X而且l正则化强度值的数量(有关详细信息,请参阅λ).

  • 如果您指定p-维向量,然后软件对目标函数进行优化l使用此过程的次数。

    1. 软件优化使用β的初始值和最小值λ作为正则化强度。

    2. 该软件再次优化使用结果估计从以前的优化作为一个温暖的开始中次小的值λ作为正则化强度。

    3. 软件执行第2步,直到耗尽所有的值λ

  • 如果您指定p——- - - - - -l矩阵,然后软件对目标函数进行优化l次了。在迭代j,软件使用β(:,j作为初始值,在排序之后λ按升序使用λ(j作为正则化强度。

如果你设置“规划求解”、“双”,那么软件就会忽略β

数据类型:|

初步截距估计(b),指定为逗号分隔的对,由“偏见”和一个数值标量或l-维数值向量。l正则化强度值的数量(有关详细信息,请参阅λ).

  • 如果您指定一个标量,那么软件将优化目标函数l使用此过程的次数。

    1. 软件优化使用偏见的初始值和最小值λ作为正则化强度。

    2. 使用的结果估计作为一个温暖的开始到下一个优化迭代,并使用中的下一个最小值λ作为正则化强度。

    3. 软件执行第2步,直到耗尽所有的值λ

  • 如果您指定l-维向量,然后软件对目标函数进行优化l次了。在迭代j,软件使用偏差(j作为初始值,在排序之后λ按升序使用λ(j作为正则化强度。

  • 默认情况下:

    • 如果学习者“leastsquares”,然后偏见的加权平均值是Y用于训练或交叉验证,内叠反应。

    • 如果学习者“支持向量机”,然后偏见的加权中值是Y对于所有训练或交叉验证,在折叠观察大于ε

数据类型:|

线性模型截距包含标志,指定为由逗号分隔的对组成“FitBias”而且真正的

价值 描述
真正的 该软件包括偏差项b在线性模型中,然后估计它。
软件集b在估计期间= 0。

例子:“FitBias”,假的

数据类型:逻辑

标志来拟合优化后的线性模型截距,指定为由逗号分隔的对组成“PostFitBias”而且真正的

价值 描述
软件估计偏差项b这些系数β在优化。
真正的

估计b,软件:

  1. 估计β而且b使用模型。

  2. 计算残差。

  3. 不菲b.对于最小二乘,b是残差的加权平均值。对于SVM回归,b所有残差的加权中位数是否大于ε

如果你指定真正的,然后FitBias一定是真的。

例子:“PostFitBias”,真的

数据类型:逻辑

详细级别,指定为逗号分隔的对,由“详细”和一个非负整数。详细的控制诊断信息的数量fitrlinear在命令行中显示。

价值 描述
0 fitrlinear不显示诊断信息。
1 fitrlinear周期性地显示和存储目标函数、梯度幅度和其他诊断信息的值。FitInfo。历史包含诊断信息。
任意正整数 fitrlinear在每次优化迭代中显示和存储诊断信息。FitInfo。历史包含诊断信息。

例子:“详细”,1

数据类型:|

SGD和ASGD求解器选项

全部折叠

小批量大小,指定为由逗号分隔的对组成“BatchSize”一个正整数。在每次迭代中,软件估计次梯度使用BatchSize训练数据的观察结果。

  • 如果X是一个数字矩阵,那么默认值是10

  • 如果X是稀疏矩阵,那么默认值是马克斯([10日装天花板(sqrt (ff)))),在那里ff = numel(X)/nnz(X)(丰满的因素的X).

例子:“BatchSize”,100年

数据类型:|

学习率,指定为由逗号分隔的对组成“LearnRate”一个正标量。LearnRate指定每次迭代要执行多少步。在每次迭代中,梯度指定了每一步的方向和大小。

  • 如果正则化“岭”,然后LearnRate初始学习率γ0.软件决定迭代的学习率t,γt,使用

    γ t γ 0 1 + λ γ 0 t c

    • λ的值λ

    • 如果解算器“sgd”c=1

    • 如果解算器“asgd”

      • c2/3如果学习者“leastsquares”

      • c3/4如果学习者“支持向量机”[8]

  • 如果正则化“套索”,则对于所有迭代,LearnRate是恒定的。

默认情况下,LearnRate1 /√(1 +马克斯(sum (x ^ 2, obsDim)))),在那里obsDim1如果观察结果组成的列X,2否则。

例子:“LearnRate”,0.01

数据类型:|

标志,以在软件检测到发散(即超过最小值)时降低学习率,指定为逗号分隔的对,由“OptimizeLearnRate”而且真正的

如果OptimizeLearnRate“真正的”,那么:

  1. 对于很少的优化迭代,软件开始优化使用LearnRate作为学习率。

  2. 如果目标函数值增加,则软件重新启动并使用当前学习率值的一半。

  3. 软件迭代第2步,直到目标函数减小。

例子:“OptimizeLearnRate”,真的

数据类型:逻辑

套索截断运行之间的小批数,指定为逗号分隔的对,由“TruncationPeriod”一个正整数。

截断运行后,软件应用软阈值的线性系数。即加工后k=TruncationPeriod小批量,软件截断估计的系数j使用

β j β j u t 如果 β j > u t 0 如果 | β j | u t β j + u t 如果 β j < u t

  • SGD, β j 是系数的估计吗j处理后kmini-batches。 u t k γ t λ γt迭代时的学习率是多少t.λ的值λ

  • ASGD, β j 是平均估计系数吗j处理后kmini-batches, u t k λ

如果正则化“岭”,那么软件就会忽略TruncationPeriod

例子:“TruncationPeriod”,100年

数据类型:|

其他回归选项

全部折叠

类别预测符列表,指定为此表中的值之一。描述假设预测器数据在行中有观测值,在列中有预测器。

价值 描述
正整数向量

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

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

逻辑向量

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

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

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

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

例子:“CategoricalPredictors”、“所有”

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

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

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

    • 里面名字的顺序PredictorNames必须与预测器的顺序相对应吗X.假设X具有默认方向,在行中观察,在列中预测,PredictorNames {1}名字是X (: 1)PredictorNames {2}名字是X (:, 2)等等。同时,大小(X, 2)而且元素个数(PredictorNames)必须是相等的。

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

  • 如果你提供资源描述,那么你就可以使用了“PredictorNames”选择在训练中使用哪些预测变量。也就是说,fitrlinear中仅使用预测变量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

观察权重,由逗号分隔的对组成“重量”和一个正的数字向量或者变量的名字资源描述.软件对每个观察结果进行加权X资源描述中对应的值权重.的长度权重必须等于中的观察数X资源描述

如果将输入数据指定为表资源描述,然后权重可以是变量名中的资源描述它包含一个数值向量。在这种情况下,您必须指定权重作为字符向量或字符串标量。例如,如果权重向量W存储为资源描述。W,然后指定为' W '.否则,软件处理的所有列资源描述,包括W,作为训练模型时的预测因子。

默认情况下,权重的(n, 1),在那里n观察的数量在吗X资源描述

fitrlinear将权重归一化,使和为1。

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

交叉验证选择

全部折叠

交叉验证标志,指定为逗号分隔的对,由“Crossval”而且“上”“关闭”

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

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

例子:“Crossval”,“上”

交叉验证分区,指定为逗号分隔的对,由“CVPartition”和一个cvpartition创建的分区对象cvpartition.分区对象指定交叉验证的类型,以及训练集和验证集的索引。

要创建交叉验证的模型,您只能使用以下四个选项之一:CVPartition坚持,或KFold

用于拒绝验证的数据的百分比,指定为逗号分隔的对,由“坚持”和范围(0,1)中的标量值。如果你指定“坚持”,p,然后软件:

  1. 随机储备p* 100%的数据作为验证数据,并使用其余数据训练模型

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

要创建交叉验证的模型,您只能使用以下四个选项之一:CVPartition坚持,或KFold

例子:“坚持”,0.1

数据类型:|

交叉验证分类器中使用的折叠数,指定为逗号分隔的对,由“KFold”一个大于1的正整数。如果你指定,例如,“KFold”,k,然后软件:

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

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

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

要创建交叉验证的模型,您只能使用以下四个选项之一:CVPartition坚持,或KFold

例子:“KFold”,8

数据类型:|

SGD和ASGD收敛控制

全部折叠

要处理的最大批数,指定为逗号分隔的对,由“BatchLimit”一个正整数。当软件处理时BatchLimit批量,它终止优化。

  • 默认情况下:

    • 软件通过这些数据PassLimit次了。

    • 如果指定多个求解器,并使用(A)SGD来获得下一个求解器的初始近似值,则默认值为装天花板(1 e6 / BatchSize)BatchSize是值BatchSize名称-值对参数。

  • 如果你指定“BatchLimit”而且PassLimit,然后软件选择处理最少观测值的参数。

  • 如果你指定“BatchLimit”但不是“PassLimit”,然后软件处理足够多的批次,以完成一次完整的数据遍历。

例子:“BatchLimit”,100年

数据类型:|

对线性系数和偏置项(截距)的相对公差,指定为逗号分隔的对,由“BetaTolerance”一个非负标量。

B t β t b t ,即优化迭代时的系数向量和偏置项t.如果 B t B t 1 B t 2 < BetaTolerance ,则优化终止。

中指定的最后一个求解器,如果该软件收敛解算器,则优化终止。否则,软件将使用中指定的下一个求解器解算器

例子:e-6 BetaTolerance, 1

数据类型:|

在下一次收敛检查之前要处理的批数,指定为由逗号分隔的对组成“NumCheckConvergence”一个正整数。

要指定批处理大小,请参见BatchSize

默认情况下,每次通过整个数据集,软件都会检查大约10次收敛性。

例子:“NumCheckConvergence”,100年

数据类型:|

通过数据的最大次数,指定为逗号分隔的对,由“PassLimit”一个正整数。

fitrlinear当它完成一次数据传递时处理所有观察。

fitrlinear传递数据PassLimit多次,它会终止优化。

如果你指定BatchLimit而且PassLimit,然后fitrlinear选择处理最少观测值的参数。详情请参见算法

例子:“PassLimit”,5

数据类型:|

用于优化收敛检测的验证数据,指定为由逗号分隔的对组成“ValidationData”一个单元格数组或表格。

在优化过程中,软件定期估计损失ValidationData.如果验证数据丢失增加,则软件终止优化。详情请参见算法.若要使用交叉验证优化超参数,请参阅交叉验证选项,例如CrossVal

你可以指定ValidationData如果你用桌子的话,就像桌子一样资源描述包含响应变量的预测器数据。在这种情况下,ValidationData必须包含相同的预测器和响应包含在资源描述.该软件不会对观察结果施加权重,即使资源描述包含一个权重向量。要指定权重,必须指定ValidationData作为单元格数组。

如果你指定ValidationData作为单元格数组,它必须具有以下格式:

  • ValidationData {1}必须具有与预测器数据相同的数据类型和方向。也就是说,如果你使用预测矩阵X,然后ValidationData {1}一定是米——- - - - - -p或p——- - - - - -米具有相同方向的预测器数据的完整或稀疏矩阵X.训练数据中的预测变量X而且ValidationData {1}必须对应。类似地,如果你使用预测表资源描述那么,预测者的数据ValidationData {1}必须是包含相同预测变量的表资源描述.的观测数ValidationData {1}而且预测数据可能会有所不同。

  • ValidationData {2}必须匹配响应变量的数据类型和格式吗YResponseVarName.如果ValidationData {2}是一个响应的数组,那么它必须有相同数量的元素和观察的数量ValidationData {1}.如果ValidationData {1}那是桌子吗ValidationData {2}可以是表中响应变量的名称。如果你想用同样的ResponseVarName公式,您可以指定ValidationData {2}作为[]

  • 您可以指定ValidationData {3}作为一个米-维数向量的观测权重或表中变量的名称ValidationData {1}这包含了观察权重。该软件用验证数据规范化权重,使它们的和为1。

如果你指定ValidationData并且要在命令行上显示验证损失,请为其指定大于0的值详细的

中指定的最后一个求解器,如果该软件收敛解算器,则优化终止。否则,软件将使用中指定的下一个求解器解算器

默认情况下,软件不会通过监测验证数据丢失来检测收敛性。

绝对梯度公差,指定为由逗号分隔的对组成“GradientTolerance”一个非负标量。GradientTolerance的值解算器“蓄热”“lbfgs”,“sparsa”

t 为目标函数相对于优化迭代时的系数和偏差项的梯度向量t.如果 t 马克斯 | t | < GradientTolerance ,则优化终止。

如果你还指定BetaTolerance,则优化终止于fitrlinear满足任意一个停止准则。

如果fitrlinear中指定的最后一个求解器收敛解算器,则优化终止。否则,fitrlinear中指定的下一个求解器解算器

例子:GradientTolerance,每股收益

数据类型:|

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

例子:e7 IterationLimit, 1

数据类型:|

双SGD优化收敛控制

全部折叠

对线性系数和偏置项(截距)的相对公差,指定为逗号分隔的对,由“BetaTolerance”一个非负标量。

B t β t b t ,即优化迭代时的系数向量和偏置项t.如果 B t B t 1 B t 2 < BetaTolerance ,则优化终止。

如果你还指定DeltaGradientTolerance,当软件满足任意一个停止条件时,优化终止。

中指定的最后一个求解器,如果该软件收敛解算器,则优化终止。否则,软件将使用中指定的下一个求解器解算器

例子:e-6 BetaTolerance, 1

数据类型:|

上下池之间的梯度差公差Karush-Kuhn-Tucker (KKT)互补条件违规者,指定为逗号分隔的对,由“DeltaGradientTolerance”一个非负标量。DeltaGradientTolerance适用于“双重”的价值解算器只有。

  • 如果KKT违反者的量级小于DeltaGradientTolerance,然后fitrlinear终止优化。

  • 如果fitrlinear中指定的最后一个求解器收敛解算器,则优化终止。否则,fitrlinear中指定的下一个求解器解算器

例子:依照“DeltaGapTolerance”,1

数据类型:|

在下一次收敛检查之前,通过整个数据集要处理的次数,指定为由逗号分隔的对组成的“NumCheckConvergence”一个正整数。

例子:“NumCheckConvergence”,100年

数据类型:|

通过数据的最大次数,指定为逗号分隔的对,由“PassLimit”一个正整数。

当软件完成对数据的一次处理时,它已经处理了所有的观察结果。

当软件通过数据时PassLimit多次,它会终止优化。

例子:“PassLimit”,5

数据类型:|

用于优化收敛检测的验证数据,指定为由逗号分隔的对组成“ValidationData”一个单元格数组或表格。

在优化过程中,软件定期估计损失ValidationData.如果验证数据丢失增加,则软件终止优化。详情请参见算法.若要使用交叉验证优化超参数,请参阅交叉验证选项,例如CrossVal

你可以指定ValidationData如果你用桌子的话,就像桌子一样资源描述包含响应变量的预测器数据。在这种情况下,ValidationData必须包含相同的预测器和响应包含在资源描述.该软件不会对观察结果施加权重,即使资源描述包含一个权重向量。要指定权重,必须指定ValidationData作为单元格数组。

如果你指定ValidationData作为单元格数组,它必须具有以下格式:

  • ValidationData {1}必须具有与预测器数据相同的数据类型和方向。也就是说,如果你使用预测矩阵X,然后ValidationData {1}一定是米——- - - - - -p或p——- - - - - -米具有相同方向的预测器数据的完整或稀疏矩阵X.训练数据中的预测变量X而且ValidationData {1}必须对应。类似地,如果你使用预测表资源描述那么,预测者的数据ValidationData {1}必须是包含相同预测变量的表资源描述.的观测数ValidationData {1}而且预测数据可能会有所不同。

  • ValidationData {2}必须匹配响应变量的数据类型和格式吗YResponseVarName.如果ValidationData {2}是一个响应的数组,那么它必须有相同数量的元素和观察的数量ValidationData {1}.如果ValidationData {1}那是桌子吗ValidationData {2}可以是表中响应变量的名称。如果你想用同样的ResponseVarName公式,您可以指定ValidationData {2}作为[]

  • 您可以指定ValidationData {3}作为一个米-维数向量的观测权重或表中变量的名称ValidationData {1}这包含了观察权重。该软件用验证数据规范化权重,使它们的和为1。

如果你指定ValidationData并且要在命令行上显示验证损失,请为其指定大于0的值详细的

中指定的最后一个求解器,如果该软件收敛解算器,则优化终止。否则,软件将使用中指定的下一个求解器解算器

默认情况下,软件不会通过监测验证数据丢失来检测收敛性。

BFGS, LBFGS和SpaRSA收敛控件

全部折叠

对线性系数和偏置项(截距)的相对公差,指定为逗号分隔的对,由“BetaTolerance”一个非负标量。

B t β t b t ,即优化迭代时的系数向量和偏置项t.如果 B t B t 1 B t 2 < BetaTolerance ,则优化终止。

如果你还指定GradientTolerance,当软件满足任意一个停止条件时,优化终止。

中指定的最后一个求解器,如果该软件收敛解算器,则优化终止。否则,软件将使用中指定的下一个求解器解算器

例子:e-6 BetaTolerance, 1

数据类型:|

绝对梯度公差,指定为由逗号分隔的对组成“GradientTolerance”一个非负标量。

t 为目标函数相对于优化迭代时的系数和偏差项的梯度向量t.如果 t 马克斯 | t | < GradientTolerance ,则优化终止。

如果你还指定BetaTolerance,当软件满足任意一个停止条件时,优化终止。

如果软件收敛于软件中指定的最后一个求解器,则优化终止。否则,软件将使用中指定的下一个求解器解算器

例子:e-5 GradientTolerance, 1

数据类型:|

黑森近似的历史缓冲区大小,指定为逗号分隔的对,由“HessianHistorySize”一个正整数。也就是说,在每次迭代中,软件使用最新的统计数据组成黑森HessianHistorySize迭代。

软件不支持金宝app“HessianHistorySize”SpaRSA。

例子:“HessianHistorySize”,10

数据类型:|

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

例子:“IterationLimit”,500年

数据类型:|

用于优化收敛检测的验证数据,指定为由逗号分隔的对组成“ValidationData”一个单元格数组或表格。

在优化过程中,软件定期估计损失ValidationData.如果验证数据丢失增加,则软件终止优化。详情请参见算法.若要使用交叉验证优化超参数,请参阅交叉验证选项,例如CrossVal

你可以指定ValidationData如果你用桌子的话,就像桌子一样资源描述包含响应变量的预测器数据。在这种情况下,ValidationData必须包含相同的预测器和响应包含在资源描述.该软件不会对观察结果施加权重,即使资源描述包含一个权重向量。要指定权重,必须指定ValidationData作为单元格数组。

如果你指定ValidationData作为单元格数组,它必须具有以下格式:

  • ValidationData {1}必须具有与预测器数据相同的数据类型和方向。也就是说,如果你使用预测矩阵X,然后ValidationData {1}一定是米——- - - - - -p或p——- - - - - -米具有相同方向的预测器数据的完整或稀疏矩阵X.训练数据中的预测变量X而且ValidationData {1}必须对应。类似地,如果你使用预测表资源描述那么,预测者的数据ValidationData {1}必须是包含相同预测变量的表资源描述.的观测数ValidationData {1}而且预测数据可能会有所不同。

  • ValidationData {2}必须匹配响应变量的数据类型和格式吗YResponseVarName.如果ValidationData {2}是一个响应的数组,那么它必须有相同数量的元素和观察的数量ValidationData {1}.如果ValidationData {1}那是桌子吗ValidationData {2}可以是表中响应变量的名称。如果你想用同样的ResponseVarName公式,您可以指定ValidationData {2}作为[]

  • 您可以指定ValidationData {3}作为一个米-维数向量的观测权重或表中变量的名称ValidationData {1}这包含了观察权重。该软件用验证数据规范化权重,使它们的和为1。

如果你指定ValidationData并且要在命令行上显示验证损失,请为其指定大于0的值详细的

中指定的最后一个求解器,如果该软件收敛解算器,则优化终止。否则,软件将使用中指定的下一个求解器解算器

默认情况下,软件不会通过监测验证数据丢失来检测收敛性。

Hyperparameter优化

全部折叠

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

  • “没有”-不要优化。

  • “汽车”——使用{“λ”、“学习者”}

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

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

  • 向量的optimizableVariable对象的输出hyperparameters

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

请注意

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

符合条件的参数fitrlinear是:

  • λ- - - - - -fitrlinear在正数值中搜索,默认情况下在范围内按对数缩放[1 e-5 / NumObservations 1 e5 / NumObservations]

  • 学习者- - - - - -fitrlinear搜索中“支持向量机”而且“leastsquares”

  • 正则化- - - - - -fitrlinear搜索中“岭”而且“套索”

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

负载carsmallParams =超参数(“fitrlinear”(功率、重量),MPG);参数(1)。Range = [1e-3,2e4];

通过参数个数作为价值OptimizeHyperparameters

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

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

例子:“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)

数据类型:结构体

输出参数

全部折叠

训练过的线性回归模型,返回为RegressionLinear模型对象或RegressionPartitionedLinear交叉验证的模型对象。

如果您设置了任何名称-值对参数KFold坚持CrossVal,或CVPartition,然后Mdl是一个RegressionPartitionedLinear交叉验证的模型对象。否则,Mdl是一个RegressionLinear模型对象。

引用Mdl,使用点表示法。例如,输入Mdl。β在命令窗口显示估计系数的矢量或矩阵。

请注意

与其他回归模型不同,为了节省内存使用,RegressionLinear而且RegressionPartitionedLinear模型对象不存储训练数据或优化细节(例如,收敛历史)。

优化细节,作为结构数组返回。

字段指定最终值或名称-值对参数规范,例如,客观的是优化结束时目标函数的值。的值对应的多维字段行λ列对应于的值解算器

该表描述了一些值得注意的字段。

描述
TerminationStatus
  • 优化终止原因

  • 中的值TerminationCode

FitTime 时间流逝,以秒为单位
历史

每个迭代的优化信息的结构数组。这个领域解算器存储使用整数编码的求解器类型。

整数 解算器
1 SGD
2 ASGD
3. 支持向量机的双SGD
4 LBFGS
5 高炉煤气
6 SpaRSA

要访问字段,使用点表示法。例如,要访问每个迭代的目标函数值的向量,请输入FitInfo.History.Objective

检查是一种很好的做法FitInfo评估收敛是否令人满意。

超参数的交叉验证优化,返回为BayesianOptimization对象或超参数及相关值的表。的值时,输出为非空“OptimizeHyperparameters”不是“没有”.输出值取决于优化器字段的值。“HyperparameterOptimizationOptions”名称-值对参数:

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

请注意

如果学习者“leastsquares”,则目标函数中的损失项为MSE的一半。损失默认情况下返回MSE。因此,如果你使用损失来检查替换,或训练,错误,然后有一个差异之间的MSE返回损失优化的结果是FitInfo或通过使用设置一个正的详细级别返回到命令行详细的

更多关于

全部折叠

温暖的开始

一个温暖的开始是beta系数和偏差项的初始估计,提供给优化例程,以实现更快的收敛。

低维数据的替代方案

高维线性分类和回归模型相对快速地最小化目标函数,但代价是一定的准确性,只有数字预测变量的限制,并且模型必须是相对于参数的线性。如果您的预测器数据集是低维到中维,或包含异质变量,那么您应该使用适当的分类或回归拟合函数。为了帮助您决定哪个拟合函数适合您的低维数据集,请使用此表。

适合的模型 函数 显著的算法差异
支持向量机
  • 计算预测变量的Gram矩阵,便于进行非线性核变换。

  • 使用SMO, ISDA或l1通过二次规划最小化quadprog(优化工具箱)

线性回归
  • 无正则化的最小二乘:fitlm

  • 使用套索惩罚的正则化最小二乘:套索

  • 岭回归:套索

  • 套索实现循环坐标下降。

逻辑回归
  • 无正则化逻辑回归:fitglm

  • 使用套索惩罚的正则化逻辑回归:lassoglm

  • fitglm实现迭代重加权最小二乘。

  • lassoglm实现循环坐标下降。

提示

  • 最好的做法是确定预测矩阵的方向,使观察值与列相对应,并进行指定“ObservationsIn”、“列”.因此,您可以体验到优化执行时间的显著减少。

  • 如果你的预测数据只有很少的观测值,但有很多预测变量,那么:

    • 指定“PostFitBias”,真的

    • 对于SGD或ASGD求解器,设置PassLimit一个大于1的正整数,例如,5或10。这种设置通常会产生更好的准确性。

  • 对于SGD和ASGD求解器,BatchSize影响收敛速度。

    • 如果BatchSize太小了,是吗fitrlinear在多次迭代中达到最小值,但每次迭代快速计算梯度。

    • 如果BatchSize太大了吗fitrlinear在较少的迭代中达到最小值,但每次迭代计算梯度较慢。

  • 高学习率(见LearnRate)加速收敛到最小值,但可能导致发散(即超过最小值)。小的学习率确保收敛到最小,但可能导致缓慢的终止。

  • 当使用套索惩罚,试验不同的值TruncationPeriod.例如,setTruncationPeriod110,然后One hundred.

  • 为了提高效率,fitrlinear没有标准化预测器数据。标准化X,输入

    X = bsxfun (@rdivide bsxfun (@minus X,意味着(X, 2)),性病(0,2));

    代码要求将预测器和观察值定向为的行和列X,分别。此外,为了节省内存使用,代码将原始预测数据替换为标准化数据。

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

算法

  • 如果你指定ValidationData,则在目标函数优化过程中:

    • fitrlinear估计的验证损失ValidationData定期使用当前模型,并跟踪最小估计值。

    • fitrlinear估计验证损失,它将估计与最小估计进行比较。

    • 当随后验证损失估计超过最小估计5倍时,fitrlinear终止优化。

  • 如果你指定ValidationData要实现交叉验证例程(CrossValCVPartition坚持,或KFold),那么:

    1. fitrlinear随机分区X而且Y(或资源描述)根据您选择的交叉验证程序。

    2. fitrlinear使用训练数据分区训练模型。在目标函数优化过程中,fitrlinear使用ValidationData作为终止优化的另一种可能的方法(有关详细信息,请参阅前面的项目)。

    3. 一次fitrlinear在满足停车准则的前提下,基于优化后的线性系数和截距构建训练模型。

      1. 如果你实现k-fold交叉验证,以及fitrlinear那么还没有用尽所有的训练集折叠fitrlinear返回到步骤2,使用下一个训练集折叠进行训练。

      2. 否则,fitrlinear终止训练,然后返回交叉验证的模型。

    4. 您可以确定交叉验证模型的质量。例如:

      • 要使用步骤1中的保留数据或折叠外数据确定验证损失,请将交叉验证的模型传递给kfoldLoss

      • 为了预测第1步中对残留数据或折叠外数据的观察结果,将交叉验证的模型传递给kfoldPredict

参考文献

[1]何超海、林超杰。“大规模线性支持向量回归。”金宝app机器学习研究杂志, Vol. 13, 2012, pp. 3323-3348。

[2]谢长杰,张桂文,林长杰,s.s. Keerthi, s.s Sundararajan。大规模线性支持向量机的双坐标下降方法。第25届国际机器学习会议论文集,ICML ' 08, 2001, pp. 408-415。

[3] Langford, J., Li ., and T. Zhang。“通过截断梯度的稀疏在线学习。”j·马赫。学习。Res。, Vol. 10, 2009, pp. 777-801。

[4]诺西德尔,J.和S. J.赖特。数值优化,第二版,纽约:施普林格,2006。

[5]沙利夫-施瓦兹,S. Y.辛格和N.斯雷布罗。Pegasos:支持向量机的原始估计次梯度求解器第24届机器学习国际会议论文集,ICML ' 07, 2007,第807-814页。

[6]赖特,S. J. R. D.诺瓦克,M. A. T.菲格雷多。"可分离近似的稀疏重建"反式。Proc团体。,卷57,第7期,2009,第2479-2493页。

小,林。正则化随机学习和在线优化的双平均方法j·马赫。学习。Res。, Vol. 11, 2010, pp. 2543-2596。

徐伟。“用平均随机梯度下降法实现最优一次大规模学习”相关系数, abs/1107.2490, 2011。

扩展功能

在R2016a中引入