fitrnet

Обучите модель регрессии нейронной сети

    Описание

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

    пример

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

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

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

    пример

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

    пример

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

    Примеры

    свернуть все

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

    Загрузите carbig набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х. Составьте таблицу, содержащую переменные предикторы Acceleration, Displacement, и так далее, а также переменная отклика MPG.

    load carbig
    cars = table(Acceleration,Displacement,Horsepower, ...
        Model_Year,Origin,Weight,MPG);

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

    rng("default") % For reproducibility of the data partition
    c = cvpartition(length(MPG),"Holdout",0.20);
    trainingIdx = training(c); % Training set indices
    carsTrain = cars(trainingIdx,:);
    testIdx = test(c); % Test set indices
    carsTest = cars(testIdx,:);

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

    Mdl = fitrnet(carsTrain,"MPG","Standardize",true)
    Mdl = 
      RegressionNeuralNetwork
               PredictorNames: {'Acceleration'  'Displacement'  'Horsepower'  'Model_Year'  'Origin'  'Weight'}
                 ResponseName: 'MPG'
        CategoricalPredictors: 5
            ResponseTransform: 'none'
              NumObservations: 314
                   LayerSizes: 10
                  Activations: 'relu'
        OutputLayerActivation: 'linear'
                       Solver: 'LBFGS'
              ConvergenceInfo: [1×1 struct]
              TrainingHistory: [1000×7 table]
    
    
      Properties, Methods
    
    

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

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

    testMSE = loss(Mdl,carsTest,"MPG")
    testMSE = 16.6154
    

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

    Загрузите carbig набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х. Создайте матричный X содержа переменные предикторы Acceleration, Cylinders, и так далее. Сохраните переменную отклика MPG в переменной Y.

    load carbig
    X = [Acceleration Cylinders Displacement Weight];
    Y = MPG;

    Разделите данные в обучающие данные (XTrain и YTrain) и тестовые данные (XTest и YTest). Зарезервируйте приблизительно 20% наблюдений для тестирования и используйте остальную часть наблюдений для обучения.

    rng("default") % For reproducibility of the partition
    c = cvpartition(length(Y),"Holdout",0.20);
    trainingIdx = training(c); % Indices for the training set
    XTrain = X(trainingIdx,:);
    YTrain = Y(trainingIdx);
    testIdx = test(c); % Indices for the test set
    XTest = X(testIdx,:);
    YTest = Y(testIdx);

    Обучите модель регрессии нейронной сети. Задайте, чтобы стандартизировать данные о предикторе и иметь 30 выходных параметров в первом полносвязном слое и 10 выходных параметров во втором полносвязном слое. По умолчанию оба слоя используют исправленный линейный модуль (ReLU) функция активации. Можно изменить функции активации для полносвязных слоев при помощи Activations аргумент значения имени.

    Mdl = fitrnet(XTrain,YTrain,"Standardize",true, ...
        "LayerSizes",[30 10])
    Mdl = 
      RegressionNeuralNetwork
                 ResponseName: 'Y'
        CategoricalPredictors: []
            ResponseTransform: 'none'
              NumObservations: 318
                   LayerSizes: [30 10]
                  Activations: 'relu'
        OutputLayerActivation: 'linear'
                       Solver: 'LBFGS'
              ConvergenceInfo: [1×1 struct]
              TrainingHistory: [1000×7 table]
    
    
      Properties, Methods
    
    

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

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

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

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

    Чтобы оценить эффективность обученной модели, вычислите среднеквадратическую ошибку (MSE) набора тестов для Mdl. Меньшие значения MSE указывают на лучшую эффективность.

    testMSE = loss(Mdl,XTest,YTest)
    testMSE = 17.2022
    

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

    testPredictions = predict(Mdl,XTest);
    plot(YTest,testPredictions,".")
    hold on
    plot(YTest,YTest)
    hold off
    xlabel("True MPG")
    ylabel("Predicted MPG")

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

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

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

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

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

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

    Mdl = fitrnet(tblTrain,"Systolic", ...
        "ValidationData",tblValidation, ...
        "Verbose",1);
    |==========================================================================================|
    | Iteration  | Train Loss | Gradient   | Step       | Iteration  | Validation | Validation |
    |            |            |            |            | Time (sec) | Loss       | Checks     |
    |==========================================================================================|
    |           1|  516.021993| 3220.880047|    0.644473|    0.005193|  568.289202|           0|
    |           2|  313.056754|  229.931405|    0.067026|    0.002658|  304.023695|           0|
    |           3|  308.461807|  277.166516|    0.011122|    0.001363|  296.935608|           0|
    |           4|  262.492770|  844.627934|    0.143022|    0.000531|  240.559640|           0|
    |           5|  169.558740| 1131.714363|    0.336463|    0.000652|  152.531663|           0|
    |           6|   89.134368|  362.084104|    0.382677|    0.001059|   83.147478|           0|
    |           7|   83.309729|  994.830303|    0.199923|    0.000515|   76.634122|           0|
    |           8|   70.731524|  327.637362|    0.041366|    0.000361|   66.421750|           0|
    |           9|   66.650091|  124.369963|    0.125232|    0.000380|   65.914063|           0|
    |          10|   66.404753|   36.699328|    0.016768|    0.000363|   65.357335|           0|
    |==========================================================================================|
    | Iteration  | Train Loss | Gradient   | Step       | Iteration  | Validation | Validation |
    |            |            |            |            | Time (sec) | Loss       | Checks     |
    |==========================================================================================|
    |          11|   66.357143|   46.712988|    0.009405|    0.001130|   65.306106|           0|
    |          12|   66.268225|   54.079264|    0.007953|    0.001023|   65.234391|           0|
    |          13|   65.788550|   99.453225|    0.030942|    0.000436|   64.869708|           0|
    |          14|   64.821095|  186.344649|    0.048078|    0.000295|   64.191533|           0|
    |          15|   62.353896|  319.273873|    0.107160|    0.000290|   62.618374|           0|
    |          16|   57.836593|  447.826470|    0.184985|    0.000287|   60.087065|           0|
    |          17|   51.188884|  524.631067|    0.253062|    0.000287|   56.646294|           0|
    |          18|   41.755601|  189.072516|    0.318515|    0.000286|   49.046823|           0|
    |          19|   37.539854|   78.602559|    0.382284|    0.000290|   44.633562|           0|
    |          20|   36.845322|  151.837884|    0.211286|    0.000286|   47.291367|           1|
    |==========================================================================================|
    | Iteration  | Train Loss | Gradient   | Step       | Iteration  | Validation | Validation |
    |            |            |            |            | Time (sec) | Loss       | Checks     |
    |==========================================================================================|
    |          21|   36.218289|   62.826818|    0.142748|    0.000362|   46.139104|           2|
    |          22|   35.776921|   53.606315|    0.215188|    0.000321|   46.170460|           3|
    |          23|   35.729085|   24.400342|    0.060096|    0.001023|   45.318023|           4|
    |          24|   35.622031|    9.602277|    0.121153|    0.000289|   45.791861|           5|
    |          25|   35.573317|   10.735070|    0.126854|    0.000291|   46.062826|           6|
    |==========================================================================================|
    

    Создайте график, который сравнивает учебную среднеквадратическую ошибку (MSE) и валидацию MSE в каждой итерации. По умолчанию, fitrnet хранит информацию потери в 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("Mean Squared Error")

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

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

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

    Загрузите carbig набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х. Составьте таблицу, содержащую переменные предикторы Acceleration, Displacement, и так далее, а также переменная отклика MPG. Удалите наблюдения из таблицы с отсутствующими значениями.

    load carbig
    tbl = table(Acceleration,Displacement,Horsepower, ...
        Model_Year,Origin,Weight,MPG);
    cars = rmmissing(tbl);

    Создайте cvpartition объект для 5-кратной перекрестной проверки. cvp делит данные в пять сгибов, где каждый сгиб имеет примерно то же количество наблюдений. Установите случайный seed на значение по умолчанию для воспроизводимости раздела.

    rng("default")
    n = size(cars,1);
    cvp = cvpartition(n,"KFold",5);

    Вычислите среднеквадратическую ошибку (MSE) перекрестной проверки для моделей регрессии нейронной сети с различными сильными местами регуляризации. Попробуйте сильные места регуляризации порядка 1/n, где n является количеством наблюдений. Задайте, чтобы стандартизировать данные перед обучением модели нейронной сети.

    1/n
    ans = 0.0026
    
    lambda = (0:0.5:5)*1e-3;
    cvloss = zeros(length(lambda),1);
    for i = 1:length(lambda)
        cvMdl = fitrnet(cars,"MPG","Lambda",lambda(i), ...
            "CVPartition",cvp,"Standardize",true);
        cvloss(i) = kfoldLoss(cvMdl);
    end

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

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

    [~,idx] = min(cvloss);
    bestLambda = lambda(idx)
    bestLambda = 0
    

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

    Mdl = fitrnet(cars,"MPG","Lambda",bestLambda, ...
        "Standardize",true)
    Mdl = 
      RegressionNeuralNetwork
               PredictorNames: {'Acceleration'  'Displacement'  'Horsepower'  'Model_Year'  'Origin'  'Weight'}
                 ResponseName: 'MPG'
        CategoricalPredictors: 5
            ResponseTransform: 'none'
              NumObservations: 392
                   LayerSizes: 10
                  Activations: 'relu'
        OutputLayerActivation: 'linear'
                       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 как вектор символов или строковый скаляр. Например, если Tbl хранит переменную отклика Y как Tbl.Y, затем задайте его как 'Y'. В противном случае программное обеспечение обрабатывает все столбцы Tbl, включая Y, как предикторы, когда обучение модель.

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

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

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

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

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

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

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

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

    По умолчанию программное обеспечение обрабатывает каждую строку 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.

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

    свернуть все

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

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

    Пример: '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 функция активации для каждого полносвязного слоя модели нейронной сети, исключая итоговый полносвязный слой (см. Структуру Нейронной сети).

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

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

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

    ЗначениеОписание
    'glorot'Инициализируйте веса инициализатором Glorot [1] (также известный как инициализатор Ксавьера). Для каждого слоя, Glorot initalizer независимо выборки от равномерного распределения с нулевым средним значением и переменной 2/(I+O), где I входной размер и O выходной размер для слоя.
    'he'Инициализируйте веса Им инициализатор [2]. Для каждого слоя, Он выборки инициализатора от нормального распределения с нулевым средним значением и отклонением 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

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

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

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

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

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

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

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

    свернуть все

    Уровень многословия в виде 0 или 1. 'Verbose' аргумент значения имени управляет суммой диагностической информации это fitrnet отображения в командной строке.

    ЗначениеОписание
    0fitrnet не отображает диагностическую информацию.
    1fitrnet периодически информация о диагностике отображений.

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

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

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

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

    Примечание

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

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

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

    Отметьте, чтобы сохранить учебную историю в виде числового или логического 0 ложь) или 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{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 количество предикторов, используемых, чтобы обучить модель.

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

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

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

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

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

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

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

    Типы данных: single | double | logical | char | string | 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' выбрать который переменные предикторы использовать в обучении. Таким образом, fitrnet использование только переменные предикторы в PredictorNames и переменная отклика во время обучения.

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

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

      • Хорошая практика должна задать предикторы для обучения с помощью любого 'PredictorNames' или formula, но не то и другое одновременно.

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

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

    Имя переменной отклика в виде вектора символов или строкового скаляра.

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

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

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

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

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

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

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

    fitrnet нормирует веса, чтобы суммировать к 1.

    Типы данных: 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% из данных как данные о валидации, и обучают модель с помощью остальной части данных.

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

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

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

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

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

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

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

    3. Сохраните k компактные, обученные модели в k- 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'

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

    свернуть все

    Обученная модель регрессии нейронной сети, возвращенная как RegressionNeuralNetwork или RegressionPartitionedModelобъект.

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

    К ссылочным свойствам Mdl, используйте запись через точку.

    Больше о

    свернуть все

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

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

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

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

    Введите — Этот слой соответствует данным о предикторе в Tbl или X.

    Первый полносвязный слой — Этот слой имеет 10 выходных параметров по умолчанию.

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

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

    Функция активации ReLU — fitrnet применяет эту функцию активации к первому полносвязному слою.

    • Можно изменить функцию активации путем определения Activations аргумент значения имени.

    Итоговый полносвязный слой — Этот слой имеет тот выход.

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

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

    Для примера, который показывает, как модель нейронной сети регрессии с этой структурой слоя возвращает предсказания, смотрите, Предсказывают Используя Структуру Слоя Модели Нейронной сети Регрессии.

    Советы

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

    Алгоритмы

    свернуть все

    Учебный решатель

    fitrnet использует ограниченную память алгоритм квазиньютона Broyden Flecter Goldfarb Shanno (LBFGS) [3] как его метод минимизации функции потерь, где программное обеспечение минимизирует среднеквадратическую ошибку (MSE).

    Ссылки

    [1] Glorot, Ксавьер и Иосуа Бенхио. “Изучая трудность учебных глубоких нейронных сетей прямого распространения”. В Продолжениях тринадцатой международной конференции по вопросам искусственного интеллекта и статистики, стр 249–256. 2010.

    [2] Он, Kaiming, Сянюй Чжан, Шаоцин Жэнь и Цзянь Сунь. “Копаясь глубоко в выпрямителях: Превосходная эффективность человеческого уровня на imagenet классификации”. В Продолжениях международной конференции IEEE по вопросам компьютерного зрения, стр 1026–1034. 2015.

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

    Введенный в R2021a