主要内容

ClassificationNeuralNetwork

分类的神经网络模型

    描述

    一个ClassificationNeuralNetwork对象是用于分类的训练、前馈和全连接的神经网络。神经网络的第一个完全连接层与网络输入(预测数据)有一个连接X),每个后续层都具有与前一层的连接。每个完全连接的图层将输入乘以权重矩阵(LayerWeights)然后添加偏置载体(LayerBiases).每个完全连接的层后面都有一个激活函数(激活outputlayEractivation.).最后的全连接层和随后的softmax激活函数产生网络的输出,即分类分数(后验概率)和预测标签。有关更多信息,请参见神经网络结构

    创建

    创建一个ClassificationNeuralNetwork通过使用fitcnet

    属性

    全部展开

    神经网络属性

    此属性是只读的。

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

    LayerSizes不包括最终完全连接层的大小。这个图层总是有K输出,K班级数在吗Y

    数据类型:|

    此属性是只读的。

    学习完全连接层的层权重,作为单元数组返回。这单元格数组中的第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

    • 如果激活只包含一个激活函数,则为神经网络模型中每一个全连接层的激活函数,不包括最终的全连接层。最终完全连接层的激活函数总是softmax (outputlayEractivation.).

    • 如果激活是一系列激活功能,然后是元素是元素的激活函数神经网络模型的层。

    数据类型:char|细胞

    此属性是只读的。

    最终完全连接层的激活功能,返回为“softmax”.该函数需要每个输入x并返回以下内容,在哪里K为响应变量中的类数:

    f x exp. x σ. j 1 K exp. x j

    结果与预测的分类分数(或后验概率)相对应。

    此属性是只读的。

    用于训练的参数值ClassificationNeuralNetwork模型,返回为neuralnetworkparams.目的。ModelParameters包含参数值,例如用于训练神经网络分类器的名称-值参数。

    访问ModelParameters通过使用点表示法。例如,访问用于初始化模型的完全连接的层权重的函数MDL.通过使用mdl.modelparameters.layerweightsinitializer

    收敛控制属性

    此属性是只读的。

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

    描述
    迭代 用于训练神经网络模型的训练迭代次数
    TrainingLoss 训练返回模型的交叉熵损失,或者resubLoss (Mdl LossFun, crossentropy)为模型MDL.
    梯度 损失函数相对于返回模型对应的迭代权值和偏差的梯度
    一步 步骤尺寸在与返回的模型相对应的迭代
    时间 所有迭代所花费的总时间(以秒为单位)
    ValidationLoss 返回模型的验证交叉熵损耗
    验证检查 在一行中验证损失大于或等于最小验证损失的最大次数
    ConvergenceCriterion 为收敛准则
    历史 看到培训汉语

    数据类型:结构体

    此属性是只读的。

    训练历史,以表格形式返回。

    柱子 描述
    迭代 训练迭代
    TrainingLoss 在此迭代中训练模型的交叉熵损失
    梯度 在此迭代中损失函数相对于权值和偏差的梯度
    一步 这个迭代的步长
    时间 在此迭代期间花费的时间(以秒为单位)
    ValidationLoss 在此迭代中验证模型的交叉熵损失
    验证检查 验证损失大于或等于最小验证损失的运行总次数

    数据类型:表格

    此属性是只读的。

    求解器用于训练神经网络模型,返回为“LBFGS”.创建一个ClassificationNeuralNetwork模型中,fitcnet采用有限内存的Broyden-Flecter-Goldfarb-Shanno准牛顿算法(LBFGS)作为损耗函数最小化技术,该软件使交叉熵损耗最小化。

    预测性能

    此属性是只读的。

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

    数据类型:细胞

    此属性是只读的。

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

    数据类型:

    此属性是只读的。

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

    数据类型:细胞

    此属性是只读的。

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

    数据类型:||表格

    响应属性

    此属性是只读的。

    培训中使用的唯一类名,作为数字矢量,分类矢量,逻辑向量,字符数组或字符向量阵列返回。一会具有与类标签相同的数据类型Y(该软件将字符串数组视为字符向量的单元格数组。)一会也决定了类的顺序。

    数据类型:||分类|逻辑|char|细胞

    此属性是只读的。

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

    数据类型:char

    此属性是只读的。

    用于训练模型的类标签,作为数字矢量,分类矢量,逻辑向量,字符数组或字符向量阵列的模型。Y具有与用于训练模型的响应变量相同的数据类型。(该软件将字符串数组视为字符向量的单元格数组。)

    每一排Y中对应观测值的分类X

    数据类型:||分类|逻辑|char|细胞

    其他数据属性

    此属性是只读的。

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

    数据类型:

    此属性是只读的。

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

    数据类型:逻辑

    此属性是只读的。

    用于训练模型的观察权重,作为返回n- 1号数字矢量。n为观测次数(NumObservations).

    该软件规范化了指定的观察权重权重名称值参数,以便元素W在一个特定的类别中,总和为该类别的先验概率。

    数据类型:|

    其他分类属性

    此属性是只读的。

    误分类代价,返回为数值方阵,其中成本(i, j)将一个点分类的成本是多少j如果它真正的阶级是.代价矩阵总是这样的形式:成本(i, j) = 1如果我~ = j, 和成本(i, j) = 0如果我=我.行对应真正的类,列对应预测的类。的行和列的顺序成本中类的顺序一会

    数据类型:

    此属性是只读的。

    每个类的先验概率,作为数字向量返回。元素的顺序之前对应的元素一会

    数据类型:

    分数转换,指定为字符向量或函数句柄。scoretransform.表示用于转换预测分类分数的内置转换函数或函数句柄。

    将分数转换函数改为功能,例如,使用点符号。

    • 对于内置函数,请输入字符向量。

      Mdl。ScoreTransform = '功能';

      该表描述了可用的内置函数。

      价值 描述
      'doublelogit' 1 /(1 +e2x
      “invlogit” 日志(x/(1 -x))
      “ismax” 将具有最大分数的类设置为1的分数,并将所有其他类的分数设置为0
      分对数的 1 /(1 +e- - - - - -x
      “没有”要么“身份” x(转换)
      “标志” 1x< 0
      为0x= 0
      1x> 0
      “对称” 2x- 1
      “symmetricismax” 将分数最大的班级的分数设置为1,并将所有其他班级的分数设置为-1
      'symmetriclogit' 2 / (1 +e- - - - - -x) - 1

    • 对于一个MATLAB®函数或您定义的函数,输入其函数句柄。

      mdl.scoretransform = @功能

      功能必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换分数)。

    数据类型:char|function_handle

    对象的功能

    袖珍的 减少机器学习模型的规模
    compareHoldout 使用新数据比较两个分类模型的精度
    crossval 交叉验证机器学习模型
    边缘 用于神经网络分类器的分类边缘
    损失 神经网络分类器的分类损失
    利润 神经网络分类器的分类边缘
    partialDependence 计算部分依赖
    plotPartialDependence 创建部分依赖图(PDP)和个人条件期望图(ICE)
    预测 使用神经网络分类器分类观察
    resubEdge Resubstitution分类边缘
    resubLoss Resubstitution分类损失
    重新提交 Resubstitution分类保证金
    resubPredict 使用训练的分类器对训练数据进行分类

    例子

    全部折叠

    培训神经网络分类器,并评估对测试集上分类器的性能。

    读取示例文件Creditrating_Historical.dat.一个表中。预测数据包括财务比率和企业客户列表的行业部门信息。反应变量由评级机构指定的信用评级组成。预览数据集的前几行。

    creditrating = readtable (“CreditRating_Historical.dat”);头(creditrating)
    ans =8×8表ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA工业评分_____ ______ ______ _______ ________ _____ ________ _______ 62394 0.013 0.104 0.036 0.447 0.142 3 { 'BB'} 48608 0.232 0.335 0.062 1.969 0.281 8 { 'A'} 42444 0.311 0.367 0.074 1.935 0.366 1 {'A'} 48631 0.194 0.263 0.062 1.017 0.228 4 {' BBB '} 43768 0.121 0.413 0.057 3.647 0.466 12 {' AAA '} 39255 -0.117 -0.799 0.01 0.179 0.082 4 {' CCC '} 62236 0.087 0.158 0.049 0.816 0.324 2 {' BBB'} 39354 0.005 0.181 0.034 2.597 0.388 7 {'AA'}

    因为每个值都在ID变量是唯一的客户ID,即长度(独特(creditrating.ID))等于观测的次数creditrating,ID变量是一个很差的预测器。删除ID从表中变量,并转换行业变量到A.分类多变的。

    creditrating = removevars (creditrating,“ID”);creditrating。行业=分类(creditrating。行业);

    转换评级对序数的响应变量分类多变的。

    creditrating。评级=分类(creditrating。评级,...“AAA”“AA”“一种”" BBB "“BB”“b”“CCC”],“顺序”,真正的);

    将数据划分为训练集和测试集。使用大约80%的观测数据来训练神经网络模型,使用20%的观测数据来测试训练模型在新数据上的性能。使用cvpartition分区数据。

    RNG(“默认”分区的再现性c = cvpartition(信用。“坚持”, 0.20);trainingIndices =培训(c);%训练集指标testindices =测试(c);%测试集索引creditTrain = creditrating (trainingIndices:);信贷= creditrating (testIndices:);

    通过传递训练数据来训练神经网络分类器信用箱fitcnet函数。

    Mdl = fitcnet (creditTrain,“评级”
    mdl = classificationniednetwork predictornames:{wc_ta''re_ta''ebet_ta''mve_bvtd''s_ta'行业'} resportename:'评级'类别预防icon:6 classnames:[aaa aa a bbb bb b ccc] scoreTransform:'无'numobservations:3146 DILTERSIZE:10激活:'relu'OuthentLayARactivation:'Softmax'求解器:'LBFGS'ColouchgenceInfo:[1×1结构]培训课程:[1000×7表]属性,方法

    MDL.是一个培训ClassificationNeuralNetwork分类器。的属性可以使用点表示法MDL..例如,可以指定Mdl。培训汉语获取更多关于神经网络模型训练历史的信息。

    通过计算测试集分类错误来评估分类器对测试集的性能。通过使用混淆矩阵可视化结果。

    testaccuracy = 1  - 损失(MDL,抵制,“评级”...“LossFun”“classiferror”
    testAccuracy = 0.8003
    信贷confusionchart (creditTest.Rating,预测(Mdl))

    指定神经网络分类器的结构,包括全连接层的大小。

    加载电离层数据集,包括雷达信号数据。X包含预测数据,和Y是响应变量,其值代表良好(“g”)或坏(“B”)雷达信号。

    负载电离层

    将数据分成培训数据(XTrainytrain.)和测试数据(XTest.欧美)通过使用分层熔断分区。预留约30%的测试观察,并使用其余的观察培训。

    RNG(“默认”分区的再现性本量利= cvpartition (Y,“坚持”, 0.3);XTrain = X(培训(cvp):);YTrain = Y(培训(cvp));XTest = X(测试(cvp):);欧美= Y(测试(cvp));

    训练神经网络分类器。指定在第一个完全连接层有35个输出,在第二个完全连接层有20个输出。默认情况下,这两个层都使用一个整流线性单元(ReLU)激活功能。控件可以更改完全连接层的激活函数激活名称值参数。

    Mdl = fitcnet (XTrain YTrain,...“双层化”20 [35])
    Mdl = ClassificationNeuralNetwork ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' ' 'g'} ScoreTransform: 'none' NumObservations: 246 LayerSizes: [35 20] activation: 'relu' OutputLayerActivation: 'softmax' Solver: 'LBFGS' ConvergenceInfo: [1×1 struct] TrainingHistory: [47×7 table]属性,方法

    通过使用通过使用训练分类器的完全连接层的权重和偏置LayerWeightsLayerBiases属性MDL..每个属性的前两个元素对应前两个全连接层的值,第三个元素对应最后一个全连接层的值,并使用softmax激活函数进行分类。例如,显示第二层全连接层的权重和偏差。

    Mdl。LayerWeights {2}
    ans =20×350.0481 0.2501 -0.1535 -0.0934 0.0760 -0.0579 -0.2465 1.0411 0.3712 -1.2007 1.1162 0.4296 0.4045 0.5005 0.8839 0.4624 -0.3154 0.3454 -0.0487 0.2648 0.0732 0.5773 0.4286 0.0881 0.9468 0.2981 0.5534 1.0518 -0.0224 0.6894 0.5527 0.7045 -0.6124 0.2145 -0.0790 -0.9489 -1.8343 0.5510-0.5751 -0.8726 0.8815 0.0203 -1.6379 2.0315 1.7599 -1.4153 -1.4335 -1.1638 -0.1715 1.1439 -0.7661 1.1230 -1.1982 -0.5409 -0.5821 -0.0627 -0.7038 -0.0817 -1.5773 -1.4671 0.2053 -0.7931 -1.6201 -0.1737 -0.7762 -0.3063  -0。8771 1.5134 -0.4611 -0.0649 -0.1910 0.0246 -0.3511 0.0097 0.3160 -0.0693 0.2270 -0.0783 -0.1626 -0.3478 0.2765 0.4179 0.0727 -0.0314 -0.1798 -0.0583 0.1375 -0.1876 0.2518 0.2137 0.1497 0.0395 0.2859 -0.0905 0.4325 -0.2012 0.0388 -0.1441 -0.1431 -0.0249 -0.2200 0.0860 -0.2076 0.0132 0.1737 -0.0415 -0.0059 -0.0753 -0.1477 -0.1621 -0.1762 0.2164 0.1710 -0.0610 -0.1402 0.1452 0.2890 0.2872 -0.2616 -0.4204 -0.2831 -0.1901 0.0036 0.0781 -0.0826 0.1588 -0.2782 0.2510 -0.1069 -0.2692 0.2306 0.2521 0.0306 0.2524 -0.4218 0.2478 0.2343 -0.1031 0.1037 0.1598 1.1848 1.6142 -0.1352 0.5774 0.5491 0.0103 0.0209 0.7219 -0.8643 -0.5578 1.3595 1.5385 1.0015 0.7416 -0.4342 0.2279 0.5667 1.1589 0.7100 0.1823 0.4171 0.7051 0.0794 1.3267 1.2659 0.3197 0.3947 0.3436 -0.1415 0.6607 1.0071 0.7726 -0.2840 0.8801 0.0848 0.2486 -0.2920 -0.0004 0.2806 0.2987 -0.2709 0.1473 -0.2580 -0.0499 -0.0755 0.2000 0.1535 -0.0285 -0.0520 -0.2523 -0.2505 -0.0437 -0.2323 0.2023 0.2061 -0.1365 0.0744 0.0344 -0.2891 0.2341 -0.1556 0.1459 0.2533 -0.0583 0.0243 -0.2949 -0.1530 0.1546 -0.0340 -0.1562 -0.0516 0.0640 0.1824 -0.0675 -0.2065 -0.0052 -0.1682 -0.1520 0.0060 0.0450 0.0813 -0.0234 0.0657 0.3219 -0.1871 0.0658 -0.2103 0.0060 -0.2831 -0.1811 -0.0988 0.2378 -0.0761 0.1714 -0.1596 -0.0011 0.0609 0.4003 0.3687 -0.2879 0.0910 0.0604 -0.2222 -0.2735 -0.1155 -0.6192 -0.7804 -0.0506 -0.4205 -0.2584 -0.2020 -0.0008 0.0534 1.0185 -0.0307 -0.0539 -0.2020 0.0368 -0.1847 0.0886 -0.4086 -0.4648 -0.3785 0.1542 -0.5176 -0.3207 0.1893 -0.0313 -0.5297 -0.1261 -0.2749 -0.6152 -0.5914 -0.3089 0.2432 -0.3955 -0.1711 0.1710 -0.4477 0.0718 0.5049 -0.1362 -0.2218 0.1637 -0.1282 -0.1008 0.1445 0.4527 -0.4887 0.0503 0.1453 0.1316 -0.3311 -0.1081 -0.7699 0.4062 -0.1105 -0.0855 0.0630 -0.1469 -0.2533 0.3976 0.0418 0.5294 0.3982 0.1027 -0.0973 -0.1282 0.2491 0.0425 0.0533 0.1578 -0.8403 -0.0535 -0.0048 1.1109 -0.0466 0.4044 0.6366 0.1863 0.5660 0.2839 0.8793 -0.5497 0.0057 0.3468 0.0980 0.3364 0.4669 0.1466 0.7883 -0.1743 0.4444 0.4535 0.1521 0.7476 0.2246 0.4473 0.2829 0.8881 0.4666 0.6334 0.3105 0.9571 0.2808 0.6483 0.1180 -0.4558 1.2486 0.2453 ⋮
    mdl.layerbiases {2}
    ans =20×10.6147 0.1891 -0.2767 -0.2977 1.3655 0.0347 0.1509 -0.4839 -0.3960 0.9248⋮

    最后的全连接层有两个输出,响应变量中的每个类都有一个输出。层输出的数量对应于层权重和层偏差的第一个维度。

    大小(Mdl.LayerWeights{结束})
    ans =1×22 20
    大小(mdl.layerbiases {end})
    ans =1×22 1

    要估算培训的分类器的性能,计算测试集分类错误MDL.

    testError =损失(Mdl XTest,欧美,...“LossFun”“classiferror”
    testError = 0.0774
    准确度= 1 -测试误差
    精度= 0.9226

    MDL.准确地分类测试集中大约92%的观察结果。

    介绍了R2021a