对高维数据拟合线性回归模型
Fitrinear.
使用高维、完整或稀疏的预测数据有效地训练线性回归模型。可用的线性回归模型包括正则化支持向量机(SVM)和最小二乘回归方法。金宝appFitrinear.
使用减少计算时间的技术(例如,随机梯度下降)最小化目标函数。
为了减少在包含多个预测变量的高维数据集上的计算时间,可以通过使用来训练线性回归模型Fitrinear.
.有关低至中维预测数据集,请参阅低维数据的替代方案.
[
传递参数时,还返回超参数优化细节Mdl
,FitInfo.
,HyperparameterOptimizationResults
) = fitrlinear (___)OptimizeHyperparameters
名称-值对。
使用支持向量机、双SGD和脊正则化训练线性回归模型。
从这个模型中模拟10000次观测
是一个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);
训练线性回归模型。默认情况下,Fitrinear.
使用带岭惩金宝app罚的支持向量机,并使用双SGD对SVM进行优化。通过提取拟合摘要确定优化算法使模型与数据拟合的程度。
[Mdl, FitInfo] = fitrlinear (X, Y)
Mdl=RegressionLinear ResponseName:'Y'ResponseTransform:'none'Beta:[1000x1 double]偏差:-0.0056 Lambda:1.0000e-04学习者:“svm”属性、方法
FitInfo =带字段的结构:Lambda: 1.0000e-04 Objective: 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] History: [] FitTime: 0.7623 Solver: {'dual'}
Mdl
是一个RegressionLinear
模特,你可以通过Mdl
和培训或新数据损失
检验样本内均方误差。或者,你可以不去Mdl
和新的预测数据预测
来预测对新观测的反应。
FitInfo.
是一个结构数组,其中包含终止状态(TerminationStatus
)以及求解器将模型与数据拟合所需的时间(FitTime
).这是很好的实践FitInfo.
确定优化终止测量是否令人满意。在这种情况下,Fitrinear.
达到最大迭代次数。因为训练时间很快,所以可以重新训练模型,但是增加数据的传递次数。或者,尝试另一个解算器,如LBFGS。
为了确定一个好的套索惩罚强度的线性回归模型使用最小二乘法,实施5倍交叉验证。
从这个模型中模拟10000次观测
是一个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个对数间隔的正则化强度 通过 .
λ=对数空间(-5,-1,15);
旨在模型。要提高执行速度,可以调换预测器数据并指定观察结果在列中。利用SpaRSA优化目标函数。
X = X ';CVMdl = fitrlinear (X, Y,“ObservationsIn”,“专栏”,“KFold”5,“λ”λ,...“学习者”,“leastsquares”,“规划求解”,'sparsa',“正规化”,“套索”);numCLModels =元素个数(CVMdl.Trained)
numCLModels = 5
CVMdl
是一个RegressionPartitionedLinear
模型。因为Fitrinear.
实现5倍交叉验证,CVMdl
包含5RegressionLinear
软件在每次折叠时训练的模型。
显示第一个训练的线性回归模型。
Mdl1 = CVMdl。训练有素的{1}
Mdl1 = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x15 double] Bias: [1x15 double] Lambda: [1x15 double]初学者:'最小二乘'属性,方法
MDL1
是一个RegressionLinear
模型对象。Fitrinear.
构造MDL1
通过前四个折叠训练。因为兰姆达
你能想到一个正规化强度的序列吗MDL1
作为15型号,一个用于每个正则化强度兰姆达
.
估计交叉验证的MSE。
mse=kfoldLoss(CVMdl);
更高的值兰姆达
导致预测变量的稀疏性,这是回归模型的一个很好的品质。对于每个正则化强度,使用整个数据集和交叉验证模型时相同的选项来训练线性回归模型。确定每个模型的非零系数的数目。
Mdl = fitrlinear (X, Y,“ObservationsIn”,“专栏”,“λ”λ,...“学习者”,“leastsquares”,“规划求解”,'sparsa',“正规化”,“套索”);numNZCoeff = (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} nonzero-coefficient频率”)包含(“log_{10}λ的)举行从
选择平衡预测变量稀疏性和低MSE的正则化强度指标(例如,λ(10)
).
idxFinal = 10;
提取对应最小MSE的模型。
idxFinal MdlFinal = selectModels (Mdl)
MdlFinal = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0050 Lambda: 0.0037初学者:'最小二乘'属性,方法
idxNZCoeff =找到(MdlFinal.Beta ~ = 0)
idxNZCoeff =2×1100 200
EstCoeff = Mdl.Beta (idxNZCoeff)
EstCoeff =2×11.0051 - 1.9965
MdlFinal
是一个RegressionLinear
具有一个正则化强度的模型。非零系数EstCoeff
接近模拟数据的系数。
此示例演示如何使用自动优化超参数Fitrinear.
.该示例为模型使用了人工(模拟)数据
是一个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 =结构(“AcquisitionFunctionName”,“expected-improvement-plus”);(Mdl FitInfo HyperparameterOptimizationResults] = fitrlinear (X, Y,...'OptimizeHyperParameters',“汽车”,...“HyperparameterOptimizationOptions”hyperopts)
|=====================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar |λ|学生| | | |结果日志(1 +损失)运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.16029 | 0.41774 | 0.16029 | 0.16029 | 2.4206 e-09 svm | |
| 2 | Best | 0.14496 | 0.32058 | 0.14496 | 0.14601 | 0.001807 | svm |
|3 |最佳| 0.13879 | 0.28024 | 0.13879 | 0.14065 | 2.4681e-09 |租赁方|
| 4 | Best | 0.115 | 0.27266 | 0.115 | 0.11501 | 0.021027 |最小二乘|
| 5 |接受| 0.44352 | 0.27558 | 0.115 | 0.1159 | 4.6795 |最小二乘|
|6 |最佳| 0.11025 | 0.27333 | 0.11025 | 0.11024 | 0.010671 |租赁方|
| 7 |接受| 0.13222 | 0.27212 | 0.11025 | 0.11024 | 8.6067e-08 |最小二乘|
| 8 |接受| 0.13262 | 0.26992 | 0.11025 | 0.11023 | 8.5109e-05 |最小二乘|
| 9 |接受| 0.13543 | 0.2732 | 0.11025 | 0.11021 | 2.7562 -06 |最小二乘|
| 10 |接受| 0.15751 | 0.34766 | 0.11025 | 0.11022 | 5.0559e-06 | svm |
|11 |接受| 0.40673 | 0.32948 | 0.11025 | 0.1102 | 0.52074 | svm|
| 12 |接受| 0.16057 | 0.33499 | 0.11025 | 0.1102 | 0.00014292 | svm |
| 13 |接受| 0.16105 | 0.33584 | 0.11025 | 0.11018 | 1.0079e-07 | svm |
| 14 |接受| 0.12763 | 0.27263 | 0.11025 | 0.11019 | 0.0012085 |最小二乘|
| 15 |接受| 0.13504 | 0.27125 | 0.11025 | 0.11019 | 1.3981e-08 |最小二乘|
|16 |接受|0.11041 |0.27367 |0.11025 |0.11026 |0.0093968 |最小要条件|
| 17 |最佳| 0.10954 | 0.27352 | 0.10954 | 0.11003 | 0.010393 |最小二乘|
| 18 |接受| 0.10998 | 0.2712 | 0.10954 | 0.11002 | 0.010254 |最小二乘|
| 19 | Accept | 0.45314 | 0.27275 | 0.10954 | 0.11001 | 9.9932 | svm |
| 20 | Best | 0.10753 | 0.33512 | 0.10753 | 0.10759 | 0.022576 | svm |
|=================================================================================================================================================================================Iter评估目标:目标:Sofar | Sofar | Sofar | Lambda |学习者|观察到的结果|| | | |===================================================================================================================================================================================================21===最佳===0.10737===0.33440|
|22 |接受| 0.13448 | 0.28528 | 0.10737 | 0.10727 | 1.5344e-05 |租赁方|
| 23 | Best | 0.10645 | 0.33892 | 0.10645 | 0.10565 | 0.015495 | svm |
| 24 |接受| 0.13598 | 0.27017 | 0.10645 | 0.10559 | 4.5984e-07 |最小二乘|
|25 |接受|0.15962 |0.3451 |0.10645 |0.10556 |1.4302E-08 |SVM |
|26 |接受| 0.10689 | 0.33135 | 0.10645 | 0.10616 | 0.015391 ||
| 27 |接受| 0.13748 | 0.26642 | 0.10645 | 0.10614 | 1.001e-09 |最小二乘|
| 28 | Accept | 0.10692 | 0.33264 | 0.10645 | 0.10639 | 0.015761 | svm |
| 29 | Accept | 0.10681 | 0.32913 | 0.10645 | 0.10649 | 0.015777 | svm |
| 30 |接受| 0.34314 | 0.26817 | 0.10645 | 0.10651 | 0.39671 |最小二乘|
__________________________________________________________优化完成。MaxObjectiveEvaluations达到30。总功能评估:30总运行时间:29.0513秒。总目标功能评估时间:9.0751最佳观察可行点:Lambda Learner\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0.0154950548329524 svm观察对象ive函数值=0.10645估计目标函数值=0.10651函数评估时间=0.33892最佳估计可行点(根据模型):Lambda Learner(Lambda Learner)(Lambda Learner)(Lambda Learner)(Lambda Learner)(Lambda Learner)(Lambda Learner)()()())()U
Mdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000×1 double] Bias: -0.001764448684672 Lambda: 0.015777492256035 Learner: 'svm'属性,方法
FitInfo =带字段的结构:0.015777492256035λ:目的:0.230889727364096 PassLimit: 10 NumPasses: 10 BatchLimit: [] NumIterations: 99989 GradientNorm:南GradientTolerance: 0 RelativeChangeInBeta: 0.064063563056079 BetaTolerance: 1.000000000000000 e-04 DeltaGradient: 1.169701423362251 DeltaGradientTolerance: 0.100000000000000 TerminationCode: 0 TerminationStatus:{“迭代超过限制。'}一个lpha: [10000×1 double] History: [] FitTime: 0.050041900000000 Solver: {'dual'}
HyperParameterOptimationResults =具有属性的贝叶斯optimization:ObjectiveFCN:@ createobjfcn / Inmemoryobjfcn Variabledsions:[3×1优化variable]选项:[1×1结构] minobjective:0.106451249084752 Xatminobjective:[1×2表] minestimatedobive:0.10650544701403 XatmineStimatedobjective:[1×2表]numObjectiveValuations:30总计迭代图中:[30×1双] errortrace:[30×1双]可行性议事:[30×1逻辑]可行性推动力:[30×1双]索引:[30×1双] objectivemimumimumImimumImimumimumimumImimumImimumimumImimumImimumimumImimumimumImumImimumImimumImimumImimumimumImimumImimumImimumImimumimumInum:[30×1双]
这种优化技术比图中所示的更简单使用交叉验证找到好的套索惩罚,但不允许您权衡模型复杂性和交叉验证损失。
X
- - - - - -预测数据预测器数据,指定为
的长度Y
观察的次数X
必须是相等的。
如果调整预测矩阵的方向,使观测值与列相对应,并指定“ObservationsIn”、“列”
,则您可能会体验到优化执行时间的显著减少。
数据类型:单
|双
Y
- - - - - -响应数据响应数据,指定为Y
观察的次数X
必须是相等的。
数据类型:单
|双
Fitrinear.
删除缺失的观察,即与这些特征中的任何一个观察结果:
楠
答复中的要素(Y
或ValidationData
{2}
)
至少有一个楠
在预测器观察值(行X
或ValidationData {1}
)
楠
价值或0
重量(权重
或ValidationData {3}
)
为了节省内存使用,最好的做法是在训练前手动从训练数据中删除包含缺失值的观察值。
指定可选的逗号分隔的字符对名称、值
参数。的名字
是参数名称和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
Mdl = fitrlinear (X, Y,“学习者”,“leastsquares”、“CrossVal”,“对”,“正规化”,“套索”)
指定实现最小二乘回归,实现10倍交叉验证,并指定包括套索正则化术语。
不能将任何交叉验证名称-值对参数与'OptimizeHyperParameters'
名称-值对的论点。可以为。修改交叉验证'OptimizeHyperParameters'
只有使用“HyperparameterOptimizationOptions”
名称-值对的论点。
‘ε’
- - - - - -epsilon不敏感带的一半iqr(Y)/13.49
(默认)|负的标量值不敏感带宽度的一半,指定为由逗号分隔的对组成‘ε’
和一个非负标量值。‘ε’
仅适用于SVM学习者。
默认值埃斯利昂
值是iqr(Y)/13.49
,这是使用响应变量的四分位范围估计的标准差Y
.如果IQR(Y)
等于0,那么默认值呢埃斯利昂
值是0.1。
例子:‘ε’,0.3
数据类型:单
|双
“λ”
- - - - - -正则化项的力量“汽车”
(默认)|负的标量|非负值向量正则化项强度,指定为逗号分隔对,包括“λ”
和“汽车”
,一个非负标量,或非负值的向量。
例子:“λ”,10 ^ (- (10:2:2))
数据类型:字符
|字符串
|双
|单
“学习者”
- - - - - -线性回归模型型“支持向量机”
(默认)|“leastsquares”
线性回归模型类型,指定为逗号分隔对组成“学习者”
和“支持向量机”
或“leastsquares”
.
在这张表中,
β是向量
x是来自
b是标量偏差。
价值 | 算法 | 响应范围 | 损失函数 |
---|---|---|---|
“leastsquares” |
普通最小二乘线性回归 | y∊(-∞∞) | 平均方形错误(MSE): |
“支持向量机” |
金宝app支持向量机回归 | 一样“leastsquares” |
ε不敏感: |
例子:“学习者”,“leastsquares”
“ObservationsIn”
- - - - - -预测数据观测维数“行”
(默认)|“专栏”
预测器数据观测维数,由指定的逗号分隔对组成“ObservationsIn”
和“专栏”
或“行”
.
如果调整预测矩阵的方向,使观测值与列相对应,并指定“ObservationsIn”、“列”
,则您可能会体验到优化执行时间的显著减少。
“规划求解”
- - - - - -目标函数最小化技术“sgd”
|“asgd”
|“双重”
|“蓄热”
|“lbfgs”
|'sparsa'
|字符串数组|字符向量的单元格数组目标函数最小化技术,指定为逗号分隔对组成“规划求解”
以及字符向量或字符串标量、字符串数组或字符向量单元格数组。
价值 | 描述 | 限制 |
---|---|---|
“sgd” |
随机梯度下降法[5][3] | |
“asgd” |
平均随机梯度下降[8] | |
“双重” |
支持向量机的对偶SGD[2][7] | 正则化 必须“岭” 和学习者 必须“支持向量机” . |
“蓄热” |
Broyden-Fletcher-Goldfarb-Shanno拟牛顿算法[4] | 无效如果X 是非常高维的。 |
“lbfgs” |
内存有限bfg (LBFGS)[4] | 正则化 必须“岭” . |
'sparsa' |
可分离近似稀疏重建(SpaRSA)[6] | 正则化 必须“套索” . |
如果您指定:
岭罚(见正则化
),大小(X, 1) < = 100
(100或更少的预测变量),则默认解算器为“蓄热”
.
支持向量机回归模型(见学习者
),山脊罚分,以及大小(X, 1) > 100
(超过100个预测变量),则默认解算器为“双重”
.
一个套索惩罚和X
包含100或更少的预测变量,则默认解算器为'sparsa'
.
否则,默认解算器为“sgd”
.
如果指定求解器名称的字符串数组或单元格数组,则软件将按照每个求解器的指定顺序使用所有求解器兰姆达
.
有关选择哪个求解器的详细信息,请参见提示.
例子:“规划求解”,{‘sgd’,‘lbfgs}
“β”
- - - - - -初始线性系数估计0 (p
, 1)
(默认)|数值向量|数值矩阵初始线性系数估计值(“β”
和一个X
和兰姆达
).
如果你指定
该软件优化使用β
的初始值和最小值兰姆达
为正规化强度。
该软件再次优化使用的结果估计从以前的优化作为温暖的开始的下一个最小值兰姆达
为正规化强度。
软件执行步骤2,直到它耗尽所有的值兰姆达
.
如果你指定j
,该软件使用β(:,
作为初始值,在排序之后j
)兰姆达
按升序,使用Lambda(
为正规化强度。j
)
如果你设置'求解','dual'
,软件就会忽略β
.
数据类型:单
|双
“偏见”
- - - - - -最初的拦截估计“FitBias”
- - - - - -线性模型截距包含标志真正的
(默认)|错误的
线性模型截距包含标志,指定为逗号分隔对组成“FitBias”
和真正的
或错误的
.
价值 | 描述 |
---|---|
真正的 |
该软件包括偏见术语 |
错误的 |
该软件集 |
例子:“FitBias”,假的
数据类型:逻辑
“详细”
- - - - - -冗长的水平0
(默认)|非负整数详细程度,指定为逗号分隔对,由“详细”
和一个非负整数。冗长的
控制诊断信息的数量Fitrinear.
显示在命令行。
价值 | 描述 |
---|---|
0 |
Fitrinear. 不显示诊断信息。 |
1 |
Fitrinear. 定期显示和存储目标函数值、梯度大小和其他诊断信息。FitInfo.历史 包含诊断信息。 |
任何其他正整数 | Fitrinear. 在每次优化迭代时显示和存储诊断信息。FitInfo.历史 包含诊断信息。 |
例子:“详细”,1
数据类型:双
|单
“BatchSize”
- - - - - -Mini-batch大小小批量大小,指定为逗号分隔的对,由“BatchSize”
一个正整数。在每次迭代中,该软件估计次梯度使用BatchSize
从训练数据中观察。
如果X
是一个数字矩阵,那么默认值是10
.
如果X
是稀疏矩阵,那么默认值是马克斯([10日装天花板(sqrt (ff))))
,在那里ff =元素个数(X) / nnz (X)
(X
).
例子:“BatchSize”,100年
数据类型:单
|双
“LearnRate”
- - - - - -学习率学习率,指定为逗号分隔对组成“LearnRate”
一个正标量。学习者
指定每次迭代要执行多少步骤。在每次迭代中,梯度指定了每一步的方向和大小。
如果正则化
是“岭”
, 然后学习者
初始学习率
如果正则化
是“套索”
,那么,对于所有的迭代,学习者
是恒定的。
默认情况下,学习者
是1/sqrt(1+最大值(总和X^2,obsDim)))
,在那里讨厌的
是1
如果观察组成的列X
,2
否则。
例子:“LearnRate”,0.01
数据类型:单
|双
“优化学习率”
- - - - - -旗帜减少学习率真正的
(默认)|错误的
当软件检测到偏离(即超过最小值)时,降低学习率的标志,指定为逗号分隔对组成“优化学习率”
和真正的
或错误的
.
如果OptimizeLearnRate
是“真正的”
,然后:
对于少量的优化迭代,软件开始优化使用学习者
作为学习率。
如果目标函数的值增加,则软件重新启动,并使用当前学习率值的一半。
软件迭代第2步,直到目标函数减小。
例子:“OptimizeLearnRate”,真的
数据类型:逻辑
“TruncationPeriod”
- - - - - -套索截断运行之间的小批量数量10
(默认)|正整数“重量”
- - - - - -观察权重那些(n1) /n
(默认)|正数的数值向量观察权重,指定为逗号分隔对,由“重量”
和一个正的数值向量。Fitrinear.
权衡观察结果X
在中具有相应的值权重
.的大小权重
必须等于X
.
Fitrinear.
规范化权重
总计为1。
数据类型:双
|单
“ResponseName”
- - - - - -响应变量名“Y”
(默认)|特征向量|字符串标量响应变量名,指定为逗号分隔对,由“ResponseName”
以及字符向量或字符串标量。
如果你提供Y
,则可以使用“ResponseName”
为响应变量指定名称。
如果你提供ResponseVarName
或公式
,则不能使用“ResponseName”
.
例子:“ResponseName”,“response”
数据类型:字符
|字符串
“ResponseTransform”
- - - - - -响应转换“没有”
(默认)|函数处理响应转换,指定为逗号分隔的对,由“ResponseTransform”
,要么“没有”
或者函数句柄。默认值是“没有”
, 意思是@(y) y
,或者不变换。对于一个MATLAB®函数或你定义的函数,使用它的函数句柄。函数句柄必须接受一个向量(原始响应值)并返回一个大小相同的向量(转换后的响应值)。
例子:假设您创建了一个函数句柄,该句柄对输入向量应用指数变换myfunction = @ (y) exp (y)
。然后,您可以将响应转换指定为myfunction ResponseTransform,
.
数据类型:字符
|字符串
|function_handle
'横向'
- - - - - -交叉验证标志“关闭”
(默认)|“上”
交叉验证标志,指定为逗号分隔对,由“克罗斯瓦尔”
和“上”
或“关闭”
.
如果您指定“上”
然后软件实现了10次交叉验证。
要覆盖此交叉验证设置,请使用以下名称-值对参数之一:CVPartition
,坚持
,或KFold
.要创建交叉验证模型,一次只能使用一个交叉验证名称-值对参数。
例子:“Crossval”,“上”
“CVPartition”
- - - - - -交叉验证分区[]
(默认)|CVPartition.
分区对象交叉验证分区,指定为逗号分隔的对,由“CVPartition”
和一个CVPartition.
创建的分区对象CVPartition.
.分区对象指定交叉验证的类型,以及训练和验证集的索引。
“坚持”
- - - - - -保留验证的数据分数用于拒绝验证的数据的一部分,指定为逗号分隔对,由“坚持”
和范围(0,1)的标量值。如果您指定“坚持”,
,则软件:p
随机储备
%的数据作为验证数据,并使用其余的数据训练模型p
* 100
存储在紧凑的,训练过的模型训练有素的
交叉验证模型的性质。
要创建一个交叉验证的模型,您只能使用以下四个选项中的一个:'
CVPartition
'
,'
坚持
'
,或'
KFold
'
.
例子:“坚持”,0.1
数据类型:双
|单
“KFold”
- - - - - -数量的折叠10
(默认)|大于1的正整数要在交叉验证的分类器中使用的折叠数,指定为逗号分隔对,由“KFold”
和一个大于1的正整数。如果你指定,例如:“KFold”,
,则软件:
将数据随机划分为
对于每个集合,保留该集合作为验证数据,并使用另一个来训练模型k- 1集
存储k
紧凑,训练有素的模型在细胞k
-by-1细胞载体训练有素的
交叉验证模型的性质。
要创建一个交叉验证的模型,您只能使用以下四个选项中的一个:'
CVPartition
'
,'
坚持
'
,或'
KFold
'
.
例子:“KFold”,8
数据类型:单
|双
“批量限制”
- - - - - -最大批数“Betatoreance”
- - - - - -线性系数和偏差项的相对公差1的军医
(默认)|负的标量线性系数和偏差项(截距)的相对公差,指定为逗号分隔对,包括“Betatoreance”
和一个非负标量。
让
,即优化迭代时的系数向量和偏差项
如果软件收敛于中指定的最后一个解算器解算器
,则优化终止。否则,软件将使用中指定的下一个解算器解算器
.
例子:e-6 BetaTolerance, 1
数据类型:单
|双
“NumCheckConvergence”
- - - - - -在下次收敛检查前要加工的批数下次收敛检查前要处理的批数,指定为逗号分隔对组成“NumCheckConvergence”
一个正整数。
要指定批次大小,请参见BatchSize
.
默认情况下,软件每次通过整个数据集检查10次收敛。
例子:“NumCheckConvergence”,100年
数据类型:单
|双
“验证数据”
- - - - - -优化收敛检测的验证数据用于优化收敛检测的数据,指定为逗号分隔对,由“验证数据”
还有单元格数组。
在优化期间,软件定期估计损失ValidationData
.如果验证数据丢失增加,则软件终止优化。有关详细信息,请参见算法. 要使用交叉验证优化超参数,请参见交叉验证选项,例如CrossVal
.
ValidationData (1)
必须包含一个X
.训练数据中的预测变量X
和ValidationData {1}
必须对应。两组中的观察值数量可能不同。
ValidationData (2)
必须包含的数组ValidationData {1}
.
可选地,ValidationData (3)
可以包含一个
如果您指定ValidationData
,则要在命令行显示验证丢失,请指定大于0的值冗长的
.
如果软件收敛于中指定的最后一个解算器解算器
,则优化终止。否则,软件将使用中指定的下一个解算器解算器
.
默认情况下,该软件不会通过监控验证数据丢失来检测收敛。
“GradientTolerance”
- - - - - -绝对梯度容差1 e-6
(默认)|负的标量'iterationlimit'
- - - - - -最大优化迭代次数1000
(默认)|正整数最大优化迭代次数,指定为逗号分隔对组成'iterationlimit'
一个正整数。IterationLimit
适用于这些值解算器
:“蓄热”
,“lbfgs”
,'sparsa'
.
例子:e7 IterationLimit, 1
数据类型:单
|双
“DeltaGradientTolerance”
- - - - - -Gradient-difference宽容0.1
(默认)|负的标量上下池之间的梯度差公差Karush-Kuhn-Tucker (KKT)互补条件违反者,指定为逗号分隔的对,由“DeltaGradientTolerance”
和一个非负标量。三角形半径公差
适用于“双重”
价值解算器
只有。
如果KKT违反者的大小小于三角形半径公差
, 然后Fitrinear.
终止优化。
如果Fitrinear.
为上次指定的求解器融合解算器
,则优化终止。否则,Fitrinear.
中指定的下一个求解器解算器
.
例子:“DeltaGapTolerance”,1e-2
数据类型:双
|单
“NumCheckConvergence”
- - - - - -下一次收敛检查之前要处理的通过整个数据集的次数5
(默认)|正整数在下一次收敛检查前通过整个数据集进行处理的次数,指定为逗号分隔对组成“NumCheckConvergence”
一个正整数。
例子:“NumCheckConvergence”,100年
数据类型:单
|双
“PassLimit”
- - - - - -最大通过数10
(默认)|正整数通过数据的最大数量通过数据,指定为逗号分隔对“PassLimit”
一个正整数。
当软件完成一个通过数据时,它处理了所有观察。
当软件通过数据时PassLimit
乘以,它终止了优化。
例子:“PassLimit”,5
数据类型:单
|双
“验证数据”
- - - - - -优化收敛检测的验证数据用于优化收敛检测的数据,指定为逗号分隔对,由“验证数据”
还有单元格数组。
在优化期间,软件定期估计损失ValidationData
.如果验证数据丢失增加,则软件终止优化。有关详细信息,请参见算法. 要使用交叉验证优化超参数,请参见交叉验证选项,例如CrossVal
.
ValidationData (1)
必须包含一个X
.训练数据中的预测变量X
和ValidationData {1}
必须对应。两组中的观察值数量可能不同。
ValidationData (2)
必须包含的数组ValidationData {1}
.
可选地,ValidationData (3)
可以包含一个
如果您指定ValidationData
,则要在命令行显示验证丢失,请指定大于0的值冗长的
.
如果软件收敛于中指定的最后一个解算器解算器
,则优化终止。否则,软件将使用中指定的下一个解算器解算器
.
默认情况下,该软件不会通过监控验证数据丢失来检测收敛。
“Betatoreance”
- - - - - -线性系数和偏差项的相对公差1的军医
(默认)|负的标量线性系数和偏差项(截距)的相对公差,指定为逗号分隔对,包括“Betatoreance”
和一个非负标量。
让
,即优化迭代时的系数向量和偏差项
如果您还指定GradientTolerance
,则当软件满足任一停止条件时,优化终止。
如果软件收敛于中指定的最后一个解算器解算器
,则优化终止。否则,软件将使用中指定的下一个解算器解算器
.
例子:e-6 BetaTolerance, 1
数据类型:单
|双
“HessianHistorySize”
- - - - - -用于Hessian近似的历史缓冲区的大小15
(默认)|正整数用于Hessian近似的历史缓冲区的大小,指定为逗号分隔对组成“HessianHistorySize”
一个正整数。也就是说,在每次迭代时,软件使用最新的统计数据组成HessianHessianHistorySize
迭代。
软件不支持金宝app“HessianHistorySize”
SpaRSA。
例子:“HessianHistorySize”,10
数据类型:单
|双
'iterationlimit'
- - - - - -最大优化迭代次数1000
(默认)|正整数最大优化迭代次数,指定为逗号分隔对组成'iterationlimit'
一个正整数。IterationLimit
适用于这些值解算器
:“蓄热”
,“lbfgs”
,'sparsa'
.
例子:“IterationLimit”,500年
数据类型:单
|双
“验证数据”
- - - - - -优化收敛检测的验证数据用于优化收敛检测的数据,指定为逗号分隔对,由“验证数据”
还有单元格数组。
在优化期间,软件定期估计损失ValidationData
.如果验证数据丢失增加,则软件终止优化。有关详细信息,请参见算法. 要使用交叉验证优化超参数,请参见交叉验证选项,例如CrossVal
.
ValidationData (1)
必须包含一个X
.训练数据中的预测变量X
和ValidationData {1}
必须对应。两组中的观察值数量可能不同。
ValidationData (2)
必须包含的数组ValidationData {1}
.
可选地,ValidationData (3)
可以包含一个
如果您指定ValidationData
,则要在命令行显示验证丢失,请指定大于0的值冗长的
.
如果软件收敛于中指定的最后一个解算器解算器
,则优化终止。否则,软件将使用中指定的下一个解算器解算器
.
默认情况下,该软件不会通过监控验证数据丢失来检测收敛。
'OptimizeHyperParameters'
- - - - - -参数优化“没有”
(默认)|“汽车”
|'全部'
|符合条件的参数名称的字符串数组或单元格数组|向量的优化的不变性
对象要优化的参数,指定为逗号分隔对,由'OptimizeHyperParameters'
以及以下其中之一:
“没有”
-不要优化。
“汽车”
——使用{'Lambda','Learner'}
.
'全部'
-优化所有符合条件的参数。
符合条件的参数名称的字符串数组或单元格数组。
向量的优化的不变性
对象的输出hyperparameters
.
优化尝试最小化交叉验证丢失(错误)Fitrinear.
通过改变参数。要控制交叉验证类型和其他方面的优化,请使用HyperparameterOptimizationOptions
名称-值对。
'OptimizeHyperParameters'
值覆盖使用其他名称-值对参数设置的任何值。例如,设置'OptimizeHyperParameters'
来“汽车”
导致“汽车”
值应用。
符合条件的参数Fitrinear.
是:
通过传递的向量来设置非默认参数优化的不变性
具有非默认值的对象。例如,
加载carsmall参数=超参数(“fitrlinear”(功率、重量),MPG);参数(1)。范围= [1 e - 3, 2 e4];
通过参数
作为价值OptimizeHyperparameters
.
默认情况下,在命令行出现迭代显示,并根据优化中超参数的数量出现绘图。对于优化和绘图,目标函数为日志(1+交叉验证丢失)为回归和误分类率为分类。若要控制迭代显示,请设置冗长的
场面的领域“HyperparameterOptimizationOptions”
名称-值对的论点。要控制情节,设置ShowPlots
场面的领域“HyperparameterOptimizationOptions”
名称-值对的论点。
例如,请参见优化线性回归.
例子:“OptimizeHyperparameters”、“汽车”
“HyperparameterOptimizationOptions”
- - - - - -优化选项用于优化的选项,指定为逗号分隔的对,由“HyperparameterOptimizationOptions”
和结构。该参数修改OptimizeHyperparameters
名称-值对参数。结构中的所有字段都是可选的。
字段名 | 价值观 | 违约 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
获取函数的名称包括 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数求值的最大次数。 | 30. 为了“bayesopt” 或“randomsearch” ,和整个网格'gridsearch' |
MaxTime |
正 |
|
NumGridDivisions |
为了'gridsearch' ,表示每个维度中值的数量。该值可以是一个给出每个维度值数量的正整数向量,也可以是适用于所有维度的标量。对于分类变量,该字段被忽略。 |
10 |
ShowPlots |
指示是否显示绘图的逻辑值。如果真正的 ,该域根据迭代次数绘制出最佳目标函数值。如果有一个或两个优化参数,如果优化器 是“bayesopt” , 然后ShowPlots 还根据参数绘制目标函数的模型。 |
真正的 |
保存中间结果 |
表示是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,此字段将覆盖名为“BayesoptResults” 在每一个迭代。变量是aBayesianOptimization 对象。 |
错误的 |
冗长的 |
显示到命令行。
具体操作请参见 |
1 |
使用指α. |
指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行时序的不可再现性,并行贝叶斯优化并不一定产生可再现的结果。有关详细信息,请参见平行的贝叶斯优化. | 错误的 |
重新分区 |
指示是否在每次迭代时重新划分交叉验证的逻辑值。如果
|
错误的 |
使用以下三个字段名中的一个。 | ||
CVPartition |
一个CVPartition. 对象创建的CVPartition. . |
“Kfold”,5 如果您没有指定任何交叉验证字段 |
坚持 |
范围内的标量(0,1) 代表熔断部分。 |
|
Kfold |
大于1的整数。 |
例子:“HyperparameterOptimizationOptions”,结构('MaxObjectiveEvaluations',60)
数据类型:结构
Mdl
-训练线性回归模型RegressionLinear
模型对象|RegressionPartitionedLinear
旨在模型对象训练过的线性回归模型,返回为RegressionLinear
模型对象或RegressionPartitionedLinear
旨在模型对象。
如果您设置任何名称-值对参数KFold
,坚持
,CrossVal
,或CVPartition
, 然后Mdl
是一个RegressionPartitionedLinear
旨在模型对象。否则,Mdl
是一个RegressionLinear
模型对象。
引用Mdl
,使用点表示法。例如,输入Mdl.Beta
,以显示估计系数的矢量或矩阵。
与其他回归模型不同,为了节省内存使用,RegressionLinear
和RegressionPartitionedLinear
模型对象不存储训练数据或优化细节(例如,收敛历史)。
FitInfo.
——优化细节优化细节,作为结构数组返回。
字段指定最终值或名称-值对参数规格,例如,客观的
优化终止时目标函数的值。多维字段的行对应于兰姆达
列对应的值解算器
.
该表描述了一些值得注意的字段。
场地 | 描述 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TerminationStatus |
|
||||||||||||||
FitTime |
流逝,挂钟时间,以秒为单位 | ||||||||||||||
历史 |
每次迭代的优化信息的结构数组。这个领域
|
要访问字段,请使用点符号。例如,要访问每次迭代的目标函数值向量,输入FitInfo.History.Objective
.
这是一个很好的练习FitInfo.
评估收敛是否令人满意。
HyperparameterOptimizationResults
-超参数的交叉验证优化BayesianOptimization
对象|超参数和关联值表超参数的交叉验证优化,返回为aBayesianOptimization
对象或超参数和关联值的表。当'OptimizeHyperParameters'
不是“没有”
. 输出值取决于优化器
的字段值“HyperparameterOptimizationOptions”
名称-值对论点:
的价值优化器 场地 |
的价值HyperparameterOptimizationResults |
---|---|
“bayesopt” (默认) |
类的对象BayesianOptimization |
'gridsearch' 或“randomsearch” |
使用的超参数表,观测到的目标函数值(交叉验证损失),以及观测值从最低(最好)到最高(最差)的排序 |
如果学习者
是“leastsquares”
,则目标函数中的损失项为MSE的一半。损失
默认情况下返回MSE。因此,如果使用损失
检查再替换,或训练,错误,那么在返回的MSE之间有一个差异损失
和优化结果FitInfo.
或者通过使用设置正详细级别返回到命令行冗长的
.
一个
高维线性分类和回归模型相对较快地最小化了目标函数,但以一定的精度为代价,仅数值预测变量限制,且模型必须与参数成线性关系。如果预测数据集是低维到中维的,或包含异质变量,则然后,您应该使用适当的分类或回归拟合函数。要帮助您确定哪个拟合函数适用于低维数据集,请使用此表。
最好的做法是调整预测器矩阵的方向,使观察结果与列对应并指定“ObservationsIn”、“列”
.因此,您可以显著减少优化执行时间。
为了更好的优化精度X
高维,正则化
是“岭”
,设置任何这些组合解算器
:
“sgd”
“asgd”
“双重”
如果学习者
是“支持向量机”
{'sgd','lbfgs'}
{“asgd”、“lbfgs”}
{“双”、“lbfgs”}
如果学习者
是“支持向量机”
其他组合可能导致较差的优化精度。
为了更好的优化精度X
是中度-通过低维度和正则化
是“岭”
,设置解算器
来“蓄热”
.
如果正则化
是“套索”
,设置任何这些组合解算器
:
“sgd”
“asgd”
'sparsa'
{'sgd','sparsa'}
{“asgd”、“sparsa”}
在选择SGD与ASGD之间时,请考虑:
SGD每次迭代花费的时间更少,但是需要更多的迭代来收敛。
ASGD需要更少的迭代来收敛,但是每个迭代需要更多的时间。
如果X
有很少的观察,但许多预测变量,然后:
指定“PostFitBias”,真的
.
对于SGD或ASGD求解器,请设置PassLimit
到大于1的正整数,例如5或10。这种设置通常会得到更好的精度。
对于SGD和ASGD求解器,BatchSize
影响收敛速度。
如果BatchSize
是不是太小了Fitrinear.
在多次迭代中达到最小值,但每次迭代快速计算梯度。
如果BatchSize
那太大了Fitrinear.
在更少的迭代中达到最小值,但每次迭代的梯度计算很慢。
学习率高(参见学习者
)加速收敛到最小值,但可能导致发散(即超过最小值)。小的学习速率确保收敛到最小值,但可能导致缓慢的终止。
在使用套索惩罚时,用不同的值进行实验截断周期
.例如,设置截断周期
来1
,10
, 进而One hundred.
.
为了提高效率,Fitrinear.
不标准化预测数据。标准化X
,输入
X = bsxfun (@rdivide bsxfun (@minus X,意味着(X, 2)),性病(0,2));
代码要求您将预测器和观察值定位为的行和列X
此外,为了节省内存,代码将原始预测数据替换为标准化数据。
在训练模型之后,您可以生成C/ c++代码来预测对新数据的响应。生成C/ c++代码需要MATLAB编码器™.有关详细信息,请参见代码生成简介.
如果您指定ValidationData
,则在目标函数优化过程中:
Fitrinear.
估计的验证损失ValidationData
定期使用当前模型,并跟踪最小估计。
当Fitrinear.
估计一个验证损失,它将估计与最小估计进行比较。
随后,验证损失估计值超过最小估计值的五倍,Fitrinear.
终止优化。
如果您指定ValidationData
并实现交叉验证程序(CrossVal
,CVPartition
,坚持
,或KFold
),那么:
Fitrinear.
使用训练数据分区训练模型。在目标函数优化,Fitrinear.
使用ValidationData
作为终止优化的另一种可能方法(有关详细信息,请参阅前面的内容)。
一次Fitrinear.
在满足停止准则的情况下,基于优化后的线性系数和截距构造训练模型。
如果你实现Fitrinear.
还没有用尽所有的训练套路,那么Fitrinear.
返回到步骤2,使用下一个训练集折叠进行训练。
否则,Fitrinear.
终止培训,然后返回交叉验证的模型。
您可以确定交叉验证模型的质量。例如:
为了使用第1步中的坚持层或折叠外数据确定验证损失,将交叉验证模型传递给kfoldLoss
.
为了预测第1步中顽固或未折叠数据的观测结果,将交叉验证的模型传递给kfoldPredict
.
Ho c.h.和Lin c.j.。“大规模线性支持向量回归。”金宝app
[2] Hsieh,C.J.,K.W.Chow,C. J. Lin,S. Keerthi和S. Sundararajan。“用于大规模线性SVM的双坐标滴定方法。”
李磊,张涛。“基于截断梯度的稀疏在线学习”。
Nocedal, J.和S. J. Wright。
谢勒夫-施瓦茨,S. Y.辛格和N.斯雷布罗。Pegasos:支持向量机的原始估计次梯度求解器
莱特,S. J., R. D.诺瓦克,M. A. T. Figueiredo。“可分离近似稀疏重建”。
[7] 用于正则化随机学习和在线优化的双重平均方法
[8]徐,魏。“基于平均随机梯度下降的最优一次大规模学习”。
使用注意事项及限制:
与内存中的参数相比,某些名称-值对参数具有不同的默认值和值Fitrinear.
函数。金宝app受支持的名称-值对参数及其区别如下:
‘ε’
“ObservationsIn”
——金宝app只支持“行”
.
“λ”
- - -可以“汽车”
(默认)或标量。
“学习者”
“正规化”
——金宝app只支持“岭”
.
“规划求解”
——金宝app只支持“lbfgs”
.
“详细”
—默认值为1
“β”
“偏见”
“FitBias”
——金宝app只支持真正的
.
“重量”
-值必须是高数组。
“HessianHistorySize”
“Betatoreance”
—默认值为1 e - 3
.
“GradientTolerance”
—默认值为1 e - 3
.
'iterationlimit'
—默认值为20.
.
'OptimizeHyperParameters'
——的价值“正规化”
参数必须“岭”
.
“HyperparameterOptimizationOptions”
-对于交叉验证,tall优化仅支持金宝app“坚持”
验证。例如,可以指定fitrinear(x,y,'优化heperparameters','auto','hyperparameteroptizationoptions',struct('holdout',0.2))
.
适合个子高的数组Fitrinear.
实现LBFGS的方法是在每次迭代时将损耗和梯度的计算分布在高阵的不同部分。其他解算器对于长数组是不可用的。
当初始值为β
和偏见
不给,Fitrinear.
首先,通过将模型局部拟合到部分数据并通过平均结合系数来改进参数的初始估计。
有关更多信息,请参见高阵(MATLAB)。
要并行运行,请设置'使用指平行'
选择真正的
.
要执行并行的HyperParameter优化,请使用“HyperparameterOptions”、结构(UseParallel,真的)
调用此函数时的名称-值对参数。
有关并行超参数优化的详细信息,请参见平行的贝叶斯优化.
有关并行计算的更多一般信息,请参阅运行MATLAB函数与自动并行支持金宝app(并行计算工具箱)。
RegressionLinear
|RegressionPartitionedLinear
|fitclinear
|Fitlm.
|fitrsvm
|kfoldLoss
|kfoldPredict
|套索
|预测
|山脊
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。