exponenta event banner

fitcnet

Модель классификации нейронных сетей поезда

    Описание

    Использовать fitcnet для обучения прямой, полностью связанной нейронной сети для классификации. Первый полностью связанный уровень нейронной сети имеет соединение от сетевого входа (данные предиктора), а каждый последующий уровень имеет соединение от предыдущего уровня. Каждый полностью связанный слой умножает входной сигнал на весовую матрицу и затем добавляет вектор смещения. За каждым полностью подключенным уровнем следует функция активации. Конечный полностью подключенный уровень и последующая функция активации softmax дают выход сети, а именно оценки классификации (апостериорные вероятности) и предсказанные метки. Дополнительные сведения см. в разделе Структура нейронной сети.

    пример

    Mdl = fitcnet(Tbl,ResponseVarName) возвращает модель классификации нейронной сети Mdl обучены с использованием предикторов в таблице Tbl и метки классов в ResponseVarName табличная переменная.

    Mdl = fitcnet(Tbl,formula) возвращает модель классификации нейронной сети, обученную с использованием данных выборки в таблице Tbl. Входной аргумент formula является пояснительной моделью ответа и подмножеством переменных предиктора в Tbl используется для подгонки Mdl.

    Mdl = fitcnet(Tbl,Y) возвращает модель классификации нейронной сети с использованием переменных предиктора в таблице Tbl и метки класса в векторе Y.

    пример

    Mdl = fitcnet(X,Y) возвращает модель классификации нейронной сети, обученную с использованием предикторов в матрице X и метки класса в векторе Y.

    пример

    Mdl = fitcnet(___,Name,Value) указывает параметры, использующие один или несколько аргументов «имя-значение» в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно настроить количество выходов и функций активации для полностью соединенных слоев, указав LayerSizes и Activations аргументы «имя-значение».

    Примеры

    свернуть все

    Обучение нейросетевого классификатора и оценка производительности классификатора на тестовом наборе.

    Прочитать образец файла CreditRating_Historical.dat в таблицу. Данные предиктора состоят из финансовых коэффициентов и отраслевой информации для списка корпоративных клиентов. Переменная ответа состоит из кредитных рейтингов, присвоенных рейтинговым агентством. Предварительный просмотр первых нескольких строк набора данных.

    creditrating = readtable("CreditRating_Historical.dat");
    head(creditrating)
    ans=8×8 table
         ID      WC_TA     RE_TA     EBIT_TA    MVE_BVTD    S_TA     Industry    Rating 
        _____    ______    ______    _______    ________    _____    ________    _______
    
        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 переменная является уникальным идентификатором клиента, то есть length(unique(creditrating.ID)) равно количеству наблюдений в creditrating, ID переменная является плохим предиктором. Удалить ID переменную из таблицы и преобразовать Industry переменной к categorical переменная.

    creditrating = removevars(creditrating,"ID");
    creditrating.Industry = categorical(creditrating.Industry);

    Преобразовать Rating переменная ответа на порядковый номер categorical переменная.

    creditrating.Rating = categorical(creditrating.Rating, ...
        ["AAA","AA","A","BBB","BB","B","CCC"],"Ordinal",true);

    Разбейте данные на обучающие и тестовые наборы. Используйте примерно 80% наблюдений для обучения модели нейронной сети и 20% наблюдений для проверки производительности обученной модели на новых данных. Использовать cvpartition для секционирования данных.

    rng("default") % For reproducibility of the partition
    c = cvpartition(creditrating.Rating,"Holdout",0.20);
    trainingIndices = training(c); % Indices for the training set
    testIndices = test(c); % Indices for the test set
    creditTrain = creditrating(trainingIndices,:);
    creditTest = creditrating(testIndices,:);

    Обучение классификатора нейронной сети путем прохождения обучающих данных creditTrain в fitcnet функция.

    Mdl = fitcnet(creditTrain,"Rating")
    Mdl = 
      ClassificationNeuralNetwork
               PredictorNames: {'WC_TA'  'RE_TA'  'EBIT_TA'  'MVE_BVTD'  'S_TA'  'Industry'}
                 ResponseName: 'Rating'
        CategoricalPredictors: 6
                   ClassNames: [AAA    AA    A    BBB    BB    B    CCC]
               ScoreTransform: 'none'
              NumObservations: 3146
                   LayerSizes: 10
                  Activations: 'relu'
        OutputLayerActivation: 'softmax'
                       Solver: 'LBFGS'
              ConvergenceInfo: [1×1 struct]
              TrainingHistory: [1000×7 table]
    
    
      Properties, Methods
    
    

    Mdl является обученным ClassificationNeuralNetwork классификатор. Можно использовать точечную нотацию для доступа к свойствам Mdl. Например, можно указать Mdl.TrainingHistory получить более подробную информацию об истории обучения модели нейронной сети.

    Оцените производительность классификатора на тестовом наборе путем вычисления ошибки классификации тестового набора. Визуализация результатов с помощью матрицы путаницы.

    testAccuracy = 1 - loss(Mdl,creditTest,"Rating", ...
        "LossFun","classiferror")
    testAccuracy = 0.8003
    
    confusionchart(creditTest.Rating,predict(Mdl,creditTest))

    Укажите структуру нейросетевого классификатора, включая размер полностью соединенных слоев.

    Загрузить ionosphere набор данных, включающий в себя данные радиолокационного сигнала. X содержит данные предиктора, и Y - ответная переменная, значения которой представляют либо хорошие («g»), либо плохие («b») радиолокационные сигналы.

    load ionosphere

    Разделите данные на учебные данные (XTrain и YTrain) и данные испытаний (XTest и YTest) с использованием стратифицированного раздела удержания. Зарезервируйте примерно 30% наблюдений для тестирования и используйте остальные наблюдения для обучения.

    rng("default") % For reproducibility of the partition
    cvp = cvpartition(Y,"Holdout",0.3);
    XTrain = X(training(cvp),:);
    YTrain = Y(training(cvp));
    XTest = X(test(cvp),:);
    YTest = Y(test(cvp));

    Обучение нейросетевого классификатора. Укажите наличие 35 выходов в первом полностью подключенном уровне и 20 выходов во втором полностью подключенном уровне. По умолчанию оба слоя используют функцию активации ReLU. Можно изменить функции активации для полностью соединенных слоев с помощью Activations аргумент «имя-значение».

    Mdl = fitcnet(XTrain,YTrain, ...
        "LayerSizes",[35 20])
    Mdl = 
      ClassificationNeuralNetwork
                 ResponseName: 'Y'
        CategoricalPredictors: []
                   ClassNames: {'b'  'g'}
               ScoreTransform: 'none'
              NumObservations: 246
                   LayerSizes: [35 20]
                  Activations: 'relu'
        OutputLayerActivation: 'softmax'
                       Solver: 'LBFGS'
              ConvergenceInfo: [1×1 struct]
              TrainingHistory: [47×7 table]
    
    
      Properties, Methods
    
    

    Доступ к весам и смещениям для полностью соединенных слоев обученного классификатора с помощью LayerWeights и LayerBiases свойства Mdl. Первые два элемента каждого свойства соответствуют значениям для первых двух полностью соединенных слоев, а третий элемент соответствует значениям для конечного полностью соединенного слоя с функцией активации softmax для классификации. Например, отображение весов и смещений для второго полностью соединенного слоя.

    Mdl.LayerWeights{2}
    ans = 20×35
    
        0.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×1
    
        0.6147
        0.1891
       -0.2767
       -0.2977
        1.3655
        0.0347
        0.1509
       -0.4839
       -0.3960
        0.9248
          ⋮
    
    

    Конечный полностью подключенный уровень имеет два выхода, по одному для каждого класса в переменной отклика. Количество выходов слоя соответствует первому размеру весов слоя и смещений слоя.

    size(Mdl.LayerWeights{end})
    ans = 1×2
    
         2    20
    
    
    size(Mdl.LayerBiases{end})
    ans = 1×2
    
         2     1
    
    

    Для оценки производительности обученного классификатора вычислите ошибку классификации тестового набора для Mdl.

    testError = loss(Mdl,XTest,YTest, ...
        "LossFun","classiferror")
    testError = 0.0774
    
    accuracy = 1 - testError
    accuracy = 0.9226
    

    Mdl точно классифицирует приблизительно 92% наблюдений в тестовом наборе.

    При каждой итерации тренировочного процесса вычислять валидационные потери нейронной сети. Остановите процесс обучения раньше, если потеря проверки достигает разумного минимума.

    Загрузить patients набор данных. Создайте таблицу из набора данных. Каждая строка соответствует одному пациенту, и каждый столбец соответствует диагностической переменной. Используйте Smoker переменная в качестве ответной переменной, а остальные переменные в качестве предикторов.

    load patients
    tbl = table(Diastolic,Systolic,Gender,Height,Weight,Age,Smoker);

    Разделение данных на набор обучения tblTrain и набор проверки tblValidation с использованием стратифицированной секции удержания. Программное обеспечение резервирует приблизительно 30% наблюдений для набора данных проверки и использует остальные наблюдения для набора данных обучения.

    rng("default") % For reproducibility of the partition
    c = cvpartition(tbl.Smoker,"Holdout",0.30);
    trainingIndices = training(c);
    validationIndices = test(c);
    tblTrain = tbl(trainingIndices,:);
    tblValidation = tbl(validationIndices,:);

    Обучение классификатора нейронной сети с помощью обучающего набора. Укажите Smoker столбец tblTrain в качестве переменной ответа. Оцените модель в каждой итерации с помощью набора проверки. Укажите отображение информации об обучении в каждой итерации с помощью Verbose аргумент «имя-значение». По умолчанию тренировочный процесс заканчивается раньше, если потери при перекрестной энтропии проверки больше или равны минимальным потерям при перекрестной энтропии проверки, вычисленным на данный момент, шесть раз подряд. Чтобы изменить количество раз, когда допустимо, чтобы потеря проверки была больше или равна минимуму, укажите ValidationPatience аргумент «имя-значение».

    Mdl = fitcnet(tblTrain,"Smoker", ...
        "ValidationData",tblValidation, ...
        "Verbose",1);
    |==========================================================================================|
    | Iteration  | Train Loss | Gradient   | Step       | Iteration  | Validation | Validation |
    |            |            |            |            | Time (sec) | Loss       | Checks     |
    |==========================================================================================|
    |           1|    2.602935|   26.866935|    0.262009|    0.001800|    2.793048|           0|
    |           2|    1.470816|   42.594723|    0.058323|    0.001460|    1.247046|           0|
    |           3|    1.299292|   25.854432|    0.034910|    0.000456|    1.507857|           1|
    |           4|    0.710465|   11.629107|    0.013616|    0.000617|    0.889157|           0|
    |           5|    0.647783|    2.561740|    0.005753|    0.000957|    0.766728|           0|
    |           6|    0.645541|    0.681579|    0.001000|    0.000706|    0.776072|           1|
    |           7|    0.639611|    1.544692|    0.007013|    0.005517|    0.776320|           2|
    |           8|    0.604189|    5.045676|    0.064190|    0.000534|    0.744919|           0|
    |           9|    0.565364|    5.851552|    0.068845|    0.000504|    0.694226|           0|
    |          10|    0.391994|    8.377717|    0.560480|    0.000370|    0.425466|           0|
    |==========================================================================================|
    | Iteration  | Train Loss | Gradient   | Step       | Iteration  | Validation | Validation |
    |            |            |            |            | Time (sec) | Loss       | Checks     |
    |==========================================================================================|
    |          11|    0.383843|    0.630246|    0.110270|    0.000749|    0.428487|           1|
    |          12|    0.369289|    2.404750|    0.084395|    0.000531|    0.405728|           0|
    |          13|    0.357839|    6.220679|    0.199197|    0.000353|    0.378480|           0|
    |          14|    0.344974|    2.752717|    0.029013|    0.000330|    0.367279|           0|
    |          15|    0.333747|    0.711398|    0.074513|    0.000328|    0.348499|           0|
    |          16|    0.327763|    0.804818|    0.122178|    0.000348|    0.330237|           0|
    |          17|    0.327702|    0.778169|    0.009810|    0.000365|    0.329095|           0|
    |          18|    0.327277|    0.020615|    0.004377|    0.000380|    0.329141|           1|
    |          19|    0.327273|    0.010018|    0.003313|    0.000432|    0.328773|           0|
    |          20|    0.327268|    0.019497|    0.000805|    0.000776|    0.328831|           1|
    |==========================================================================================|
    | Iteration  | Train Loss | Gradient   | Step       | Iteration  | Validation | Validation |
    |            |            |            |            | Time (sec) | Loss       | Checks     |
    |==========================================================================================|
    |          21|    0.327228|    0.113983|    0.005397|    0.000509|    0.329085|           2|
    |          22|    0.327138|    0.240166|    0.012159|    0.000333|    0.329406|           3|
    |          23|    0.326865|    0.428912|    0.036841|    0.000381|    0.329952|           4|
    |          24|    0.325797|    0.255227|    0.139585|    0.000339|    0.331246|           5|
    |          25|    0.325181|    0.758050|    0.135868|    0.000890|    0.332035|           6|
    |==========================================================================================|
    

    Создайте график, сравнивающий обучающие перекрестные энтропийные потери и проверочные перекрестные энтропийные потери в каждой итерации. По умолчанию fitcnet сохраняет информацию о потерях внутри TrainingHistory свойство объекта Mdl. Доступ к этой информации можно получить с помощью точечной нотации.

    iteration = Mdl.TrainingHistory.Iteration;
    trainLosses = Mdl.TrainingHistory.TrainingLoss;
    valLosses = Mdl.TrainingHistory.ValidationLoss;
    
    plot(iteration,trainLosses,iteration,valLosses)
    legend(["Training","Validation"])
    xlabel("Iteration")
    ylabel("Cross-Entropy Loss")

    Проверьте итерацию, соответствующую минимальным потерям при проверке. Последняя возвращенная модель Mdl является моделью, обученной этой итерации.

    [~,minIdx] = min(valLosses);
    iteration(minIdx)
    ans = 19
    

    Оцените потерю перекрестной проверки моделей нейронных сетей с различными сильностями регуляризации и выберите силу регуляризации, соответствующую наилучшей модели.

    Прочитать образец файла CreditRating_Historical.dat в таблицу. Данные предиктора состоят из финансовых коэффициентов и отраслевой информации для списка корпоративных клиентов. Переменная ответа состоит из кредитных рейтингов, присвоенных рейтинговым агентством. Предварительный просмотр первых нескольких строк набора данных.

    creditrating = readtable("CreditRating_Historical.dat");
    head(creditrating)
    ans=8×8 table
         ID      WC_TA     RE_TA     EBIT_TA    MVE_BVTD    S_TA     Industry    Rating 
        _____    ______    ______    _______    ________    _____    ________    _______
    
        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 переменная является уникальным идентификатором клиента, то есть length(unique(creditrating.ID)) равно количеству наблюдений в creditrating, ID переменная является плохим предиктором. Удалить ID переменную из таблицы и преобразовать Industry переменной к categorical переменная.

    creditrating = removevars(creditrating,"ID");
    creditrating.Industry = categorical(creditrating.Industry);

    Преобразовать Rating переменная ответа на порядковый номер categorical переменная.

    creditrating.Rating = categorical(creditrating.Rating, ...
        ["AAA","AA","A","BBB","BB","B","CCC"],"Ordinal",true);

    Создать cvpartition объект для стратифицированной пятикратной перекрестной проверки. cvp разбивает данные на пять складок, где каждая складка имеет примерно одинаковые пропорции различных кредитных рейтингов. Задайте для случайного начального числа значение по умолчанию для воспроизводимости раздела.

    rng("default")
    cvp = cvpartition(creditrating.Rating,"KFold",5);

    Вычислите ошибку классификации перекрестной проверки для классификаторов нейронных сетей с различными уровнями регуляризации. Попробуйте регуляризировать сильные стороны порядка 1/n, где n - количество наблюдений. Укажите, чтобы стандартизировать данные перед обучением моделей нейронных сетей.

    1/size(creditrating,1)
    ans = 2.5432e-04
    
    lambda = (0:0.5:5)*1e-4;
    cvloss = zeros(length(lambda),1);
    
    for i = 1:length(lambda)
        cvMdl = fitcnet(creditrating,"Rating","Lambda",lambda(i), ...
            "CVPartition",cvp,"Standardize",true);
        cvloss(i) = kfoldLoss(cvMdl,"LossFun","classiferror");
    end

    Постройте график результатов. Найдите уровень регуляризации, соответствующий самой низкой ошибке классификации перекрестной проверки.

    plot(lambda,cvloss)
    xlabel("Regularization Strength")
    ylabel("Cross-Validation Loss")

    [~,idx] = min(cvloss);
    bestLambda = lambda(idx)
    bestLambda = 5.0000e-05
    

    Обучение классификатора нейронной сети с помощью bestLambda сила регуляризации.

    Mdl = fitcnet(creditrating,"Rating","Lambda",bestLambda, ...
        "Standardize",true)
    Mdl = 
      ClassificationNeuralNetwork
               PredictorNames: {'WC_TA'  'RE_TA'  'EBIT_TA'  'MVE_BVTD'  'S_TA'  'Industry'}
                 ResponseName: 'Rating'
        CategoricalPredictors: 6
                   ClassNames: [AAA    AA    A    BBB    BB    B    CCC]
               ScoreTransform: 'none'
              NumObservations: 3932
                   LayerSizes: 10
                  Activations: 'relu'
        OutputLayerActivation: 'softmax'
                       Solver: 'LBFGS'
              ConvergenceInfo: [1×1 struct]
              TrainingHistory: [1000×7 table]
    
    
      Properties, Methods
    
    

    Входные аргументы

    свернуть все

    Образец данных, используемых для обучения модели, указанный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Дополнительно, Tbl может содержать один дополнительный столбец для переменной ответа. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.

    • Если Tbl содержит переменную ответа, и вы хотите использовать все оставшиеся переменные в Tbl в качестве предикторов, затем укажите переменную ответа, используя ResponseVarName.

    • Если Tbl содержит переменную ответа, и требуется использовать только подмножество остальных переменных в Tbl в качестве предикторов, затем укажите формулу с помощью formula.

    • Если Tbl не содержит переменную ответа, затем укажите переменную ответа с помощью Y. Длина переменной ответа и количество строк в Tbl должно быть равным.

    Типы данных: table

    Имя переменной ответа, указанное как имя переменной в Tbl.

    Необходимо указать ResponseVarName в виде вектора символов или строкового скаляра. Например, если переменная ответа Y хранится как Tbl.Y, затем укажите его как 'Y'. В противном случае программа обрабатывает все столбцы Tbl, в том числе Y, в качестве предикторов при обучении модели.

    Переменная ответа должна быть категориальным, символьным или строковым массивом; логический или числовой вектор; или массив ячеек символьных векторов. Если Y является символьным массивом, то каждый элемент переменной ответа должен соответствовать одной строке массива.

    Рекомендуется указывать порядок классов с помощью ClassNames аргумент «имя-значение».

    Типы данных: char | string

    Пояснительная модель переменной ответа и подмножество переменных предиктора, указанное как вектор символов или строковый скаляр в форме 'Y~x1+x2+x3'. В этой форме Y представляет переменную ответа, и x1, x2, и x3 представляют переменные предиктора.

    Задание подмножества переменных в Tbl в качестве предикторов для обучения модели используйте формулу. Если задать формулу, программа не будет использовать переменные в Tbl которые не отображаются в formula.

    Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимые идентификаторы MATLAB ®. Имена переменных можно проверить вTbl с помощью isvarname функция. Если имена переменных недопустимы, их можно преобразовать с помощью matlab.lang.makeValidName функция.

    Типы данных: char | string

    Метки классов, используемые для обучения модели, указываются как числовой, категориальный или логический вектор; символьный или строковый массив; или массив ячеек символьных векторов.

    • Если Y является символьным массивом, то каждый элемент меток класса должен соответствовать одной строке массива.

    • Длина Y должно быть равно количеству строк в Tbl или X.

    • Рекомендуется указать порядок классов с помощью ClassNames аргумент «имя-значение».

    Типы данных: single | double | categorical | logical | char | string | cell

    Данные предиктора, используемые для обучения модели, указаны как числовая матрица.

    По умолчанию программа обрабатывает каждую строку X как одно наблюдение, и каждый столбец как один предиктор.

    Длина Y и число замечаний в X должно быть равным.

    Чтобы указать имена предикторов в порядке их появления в X, используйте PredictorNames аргумент «имя-значение».

    Примечание

    Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений.

    Типы данных: single | double

    Примечание

    Программное обеспечение обрабатывает NaN, пустой символьный вектор (''), пустая строка (""), <missing>, и <undefined> элементы как отсутствующие значения и удаляет наблюдения с любой из следующих характеристик:

    • Отсутствует значение в переменной ответа (например, Y или ValidationData{2})

    • По крайней мере одно отсутствующее значение в наблюдении предиктора (например, строка в X или ValidationData{1})

    • NaN значение или 0 вес (например, значение в Weights или ValidationData{3})

    Аргументы пары «имя-значение»

    Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

    Пример: fitcnet(X,Y,'LayerSizes',[10 10],'Activations',["relu","tanh"]) определяет создание нейронной сети с двумя полностью соединенными слоями, каждый с 10 выходами. Первый слой использует функцию активации выпрямленной линейной единицы (ReLU), а второй - функцию активации гиперболической касательной.
    Варианты нейронной сети

    свернуть все

    Размеры полностью соединенных слоев в модели нейронной сети, заданные как положительный целочисленный вектор. i-й элемент LayerSizes - количество выходов в i-ом полностью связном слое модели нейронной сети.

    LayerSizes не включает размер конечного полностью подключенного уровня, который использует функцию активации softmax. Дополнительные сведения см. в разделе Структура нейронной сети.

    Пример: 'LayerSizes',[100 25 10]

    Функции активации для полностью соединенных слоев модели нейронной сети, заданные как вектор символов, скаляр строк, строковый массив или массив ячеек векторов символов со значениями из этой таблицы.

    СтоимостьОписание
    'relu'

    Функция выпрямленного линейного блока (ReLU) - выполняет пороговую операцию для каждого элемента входа, где любое значение меньше нуля устанавливается равным нулю, то есть

    f (x) ={x,x≥00,x<0

    'tanh'

    Функция гиперболической касательной (tanh) - применяет tanh функция к каждому входному элементу

    'sigmoid'

    Sigmoid function - выполняет следующую операцию над каждым входным элементом:

    f (x) = 11 + e − x

    'none'

    Функция Identity - возвращает каждый входной элемент без какого-либо преобразования, то есть f (x) = x

    • Если указана только одна функция активации, то Activations - функция активации для каждого полностью связанного уровня модели нейронной сети, исключая конечный полностью связанный уровень. Функция активации для конечного полностью подключенного уровня всегда является softmax (см. Структура нейронной сети).

    • Если указан массив функций активации, то i-й элемент Activations - функция активации для i-го уровня модели нейронной сети.

    Пример: 'Activations','sigmoid'

    Функция инициализации полностью соединенных весов слоев, указанных как 'glorot' или 'he'.

    СтоимостьОписание
    'glorot'Инициализируйте веса с помощью инициализатора Glorot [1] (также известного как инициализатор Xavier). Для каждого слоя инициализатор Глорота независимо отбирает образцы из однородного распределения с нулевым средним и переменным. 2/(I+O), где I - входной размер и O - выходной размер слоя.
    'he'Инициализируйте веса с помощью инициализатора He [2]. Для каждого слоя инициализатор He выполняет выборку из нормального распределения с нулевым средним значением и дисперсией 2/I, где I - входной размер слоя.

    Пример: 'LayerWeightsFunction','he'

    Тип начальных полностью соединенных смещений слоя, указанный как 'zeros' или 'ones'.

    • Если указано значение 'zeros', то каждый полностью соединенный слой имеет начальное смещение 0.

    • Если указано значение 'ones', то каждый полностью соединенный слой имеет начальное смещение 1.

    Пример: 'LayerBiasesInitializer','ones'

    Типы данных: char | string

    Измерение наблюдения данных предиктора, указанное как 'rows' или 'columns'.

    Примечание

    Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений. Невозможно указать 'ObservationsIn','columns' для данных предиктора в таблице.

    Пример: 'ObservationsIn','columns'

    Типы данных: char | string

    Сила члена регуляризации, определяемая как неотрицательный скаляр. Программное обеспечение составляет целевую функцию минимизации из функции потери перекрестной энтропии и члена штрафа гребня (L2).

    Пример: 'Lambda',1e-4

    Типы данных: single | double

    Флаг для стандартизации данных предиктора, указанных как числовые или логические 0 (false) или 1 (true). Если установить Standardize кому trueзатем программное обеспечение центрирует и масштабирует каждую числовую предикторную переменную на соответствующее среднее значение столбца и стандартное отклонение. Программное обеспечение не стандартизирует категориальные предикторы.

    Пример: 'Standardize',true

    Типы данных: single | double | logical

    Параметры управления сходимостью

    свернуть все

    Уровень детализации, указанный как 0 или 1. 'Verbose' аргумент name-value управляет объемом диагностической информации, которая fitcnet отображается в командной строке.

    СтоимостьОписание
    0fitcnet не отображает диагностическую информацию.
    1fitcnet периодически отображает диагностическую информацию.

    По умолчанию StoreHistory имеет значение true и fitcnet сохраняет диагностическую информацию внутри Mdl. Использовать Mdl.TrainingHistory для доступа к диагностической информации.

    Пример: 'Verbose',1

    Типы данных: single | double

    Частота подробной печати, которая представляет собой число итераций между печатью в командное окно, указанное как положительный целочисленный скаляр. Значение 1 указывает на печать диагностической информации на каждой итерации.

    Примечание

    Чтобы использовать этот аргумент «имя-значение», установите Verbose кому 1.

    Пример: 'VerboseFrequency',5

    Типы данных: single | double

    Флаг для хранения истории обучения, указанный как числовой или логический 0 (false) или 1 (true). Если StoreHistory имеет значение true, то программное обеспечение хранит диагностическую информацию внутри Mdl, доступ к которому можно получить с помощью Mdl.TrainingHistory.

    Пример: 'StoreHistory',false

    Типы данных: single | double | logical

    Максимальное число итераций обучения, указанное как положительный целочисленный скаляр.

    Программное обеспечение возвращает обученную модель независимо от того, успешно ли сходится программа обучения. Mdl.ConvergenceInfo содержит информацию о сходимости.

    Пример: 'IterationLimit',1e8

    Типы данных: single | double

    Относительный градиентный допуск, заданный как неотрицательный скаляр.

    Пусть ℒt - функция потерь при тренировочной итерации t, ∇ℒt - градиент функции потерь по отношению к весам и смещениям при итерации t и ∇ℒ0 - градиент функции потерь в начальной точке. Если max|∇ℒt|≤a⋅GradientTolerance, где a = max (1,min'ℒt|,max|∇ℒ0|), то тренировочный процесс завершается.

    Пример: 'GradientTolerance',1e-5

    Типы данных: single | double

    Допуск потерь, заданный как неотрицательный скаляр.

    Если потеря функции в некоторой итерации меньше, чем LossTolerance, то тренировочный процесс завершается.

    Пример: 'LossTolerance',1e-8

    Типы данных: single | double

    Допуск размера шага, заданный как неотрицательный скаляр.

    Если размер шага в некоторой итерации меньше, чем StepTolerance, то тренировочный процесс завершается.

    Пример: 'StepTolerance',1e-4

    Типы данных: single | double

    Данные проверки для определения сходимости обучения, указанные как массив ячеек или таблица.

    В процессе обучения программное обеспечение периодически оценивает потери при проверке с помощью ValidationData. Если потеря проверки увеличивается более чем ValidationPatience несколько раз подряд программное обеспечение прекращает обучение.

    Можно указать ValidationData как таблица, если используется таблица Tbl данных предиктора, который содержит переменную ответа. В этом случае ValidationData должны содержать те же предикторы и ответ, что и в Tbl. Программа не применяет веса к наблюдениям, даже если Tbl содержит вектор весов. Для указания весов необходимо указать ValidationData в виде массива ячеек.

    При указании ValidationData в качестве массива ячеек он должен иметь следующий формат:

    • ValidationData{1} должен иметь тот же тип данных и ориентацию, что и данные предиктора. То есть, если вы используете матрицу предиктора X, то ValidationData{1} должна быть матрицей m-by-p или p-by-m данных предиктора, которая имеет ту же ориентацию, что и X. Переменные предиктора в данных обучения X и ValidationData{1} должны соответствовать. Аналогично, если используется таблица предикторов Tbl данных предиктора, то ValidationData{1} должна быть таблицей, содержащей те же предикторные переменные, что и в Tbl. Количество наблюдений в ValidationData{1} и данные предиктора могут изменяться.

    • ValidationData{2} должны соответствовать типу данных и формату переменной ответа, либо Y или ResponseVarName. Если ValidationData{2} является массивом меток класса, то он должен иметь то же количество элементов, что и количество наблюдений в ValidationData{1}. Набор всех отдельных меток ValidationData{2} должен быть подмножеством всех отдельных меток Y. Если ValidationData{1} является таблицей, то ValidationData{2} может быть именем переменной ответа в таблице. Если вы хотите использовать то же самое ResponseVarName или formula, можно указать ValidationData{2} как [].

    • При необходимости можно указать ValidationData{3} в виде m-мерного числового вектора весов наблюдения или имени переменной в таблице ValidationData{1} содержит веса наблюдения. Программа нормализует весовые коэффициенты с данными проверки таким образом, чтобы они равнялись 1.

    При указании ValidationData и хотите отобразить потерю проверки в командной строке, set Verbose кому 1.

    Число итераций между оценками проверки, указанное как положительный целочисленный скаляр. Значение 1 указывает на оценку метрик проверки при каждой итерации.

    Примечание

    Чтобы использовать этот аргумент «имя-значение», необходимо указать ValidationData.

    Пример: 'ValidationFrequency',5

    Типы данных: single | double

    Условие остановки для оценок проверки, указанное как неотрицательный целочисленный скаляр. Учебный процесс останавливается, если потеря проверки больше или равна минимальной потере проверки, рассчитанной на данный момент. ValidationPatience раз за разом. Вы можете проверить Mdl.TrainingHistory таблица для просмотра текущей суммы раз, когда потеря проверки больше или равна минимуму (Validation Checks).

    Пример: 'ValidationPatience',10

    Типы данных: single | double

    Другие варианты классификации

    свернуть все

    Список категориальных предикторов, указанный как одно из значений в этой таблице. В описаниях предполагается, что данные предиктора имеют наблюдения в строках и предикторы в столбцах.

    СтоимостьОписание
    Вектор положительных целых чисел

    Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до p, где p - количество предикторов, используемых для обучения модели.

    Если fitcnet использует подмножество входных переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. 'CategoricalPredictors' значения не подсчитывают переменную отклика, переменную веса наблюдения и любые другие переменные, которые функция не использует.

    Логический вектор

    A true ввод означает, что соответствующий столбец данных предиктора является категориальной переменной. Длина вектора равна p.

    Символьная матрицаКаждая строка матрицы является именем предикторной переменной. Имена должны соответствовать записям в PredictorNames. Поместите имена с дополнительными пробелами, чтобы каждая строка символьной матрицы имела одинаковую длину.
    Строковый массив или массив ячеек символьных векторовКаждый элемент массива является именем переменной предиктора. Имена должны соответствовать записям в PredictorNames.
    'all'Все предикторы категоричны.

    По умолчанию, если данные предиктора находятся в таблице (Tbl), fitcnet предполагает, что переменная категорична, если она является логическим вектором, категориальным вектором, символьным массивом, строковым массивом или массивом ячеек символьных векторов. Если данные предиктора являются матрицей (X), fitcnet предполагает, что все предикторы непрерывны. Чтобы определить любые другие предикторы как категориальные предикторы, укажите их с помощью 'CategoricalPredictors' аргумент «имя-значение».

    Для выявленных категориальных предикторов fitcnet создает фиктивные переменные, используя две различные схемы, в зависимости от того, неупорядочена или упорядочена категориальная переменная. Для неупорядоченной категориальной переменной fitcnet создает одну фиктивную переменную для каждого уровня категориальной переменной. Для упорядоченной категориальной переменной fitcnet создает на одну фиктивную переменную меньше числа категорий. Дополнительные сведения см. в разделе Автоматическое создание фиктивных переменных.

    Пример: 'CategoricalPredictors','all'

    Типы данных: single | double | logical | char | string | cell

    Имена классов, используемых для обучения, указанные как категориальный, символьный или строковый массив; логический или числовой вектор; или массив ячеек символьных векторов. ClassNames должен иметь тот же тип данных, что и переменная ответа в Tbl или Y.

    Если ClassNames является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

    Использовать ClassNames кому:

    • Укажите порядок занятий во время обучения.

    • Укажите порядок любого измерения входного или выходного аргумента, соответствующего порядку класса. Например, использовать ClassNames для указания порядка размеров Cost или порядок столбцов классификационных баллов, возвращенных predict.

    • Выберите подмножество классов для обучения. Например, предположим, что набор всех различных имен классов в Y является {'a','b','c'}. Обучение модели с использованием наблюдений из классов 'a' и 'c' только, укажите 'ClassNames',{'a','c'}.

    Значение по умолчанию для ClassNames - набор всех различающихся имен классов в переменной ответа в Tbl или Y.

    Пример: 'ClassNames',{'b','g'}

    Типы данных: categorical | char | string | logical | single | double | cell

    Имена переменных предиктора, заданные как строковый массив уникальных имен или массив ячеек уникальных векторов символов. Функциональные возможности 'PredictorNames' зависит от способа ввода данных обучения.

    • Если вы поставляете X и Y, то вы можете использовать 'PredictorNames' назначение имен переменным предиктора в X.

      • Порядок имен в PredictorNames должен соответствовать порядку предиктора в X. Предполагая, что X имеет ориентацию по умолчанию с наблюдениями в строках и предикторами в столбцах, PredictorNames{1} является именем X(:,1), PredictorNames{2} является именем X(:,2)и так далее. Также, size(X,2) и numel(PredictorNames) должно быть равным.

      • По умолчанию PredictorNames является {'x1','x2',...}.

    • Если вы поставляете Tbl, то вы можете использовать 'PredictorNames' чтобы выбрать, какие переменные предиктора использовать в обучении. То есть fitcnet использует только переменные предиктора в PredictorNames и переменную ответа во время обучения.

      • PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной ответа.

      • По умолчанию PredictorNames содержит имена всех переменных предиктора.

      • Хорошей практикой является определение предикторов для обучения с использованием 'PredictorNames' или formulaно не оба.

    Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

    Типы данных: string | cell

    Имя переменной ответа, указанное как вектор символа или скаляр строки.

    • Если вы поставляете Y, то вы можете использовать 'ResponseName' для указания имени переменной ответа.

    • Если вы поставляете ResponseVarName или formula, то вы не можете использовать 'ResponseName'.

    Пример: 'ResponseName','response'

    Типы данных: char | string

    Преобразование оценки, указанное как вектор символа, скаляр строки или дескриптор функции.

    В этой таблице представлены доступные векторы символов и строковые скаляры.

    СтоимостьОписание
    'doublelogit'1/( 1 + e-2x)
    'invlogit'log (x/( 1 - x))
    'ismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в 0
    'logit'1/( 1 + e-x)
    'none' или 'identity'x (без преобразования)
    'sign'-1 для x < 0
    0 для x = 0
    1 для x > 0
    'symmetric'2x – 1
    'symmetricismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в -1
    'symmetriclogit'2/( 1 + e-x) - 1

    Для функции MATLAB или определяемой функции используйте ее дескриптор функции для преобразования оценки. Дескриптор функции должен принимать матрицу (исходные баллы) и возвращать матрицу того же размера (преобразованные баллы).

    Пример: 'ScoreTransform','logit'

    Типы данных: char | string | function_handle

    Веса наблюдения, указанные как неотрицательный числовой вектор или имя переменной в Tbl. Программное обеспечение взвешивает каждое наблюдение в X или Tbl с соответствующим значением в Weights. Длина Weights должно равняться количеству наблюдений в X или Tbl.

    Если входные данные указаны как таблица Tbl, то Weights может быть именем переменной в Tbl содержит числовой вектор. В этом случае необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если вектор весов W хранится как Tbl.W, затем укажите его как 'W'. В противном случае программа обрабатывает все столбцы Tbl, в том числе W, в качестве предикторов или переменной ответа при обучении модели.

    По умолчанию Weights является ones(n,1), где n - количество наблюдений в X или Tbl.

    Программное обеспечение нормализуется Weights для суммирования значения предшествующей вероятности в соответствующем классе.

    Типы данных: single | double | char | string

    Параметры перекрестной проверки

    свернуть все

    Флаг для обучения перекрестно проверенного классификатора, указанный как 'on' или 'off'.

    При указании 'on'затем программное обеспечение обучает перекрестно проверенный классификатор с 10 складками.

    Этот параметр перекрестной проверки можно переопределить с помощью CVPartition, Holdout, KFold, или Leaveout аргумент «имя-значение». Одновременно можно использовать только один аргумент имя-значение перекрестной проверки для создания модели с перекрестной проверкой.

    Либо выполните перекрестную проверку позже путем передачи Mdl кому crossval.

    Пример: 'Crossval','on'

    Типы данных: char | string

    Раздел перекрестной проверки, указанный как cvpartition объект секционирования, созданный cvpartition. Объект секционирования определяет тип перекрестной проверки и индексирования для наборов обучения и проверки.

    Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.

    Пример: Предположим, что вы создаете случайный раздел для пятикратной перекрестной проверки 500 наблюдений с помощью cvp = cvpartition(500,'KFold',5). Затем можно указать модель с перекрестной проверкой с помощью 'CVPartition',cvp.

    Доля данных, используемых для проверки удержания, заданная как скалярное значение в диапазоне (0,1). При указании 'Holdout',pзатем программное обеспечение выполняет следующие действия:

    1. Случайный выбор и резервирование p*100% данных в качестве данных проверки и обучение модели с использованием остальных данных.

    2. Храните компактную обучаемую модель в Trained свойства перекрестной проверенной модели.

    Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.

    Пример: 'Holdout',0.1

    Типы данных: double | single

    Число сгибов для использования в модели с перекрестной проверкой, указанное как положительное целое значение больше 1. При указании 'KFold',kзатем программное обеспечение выполняет следующие действия:

    1. Случайное разбиение данных на k наборы.

    2. Для каждого набора зарезервируйте набор в качестве данных проверки и обучайте модель с помощью другого k - 1 комплект.

    3. Сохранить k компактные, обученные модели в k-by-1 клеточный вектор в Trained свойства перекрестной проверенной модели.

    Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.

    Пример: 'KFold',5

    Типы данных: single | double

    Флаг перекрестной проверки «оставить один», указанный как 'on' или 'off'. При указании 'Leaveout','on', то для каждого из n наблюдений (где n - количество наблюдений, исключая отсутствующие наблюдения, указанные в NumObservations свойство модели), программное обеспечение выполняет следующие действия:

    1. Зарезервируйте одно наблюдение в качестве данных проверки и обучите модель, используя другие наблюдения n-1.

    2. Храните n компактных обученных моделей в клеточном векторе n-by-1 в Trained свойства перекрестной проверенной модели.

    Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.

    Пример: 'Leaveout','on'

    Выходные аргументы

    свернуть все

    Обученный классификатор нейронных сетей, возвращенный в качестве ClassificationNeuralNetwork или ClassificationPartitionedModel объект.

    Если задать какой-либо из аргументов «имя-значение» CrossVal, CVPartition, Holdout, KFold, или Leaveout, то Mdl является ClassificationPartitionedModel объект. В противном случае Mdl является ClassificationNeuralNetwork модель.

    Для ссылки на свойства Mdl, используйте точечную нотацию.

    Подробнее

    свернуть все

    Структура нейронной сети

    Классификатор нейронной сети по умолчанию имеет следующую структуру слоя.

    СтруктураОписание

    Default neural network classifier structure, with one customizable fully connected layer with a ReLU activation

    Ввод - этот уровень соответствует данным предиктора в Tbl или X.

    Первый полностью подключенный уровень - по умолчанию этот уровень имеет 10 выходов.

    • Можно расширить слой или добавить более полностью соединенные слои в сеть, указав LayerSizes аргумент «имя-значение».

    • Вы можете найти веса и смещения для этого слоя в Mdl.LayerWeights{1} и Mdl.LayerBiases{1} свойства Mdlсоответственно.

    Функция активации ReLU - fitcnet применяет эту функцию активации к первому полностью подключенному уровню.

    • Можно изменить функцию активации, указав Activations аргумент «имя-значение».

    Конечный полностью подключенный уровень - этот уровень имеет K выходов, где K - количество классов в переменной отклика.

    • Вы можете найти веса и смещения для этого слоя в Mdl.LayerWeights{end} и Mdl.LayerBiases{end} свойства Mdlсоответственно.

    Функция Softmax (как для двоичной, так и для мультиклассовой классификации) - fitcnet применяет эту функцию активации к окончательному полностью подключенному уровню. Функция принимает каждый вход xi и возвращает следующее, где K - количество классов в переменной ответа:

    f (xi) = exp (xi) ∑j=1Kexp (xj).

    Результаты соответствуют прогнозируемым показателям классификации (или задним вероятностям).

    Output - этот уровень соответствует прогнозируемым меткам класса.

    Пример, показывающий, как классификатор нейронной сети с этой структурой слоя возвращает предсказания, см. в разделе Прогнозирование с использованием структуры слоя классификатора нейронной сети.

    Совет

    • Всегда старайтесь стандартизировать числовые предикторы (см. Standardize). Стандартизация делает предикторы нечувствительными к масштабам, по которым они измеряются.

    Алгоритмы

    свернуть все

    Обучающий решатель

    fitcnet использует ограниченно-запоминающий алгоритм Бройдена-Флектера-Гольдфарба-Шанно квази-Ньютона (LBFGS) [3] в качестве метода минимизации функции потерь, где программное обеспечение минимизирует потери перекрестной энтропии.

    Ссылки

    [1] Глорот, Ксавье и Йошуа Бенгио. «Понимание сложности обучения глубоким нейронным сетям». В материалах тринадцатой международной конференции по искусственному интеллекту и статистике, стр. 249-256. 2010.

    [2] Хэ, Каймин, Сянъу Чжан, Шаоцин Жэнь и Цзянь Сунь. «Углубляясь в выпрямители: Превосходя показатели человеческого уровня по классификации имидженетов». В трудах международной конференции IEEE по компьютерному зрению, стр. 1026-1034. 2015.

    [3] Nocedal, J. и С. Дж. Райт. Численная оптимизация, 2-е изд., Нью-Йорк: Спрингер, 2006.

    Представлен в R2021a