主要内容

RegressionNeuralNetwork

回归的神经网络模型

    描述

    一个RegressionNeuralNetwork对象是用于回归的训练、前馈和全连接的神经网络。神经网络的第一个完全连接层与网络输入(预测数据)有一个连接X),并且每个后续层都有上一层的连接。每个完全连接的层将输入乘以权重矩阵(LayerWeights)然后添加一个偏移向量(LayerBiases).激活函数如下各完全连接层,但不包括最后一个(激活输出功率).最终完全连接层产生网络的输出,即预计响应值。有关更多信息,请参阅神经网络结构

    创建

    创建一个RegressionNeuralNetwork通过使用fitrnet

    属性

    全部展开

    神经网络属性

    此属性是只读的。

    神经网络模型中完全连接层的大小,作为正整数向量返回th元素LayerSizes的输出数是多少TH神经网络模型的完全连接层。

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

    数据类型:单身的|

    此属性是只读的。

    了解到层权重完全连接层,返回为单元阵列。的单元格数组中的第Th项对应的层权重为完全连通层。例如,Mdl。LayerWeights {1}返回的权重为所述模型的第一完全连接层MDL

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

    数据类型:细胞

    此属性是只读的。

    了解了完全连接层的层偏差,返回为单元阵列。的在单元阵列对应个条目的层偏压为完全连通层。例如,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

    • 如果激活仅包含一个激活函数,则为神经网络模型中每一完全连接层的激活函数,不包括最终完全连接层,该层不具有激活函数(输出功率).

    • 如果激活是活化函数数组,则元素是元素的激活函数第四层为神经网络模型。

    数据类型:字符|细胞

    此属性是只读的。

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

    此属性是只读的。

    参数值用于训练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-弗莱彻-戈德法布-Shanno无准牛顿算法(LBFGS)作为它的损失函数最小化技术,其中该软件的均方误差(MSE)最小化。

    预测性

    此属性是只读的。

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

    数据类型:细胞

    此属性是只读的。

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

    数据类型:

    此属性是只读的。

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

    数据类型:细胞

    此属性是只读的。

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

    数据类型:单身的||桌子

    响应特性

    此属性是只读的。

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

    数据类型:字符

    此属性是只读的。

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

    数据类型:单身的|

    此属性是只读的。

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

    其他数据属性

    此属性是只读的。

    超参数的交叉验证优化,指定为BayesianOptimization对象或超参数和相关联的值的表。这个属性不为空,如果“OptimizeHyperparameters”当你创建模型名称 - 值对的说法是空的。的价值HyperparameterOptimizationResults取决于优化器字段HyperparameterOptimizationOptions结构,当您创建模型时。

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

    此属性是只读的。

    在训练数据中存储的观测数XY,作为正数值标量返回。

    数据类型:

    此属性是只读的。

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

    数据类型:逻辑

    此属性是只读的。

    观察权重用来训练模型,返回一个n-乘以1的数值向量。n是(观测值的数量NumObservations).

    该软件标准化在指定的观察权重权重名称 - 值参数,这样的元素W总和为1。

    数据类型:单身的|

    对象的功能

    全部展开

    契约 减少机器学习模型的大小
    crossval 交叉验证机器学习模型
    石灰 局部可解释的模型不可知解释(LIME)
    partialDependence 计算部分依赖
    plotPartialDependence 创建部分依赖图(PDP)和个人条件期望图(ICE)
    沙普利 沙普利值
    损失 回归神经网络的损失估计
    预测 预测使用回归神经网络的反应
    resubLoss Resubstitution回归损失
    resubPredict 预测使用受训回归模型的训练数据响应

    例子

    全部折叠

    训练神经网络回归模型,并在测试集上评估模型的性能。

    加载carbig数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。创建一个包含预测变量的表加速位移,等等,以及响应变量英里/加仑

    负载carbig汽车=表(加速度、位移、马力、......车型(年份、产地、重量、MPG);

    将数据划分为训练和测试集。使用意见的大约80%到训练神经网络模型,观测的20%,以测试新的数据训练的模型的性能。用cvpartition对数据进行分区。

    rng(“默认”%对于数据分区的再现性c = cvpartition(长度(MPG),“坚持”, 0.20);trainingIdx =培训(c);%训练集指标carsTrain =汽车(trainingIdx,:);testIdx =试验(c)中;%测试集指标喀斯特岩溶=汽车(testIdx:);

    通过传递函数训练神经网络回归模型carsTrain培训数据发给fitrnet函数。为了更好的结果,指定标准化预测器数据。

    MDL = fitrnet(carsTrain,“英里”“标准化”,真的)
    Mdl = RegressionNeuralNetwork PredictorNames:{“加速度”“位移”“马力”“Model_Year”“起源”“重量”}ResponseName:“英里”CategoricalPredictors: 5 ResponseTransform:“没有一个”NumObservations: 314 LayerSizes: 10激活:“relu”OutputLayerActivation:“线性”解算器:“LBFGS”ConvergenceInfo:[1×1 struct] TrainingHistory:[1000×7 table]属性,方法

    MDL是一个训练有素的RegressionNeuralNetwork模型。的属性可以使用点表示法MDL.例如,可以指定Mdl。TrainingHistory以获取有关神经网络模型的培训历史的更多信息。

    通过计算测试均方误差(MSE)来评估回归模型在测试集上的性能。MSE值越小,性能越好。

    testMSE =损失(Mdl、喀斯特岩溶“英里”
    testMSE = 16.6154

    指定的神经网络回归模型的结构,其中包括完全连接层的大小。

    加载carbig数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。创建一个矩阵X包含预测变量加速气缸, 等等。存储响应变量英里/加仑在变量Y

    负载carbigX = [加速缸位移重量];Y = MPG;

    将数据划分为训练数据(XTrainYTrain)及测试数据(XTESTYTest).保留大约20%的观测值用于测试,其余的观测值用于培训。

    rng(“默认”分区的再现性c = cvpartition(长度(Y),“坚持”, 0.20);trainingIdx =培训(c);%训练集指标XTrain = X (trainingIdx:);YTrain = Y (trainingIdx);testIdx =试验(c)中;%测试集索引XTEST = X(testIdx,:);YTest = Y(testIdx);

    训练神经网络回归模型。指定标准化预测器数据,并在第一完全连接层有30个输出,在第二完全连接层有10个输出。默认情况下,这两个层都使用一个整流线性单元(ReLU)激活功能。控件可以更改完全连接层的激活函数激活名称-值参数。

    MDL = fitrnet(XTrain,YTrain,“标准化”,真的,......“LayerSizes”30 [10])
    Mdl=RegressionNeuralNetwork ResponseName:'Y'分类预测值:[]ResponseTransform:'none'NumObservations:318 LayerSizes:[30 10]激活:'relu'OutputLayerAction:'linear'解算器:'LBFGS'收敛信息:[1×1结构]训练历史:[1000×7表格]属性、方法

    通过使用接入用于训练的模型的完全连接层中的重量和偏见LayerWeightsLayerBiases特性MDL.每个属性的前两个元素对应于前两个完全连接层的值,第三个元素对应于最终完全连接层的值进行回归。例如,显示第一个完全连接层的权重和偏差。

    Mdl。LayerWeights {1}
    ans =30×4-1.0617 0.1287 0.0797 0.4648 -0.6497 -1.4565 -2.6026 2.6962 -0.6420 0.2744 -0.0234 -0.0252 -1.9727 -0.4665 -0.5833 0.9371 -0.4373 0.1607 0.3930 0.7859 0.5091 -0.0032 -0.6503 -1.6694 0.0123 -0.2624 -2.2928 -1.0965 - 0.2747 0.4085 0.5395 -0.1755 1.5641 -3.1896 -1.1336 0.4401 0.4942 1.8957 -1.1617⋮
    Mdl.LayerBiases {1}
    ans =30×1-1.3086 -1.6205 -0.7815 1.5382 -0.5256 1.2394 -2.3078 -1.0709 -1.8898 1.9443⋮

    最后一个完全连接的层有一个输出。层输出的数量对应于层权重和层偏差的第一个维度。

    大小(Mdl.LayerWeights{结束})
    ans =1×21 10
    大小(Mdl.layerbies{end})
    ans =1×21 1

    为了估计训练模型的性能,计算测试集的均方误差(MSE)MDL.MSE值越小,性能越好。

    testMSE =损失(Mdl XTest、欧美)
    testMSE = 17.2022

    将预测的测试集响应值与真实响应值进行比较。在纵轴上画出预测的每加仑英里数(MPG),在横轴上画出真实的每加仑英里数。基准线上的点表示正确的预测。一个好的模型会产生分散在线附近的预测。

    XTest testPredictions =预测(Mdl);情节(欧美、testPredictions“。”) 抓住情节(欧美,欧美)离开xlabel(“真正的MPG”)ylabel(“预计MPG”

    介绍了R2021a