fitcnet

Обучите модель классификации нейронных сетей

    Описание

    Использовать fitcnet для обучения feedforward, полносвязной нейронной сети для классификации. Первый полностью соединенный слой нейронной сети имеет соединение с сетевого входа (данные предиктора), и каждый последующий слой имеет соединение с предыдущего уровня. Каждый полносвязный слой умножает вход на весовую матрицу и затем добавляет вектор смещения. Функция активации следует за каждым полносвязным слоем. Конечный полносвязный слой и последующая функция активации 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 объект для стратифицированной 5-кратной перекрестной проверки. cvp разделяет данные на пять складок, где каждая складка имеет примерно одинаковые пропорции различных кредитных рейтингов. Установите значение по умолчанию для случайного seed для воспроизводимости раздела.

    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,x00,x<0

    'tanh'

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

    'sigmoid'

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

    f(x)=11+ex

    'none'

    Единичная функция - Возвращает каждый входной элемент, не выполняя никакого преобразования, то есть 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. The '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|aGradientTolerance, где 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 и хотите отобразить потерю валидации в командной строке, установите Verbose на 1.

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

    Примечание

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

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

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

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

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

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

    Другие опции классификации

    свернуть все

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

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

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

    Если fitcnet использует подмножество входа переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. The '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'журнал (x/( 1 - x))
    'ismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0
    'logit'1/(1 + ex)
    'none' или 'identity'x (без преобразования)
    'sign'-1 для x < 0
    0 для x = 0
    1 для x > 0
    'symmetric'2 x – 1
    'symmetricismax'Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1
    'symmetriclogit'2/(1 + ex) – 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.

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

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

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

    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-на-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).

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

    Выход - Этот слой соответствует предсказанным меткам классов.

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

    Совет

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

    Алгоритмы

    свернуть все

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

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

    Ссылки

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

    [2] He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. «Delving into rectifers: Overpassing human-level эффективности on imagenet classification». В Трудах международной конференции IEEE по компьютерному зрению, стр. 1026-1034. 2015.

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

    Введенный в R2021a