主要内容

RegressionNeuralNetwork

神经网络回归模型

    描述

    一个RegressionNeuralNetworkObject是一个经过训练的、前馈的、完全连接的用于回归的神经网络。神经网络的第一个完全连接层具有来自网络输入(预测器数据)的连接X),之后的每一层都有来自前一层的连接。每个全连接层将输入乘以权重矩阵(LayerWeights),然后加上偏置向量(LayerBiases).每个全连接层后面都有激活函数,但不包括最后一层(激活而且OutputLayerActivation).最后的全连接层产生网络的输出,即预测响应值。有关更多信息,请参见神经网络结构

    创建

    创建一个RegressionNeuralNetwork对象,使用fitrnet

    属性

    全部展开

    神经网络特性

    此属性是只读的。

    神经网络模型中全连接层的大小,作为正整数向量返回。的的第Th元素LayerSizes的输出数是否为神经网络模型的全连接层。

    LayerSizes不包括最终全连接层的大小。这个层总是有一个输出。

    数据类型:|

    此属性是只读的。

    学习了全连接层的层权重,作为单元格数组返回。的单元格数组中的第Th项对应于的层权重全连接层。例如,Mdl。LayerWeights {1}返回模型的第一个全连接层的权重Mdl

    LayerWeights包括最终全连接层的权重。

    数据类型:细胞

    此属性是只读的。

    学习了全连接层的层偏置,作为单元格数组返回。的单元格数组中的第Th项对应于的层偏差全连接层。例如,Mdl。LayerBiases {1}返回模型第一个全连接层的偏差Mdl

    LayerBiases包括最终全连接层的偏差。

    数据类型:细胞

    此属性是只读的。

    神经网络模型的完全连接层的激活函数,作为字符向量或字符向量的单元格数组返回,其值来自本表。

    价值 描述
    “relu”

    整流线性单元(ReLU)函数——对输入的每个元素执行阈值操作,其中任何小于零的值都被设置为零,也就是说,

    f x x x 0 0 x < 0

    的双曲正切

    双曲正切(tanh)函数-应用双曲正切函数赋给每个输入元素

    “乙状结肠”

    Sigmoid函数-对每个输入元素执行以下操作:

    f x 1 1 + e x

    “没有”

    恒等函数——返回每个输入元素而不执行任何转换,也就是说,fx) =x

    • 如果激活仅包含一个激活函数,则它是神经网络模型中每个全连接层的激活函数,不包括最后的全连接层,该层没有激活函数(OutputLayerActivation).

    • 如果激活是激活函数的数组,那么第Th元素是激活函数神经网络模型的第1层。

    数据类型:字符|细胞

    此属性是只读的。

    最终全连接层的激活函数,返回为“没有”

    此属性是只读的。

    用于训练的参数值RegressionNeuralNetwork模型,返回为NeuralNetworkParams对象。ModelParameters包含参数值,例如用于训练回归神经网络模型的名称-值参数。

    访问的属性ModelParameters用点表示法。例如,访问用于初始化模型的全连接层权重的函数Mdl通过使用Mdl.ModelParameters.LayerWeightsInitializer

    收敛控制属性

    此属性是只读的。

    收敛信息,作为结构数组返回。

    描述
    迭代 用于训练神经网络模型的训练迭代次数
    TrainingLoss 训练均方误差(MSE)为返回的模型,或resubLoss (Mdl)为模型Mdl
    梯度 损失函数相对于返回模型对应的迭代权重和偏差的梯度
    一步 与返回模型对应的迭代步长
    时间 所有迭代所花费的总时间(以秒为单位)
    ValidationLoss 返回模型的验证MSE
    ValidationChecks 连续验证损失大于或等于最小验证损失的最大次数
    ConvergenceCriterion 收敛准则
    历史 看到TrainingHistory

    数据类型:结构体

    此属性是只读的。

    训练历史,作为表格返回。

    描述
    迭代 训练迭代
    TrainingLoss 训练模型的均方误差(MSE)
    梯度 在此迭代中,损失函数相对于权重和偏差的梯度
    一步 这个迭代的步长
    时间 在此迭代过程中花费的时间(以秒为单位)
    ValidationLoss 在此迭代中验证模型的MSE
    ValidationChecks 验证损失大于或等于最小验证损失的运行总次数

    数据类型:表格

    此属性是只读的。

    求解器用于训练神经网络模型,返回为“LBFGS”.要创建RegressionNeuralNetwork模型中,fitrnet使用有限内存Broyden-Fletcher-Goldfarb-Shanno准牛顿算法(LBFGS)作为其损失函数最小化技术,其中软件最小化均方误差(MSE)。

    预测性能

    此属性是只读的。

    预测器变量名,作为字符向量的单元格数组返回。元素的顺序PredictorNames对应于预测器名称在训练数据中出现的顺序。

    数据类型:细胞

    此属性是只读的。

    分类预测指标,作为正整数向量返回。假设预测器数据包含成行的观测数据,CategoricalPredictors包含与包含分类预测器的预测器数据列对应的索引值。如果没有一个预测符是分类的,则此属性为空([]).

    数据类型:

    此属性是只读的。

    扩展的预测器名称,作为字符向量的单元格数组返回。如果模型对分类变量使用编码,则ExpandedPredictorNames包括描述展开变量的名称。否则,ExpandedPredictorNamesPredictorNames

    数据类型:细胞

    此属性是只读的。

    用于训练神经网络模型的非标准化预测器,以数字矩阵或表格形式返回。X属性的值保留其原始方向,行或列中的观察值取决于ObservationsIn的调用中的名称-值参数fitrnet

    数据类型:||表格

    响应特性

    此属性是只读的。

    响应变量名,作为字符向量返回。

    数据类型:字符

    此属性是只读的。

    用于训练模型的响应值,作为数字向量返回。每行Y中对应观测值的响应值X

    数据类型:|

    此属性是只读的。

    响应转换函数,返回为“没有”.该软件不转换原始响应值。

    其他数据属性

    此属性是只读的。

    超参数的交叉验证优化,指定为BayesianOptimization对象或超参数及相关值的表。属性为非空“OptimizeHyperparameters”在创建模型时,名称-值对参数为非空。的价值HyperparameterOptimizationResults的设置优化器HyperparameterOptimizationOptions结构。

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

    此属性是只读的。

    在训练数据中存储的观察数X而且Y,作为正数值标量返回。

    数据类型:

    此属性是只读的。

    用于拟合模型的原始训练数据行,作为逻辑向量返回。如果使用所有行,则此属性为空。

    数据类型:逻辑

    此属性是只读的。

    用于训练模型的观察权重,返回为n-by-1数值向量。n为观测数(NumObservations).

    方法中指定的观测权值进行归一化权重的元素W和等于1。

    数据类型:|

    对象的功能

    全部展开

    紧凑的 减小机器学习模型的尺寸
    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”

    图中包含一个轴对象。axis对象包含2个line类型的对象。

    扩展功能

    版本历史

    R2021a中引入

    Baidu
    map