RegressionNeuralNetwork
神经网络回归模型
描述
一个RegressionNeuralNetwork
Object是一个经过训练的、前馈的、完全连接的用于回归的神经网络。神经网络的第一个完全连接层具有来自网络输入(预测器数据)的连接X
),之后的每一层都有来自前一层的连接。每个全连接层将输入乘以权重矩阵(LayerWeights
),然后加上偏置向量(LayerBiases
).每个全连接层后面都有激活函数,但不包括最后一层(激活
而且OutputLayerActivation
).最后的全连接层产生网络的输出,即预测响应值。有关更多信息,请参见神经网络结构.
创建
创建一个RegressionNeuralNetwork
对象,使用fitrnet
.
属性
神经网络特性
LayerSizes
- - - - - -全连接层的大小
正整数向量
此属性是只读的。
神经网络模型中全连接层的大小,作为正整数向量返回。的我的第Th元素LayerSizes
的输出数是否为我神经网络模型的全连接层。
LayerSizes
不包括最终全连接层的大小。这个层总是有一个输出。
数据类型:单
|双
LayerWeights
- - - - - -已学习的层权重
单元阵列
此属性是只读的。
学习了全连接层的层权重,作为单元格数组返回。的我单元格数组中的第Th项对应于的层权重我全连接层。例如,Mdl。LayerWeights {1}
返回模型的第一个全连接层的权重Mdl
.
LayerWeights
包括最终全连接层的权重。
数据类型:细胞
LayerBiases
- - - - - -习得的层偏见
单元阵列
此属性是只读的。
学习了全连接层的层偏置,作为单元格数组返回。的我单元格数组中的第Th项对应于的层偏差我全连接层。例如,Mdl。LayerBiases {1}
返回模型第一个全连接层的偏差Mdl
.
LayerBiases
包括最终全连接层的偏差。
数据类型:细胞
激活
- - - - - -全连接层的激活函数
“relu”
|的双曲正切
|“乙状结肠”
|“没有”
|字符向量的单元格数组
此属性是只读的。
神经网络模型的完全连接层的激活函数,作为字符向量或字符向量的单元格数组返回,其值来自本表。
价值 | 描述 |
---|---|
“relu” |
整流线性单元(ReLU)函数——对输入的每个元素执行阈值操作,其中任何小于零的值都被设置为零,也就是说,
|
的双曲正切 |
双曲正切(tanh)函数-应用 |
“乙状结肠” |
Sigmoid函数-对每个输入元素执行以下操作:
|
“没有” |
恒等函数——返回每个输入元素而不执行任何转换,也就是说,f(x) =x |
如果
激活
仅包含一个激活函数,则它是神经网络模型中每个全连接层的激活函数,不包括最后的全连接层,该层没有激活函数(OutputLayerActivation
).如果
激活
是激活函数的数组,那么我第Th元素是激活函数我神经网络模型的第1层。
数据类型:字符
|细胞
OutputLayerActivation
- - - - - -最终全连接层的激活函数
“没有”
此属性是只读的。
最终全连接层的激活函数,返回为“没有”
.
ModelParameters
- - - - - -用于训练模型的参数值
NeuralNetworkParams
对象
此属性是只读的。
用于训练的参数值RegressionNeuralNetwork
模型,返回为NeuralNetworkParams
对象。ModelParameters
包含参数值,例如用于训练回归神经网络模型的名称-值参数。
访问的属性ModelParameters
用点表示法。例如,访问用于初始化模型的全连接层权重的函数Mdl
通过使用Mdl.ModelParameters.LayerWeightsInitializer
.
收敛控制属性
ConvergenceInfo
- - - - - -融合信息
结构数组
此属性是只读的。
收敛信息,作为结构数组返回。
场 | 描述 |
---|---|
迭代 |
用于训练神经网络模型的训练迭代次数 |
TrainingLoss |
训练均方误差(MSE)为返回的模型,或resubLoss (Mdl) 为模型Mdl |
梯度 |
损失函数相对于返回模型对应的迭代权重和偏差的梯度 |
一步 |
与返回模型对应的迭代步长 |
时间 |
所有迭代所花费的总时间(以秒为单位) |
ValidationLoss |
返回模型的验证MSE |
ValidationChecks |
连续验证损失大于或等于最小验证损失的最大次数 |
ConvergenceCriterion |
收敛准则 |
历史 |
看到TrainingHistory |
数据类型:结构体
TrainingHistory
- - - - - -培训历史
表格
此属性是只读的。
训练历史,作为表格返回。
列 | 描述 |
---|---|
迭代 |
训练迭代 |
TrainingLoss |
训练模型的均方误差(MSE) |
梯度 |
在此迭代中,损失函数相对于权重和偏差的梯度 |
一步 |
这个迭代的步长 |
时间 |
在此迭代过程中花费的时间(以秒为单位) |
ValidationLoss |
在此迭代中验证模型的MSE |
ValidationChecks |
验证损失大于或等于最小验证损失的运行总次数 |
数据类型:表格
解算器
- - - - - -求解器用于训练神经网络模型
“LBFGS”
此属性是只读的。
求解器用于训练神经网络模型,返回为“LBFGS”
.要创建RegressionNeuralNetwork
模型中,fitrnet
使用有限内存Broyden-Fletcher-Goldfarb-Shanno准牛顿算法(LBFGS)作为其损失函数最小化技术,其中软件最小化均方误差(MSE)。
预测性能
PredictorNames
- - - - - -预测变量名称
字符向量的单元格数组
此属性是只读的。
预测器变量名,作为字符向量的单元格数组返回。元素的顺序PredictorNames
对应于预测器名称在训练数据中出现的顺序。
数据类型:细胞
CategoricalPredictors
- - - - - -分类预测指标
正整数向量|[]
此属性是只读的。
分类预测指标,作为正整数向量返回。假设预测器数据包含成行的观测数据,CategoricalPredictors
包含与包含分类预测器的预测器数据列对应的索引值。如果没有一个预测符是分类的,则此属性为空([]
).
数据类型:双
ExpandedPredictorNames
- - - - - -扩展的预测器名称
字符向量的单元格数组
此属性是只读的。
扩展的预测器名称,作为字符向量的单元格数组返回。如果模型对分类变量使用编码,则ExpandedPredictorNames
包括描述展开变量的名称。否则,ExpandedPredictorNames
和PredictorNames
.
数据类型:细胞
X
- - - - - -Unstandardized预测
数字矩阵|表格
此属性是只读的。
用于训练神经网络模型的非标准化预测器,以数字矩阵或表格形式返回。X
属性的值保留其原始方向,行或列中的观察值取决于ObservationsIn
的调用中的名称-值参数fitrnet
.
数据类型:单
|双
|表格
响应特性
ResponseName
- - - - - -响应变量名
特征向量
此属性是只读的。
响应变量名,作为字符向量返回。
数据类型:字符
Y
- - - - - -响应值
数值向量
此属性是只读的。
用于训练模型的响应值,作为数字向量返回。每行Y
中对应观测值的响应值X
.
数据类型:单
|双
ResponseTransform
- - - - - -响应变换函数
“没有”
此属性是只读的。
响应转换函数,返回为“没有”
.该软件不转换原始响应值。
其他数据属性
HyperparameterOptimizationResults
- - - - - -超参数的交叉验证优化
BayesianOptimization
对象|表格
此属性是只读的。
超参数的交叉验证优化,指定为BayesianOptimization
对象或超参数及相关值的表。属性为非空“OptimizeHyperparameters”
在创建模型时,名称-值对参数为非空。的价值HyperparameterOptimizationResults
的设置优化器
在HyperparameterOptimizationOptions
结构。
的价值优化器 场 |
的价值HyperparameterOptimizationResults |
---|---|
“bayesopt” (默认) |
类的对象BayesianOptimization |
“gridsearch” 或“randomsearch” |
使用的超参数表,观察到的目标函数值(交叉验证损失),以及从最低(最好)到最高(最差)的观察值排序 |
NumObservations
- - - - - -观察次数
正数值标量
此属性是只读的。
在训练数据中存储的观察数X
而且Y
,作为正数值标量返回。
数据类型:双
RowsUsed
- - - - - -拟合中使用的行
[]
|逻辑向量
此属性是只读的。
用于拟合模型的原始训练数据行,作为逻辑向量返回。如果使用所有行,则此属性为空。
数据类型:逻辑
W
- - - - - -观察权重
数值向量
此属性是只读的。
用于训练模型的观察权重,返回为n-by-1数值向量。n为观测数(NumObservations
).
方法中指定的观测权值进行归一化权重
的元素W
和等于1。
数据类型:单
|双
对象的功能
创建CompactRegressionNeuralNetwork
紧凑的 |
减小机器学习模型的尺寸 |
创建RegressionPartitionedModel
crossval |
交叉验证机器学习模型 |
解释预测
石灰 |
局部可解释模型不可知解释(LIME) |
partialDependence |
计算部分依赖关系 |
plotPartialDependence |
创建部分依赖图(PDP)和个别条件期望图(ICE) |
沙普利 |
沙普利值 |
根据训练数据评估预测表现
resubLoss |
再置换回归损失 |
resubPredict |
使用训练回归模型预测训练数据的响应 |
例子
训练神经网络回归模型
训练神经网络回归模型,并在测试集上评估模型的性能。
加载carbig
数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。创建一个包含预测变量的表加速度
,位移
,等等,以及响应变量英里/加仑
.
负载carbigcars = table(加速度,位移,马力,...Model_Year、产地、重量、MPG);
删除汽车
表中缺少值的地方。
汽车= rmmissing(汽车);
根据是否是美国制造来对汽车进行分类。
汽车Origin = categorical(cellstr(cars.Origin));汽车起源= mergecats(汽车。起源,“法国”,“日本”,...“德国”,“瑞典”,“意大利”,“英格兰”),“NotUSA”);
将数据划分为训练集和测试集。使用大约80%的观察结果来训练神经网络模型,20%的观察结果用于测试训练模型在新数据上的性能。使用cvpartition
对数据进行分区。
rng (“默认”)用于数据分区的再现性C = cvpartition(height(cars),“坚持”, 0.20);trainingIdx = training(c);训练集指数%carsTrain = cars(trainingIdx,:);testdx =测试(c);测试集指数carsTest = cars(testdx,:);
训练神经网络回归模型carsTrain
训练数据fitrnet
函数。为了获得更好的结果,请指定标准化预测器数据。
Mdl = fitrnet(carsTrain,“英里”,“标准化”,真正的)
Mdl = RegressionNeuralNetwork PredictorNames: {1x6 cell} ResponseName: 'MPG' CategoricalPredictors: 5 ResponseTransform: 'none' NumObservations: 314 LayerSizes: 10 activation: 'relu' OutputLayerActivation: 'none'求解器:'LBFGS' ConvergenceInfo: [1x1 struct] TrainingHistory: [708x7 table]属性,方法
Mdl
是受过训练的RegressionNeuralNetwork
模型。的属性可以使用点表示法访问Mdl
.例如,您可以指定Mdl。TrainingHistory
获取更多关于神经网络模型训练历史的信息。
通过计算测试均方误差(MSE)来评估回归模型在测试集上的性能。MSE值越小,性能越好。
testMSE = loss(Mdl,carsTest,“英里”)
testMSE = 7.1092
指定神经网络回归模型体系结构
指定神经网络回归模型的结构,包括全连接层的大小。
加载carbig
数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。创建一个矩阵X
包含预测变量加速度
,气缸
等等。存储响应变量英里/加仑
在变量中Y
.
负载carbigX =[加速度缸位移重量];Y = mpg;
删除X
而且Y
其中任何一个数组都有缺失值。
R = rmmissing([X Y]);X = R(:,1:end-1);Y = R(:,end);
将数据划分为训练数据(XTrain
而且YTrain
)和测试数据(XTest
而且欧美
).保留大约20%的观察结果用于测试,其余的观察结果用于训练。
rng (“默认”)用于分区的再现性c = cvpartition(length(Y),“坚持”, 0.20);trainingIdx = training(c);%训练集的指数XTrain = X(trainingIdx,:);YTrain = Y(trainingIdx);testdx =测试(c);%测试集的索引XTest = X(testdx,:);YTest = Y(testdx);
训练神经网络回归模型。指定对预测器数据进行标准化,并在第一个全连接层中有30个输出,在第二个全连接层中有10个输出。默认情况下,两层都使用一个整流线性单元(ReLU)激活函数。属性可以更改全连接层的激活函数激活
名称-值参数。
Mdl = fitrnet(XTrain,YTrain,“标准化”,真的,...“LayerSizes”30 [10])
Mdl = RegressionNeuralNetwork ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 319 LayerSizes: [30 10] activation: 'relu' OutputLayerActivation: 'none' Solver: 'LBFGS' ConvergenceInfo: [1x1 struct] TrainingHistory: [1000x7 table] Properties, Methods
方法访问已训练模型的完全连接层的权重和偏差LayerWeights
而且LayerBiases
的属性Mdl
.每个属性的前两个元素对应于前两个完全连接层的值,第三个元素对应于用于回归的最后一个完全连接层的值。例如,显示第一个全连接层的权重和偏差。
Mdl。LayerWeights {1}
ans =30×40.0122 0.0116 -0.0094 0.1174 -0.4400 -1.5674 -0.1234 -2.2396 0.3370 0.2628 -1.9752 0.2937 -2.9872 -3.1024 -0.9050 -1.5978 0.7721 2.2010 1.3134 0.2364 0.1718 1.8862 -3.0548 -0.4272 0.9583 -0.0591 -0.9272 -0.3960 1.6701 -0.1617 -1.2640 0.7811 -0.7890 -0.8045 0.2993 1.5391 0.2053 -2.3423 1.7768 1.1690
Mdl。LayerBiases {1}
ans =30×1-0.4448 -1.0814 -0.5026 -0.9984 0.2245 -2.1709 1.6112 1.3802 -1.2855 0.1969
最后的全连接层有一个输出。层输出的数量对应于层权重和层偏差的第一个维度。
大小(Mdl.LayerWeights{结束})
ans =1×21 10
大小(Mdl.LayerBiases{结束})
ans =1×21
为了估计训练模型的性能,计算的测试集均方误差(MSE)Mdl
.MSE值越小,性能越好。
testMSE = loss(Mdl,XTest,YTest)
testMSE = 16.8576
将预测测试集响应值与真实响应值进行比较。纵轴表示预测每加仑英里数(MPG),横轴表示实际MPG。参考线上的点表示正确的预测。一个好的模型产生的预测分布在这条线附近。
testforecasts = predict(Mdl,XTest);情节(欧美、testPredictions“。”)举行在情节(欧美,欧美)从包含(“真正的MPG”) ylabel (“预测MPG”)
版本历史
R2021a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。