exponenta event banner

потеря

Потеря для регрессионной нейронной сети

    Описание

    пример

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

    L возвращается в виде скалярного значения, которое по умолчанию представляет среднеквадратичную ошибку (MSE).

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

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

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

    Примеры

    свернуть все

    Рассчитайте среднюю квадратичную ошибку (MSE) тестового набора модели регрессионной нейронной сети.

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

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

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

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

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

    Mdl = fitrnet(tblTrain,"Systolic", ...
        "Standardize",true);

    Рассчитайте тестовый набор MSE. Меньшие значения MSE указывают на лучшую производительность.

    testMSE = loss(Mdl,tblTest,"Systolic")
    testMSE = 49.9595
    

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

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

    fishertable = readtable('fisheriris.csv');

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

    rng("default")
    c = cvpartition(size(fishertable,1),"Holdout",0.3);
    trainTbl = fishertable(training(c),:);
    testTbl = fishertable(test(c),:);

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

    allMdl = fitrnet(trainTbl,"PetalLength","Standardize",true);
    subsetMdl = fitrnet(trainTbl,"PetalLength ~ SepalLength + SepalWidth + Species", ...
        "Standardize",true);

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

    allMSE = loss(allMdl,testTbl)
    allMSE = 0.0834
    
    subsetMSE = loss(subsetMdl,testTbl)
    subsetMSE = 0.0887
    

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

    tiledlayout(2,1)
    
    % Top axes
    ax1 = nexttile;
    allPredictedY = predict(allMdl,testTbl);
    plot(ax1,testTbl.PetalLength,allPredictedY,".")
    hold on
    plot(ax1,testTbl.PetalLength,testTbl.PetalLength)
    hold off
    xlabel(ax1,"True Petal Length")
    ylabel(ax1,"Predicted Petal Length")
    title(ax1,"All Predictors")
    
    % Bottom axes
    ax2 = nexttile;
    subsetPredictedY = predict(subsetMdl,testTbl);
    plot(ax2,testTbl.PetalLength,subsetPredictedY,".")
    hold on
    plot(ax2,testTbl.PetalLength,testTbl.PetalLength)
    hold off
    xlabel(ax2,"True Petal Length")
    ylabel(ax2,"Predicted Petal Length")
    title(ax2,"Subset of Predictors")

    Поскольку обе модели, по-видимому, работают хорошо, с предсказаниями, разбросанными вблизи опорной линии, рассмотрите возможность использования модели, обученной с использованием всех предикторов, кроме PetalWidth.

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

    свернуть все

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

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

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

    • Если вы тренировались Mdl используя образцы данных, содержащиеся в таблице, затем входные данные для loss также должен находиться в таблице.

    • Если установить 'Standardize',true в fitrnet при обучении Mdlзатем программное обеспечение стандартизирует числовые столбцы данных предиктора с использованием соответствующих средств и стандартных отклонений.

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

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

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

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

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

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

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

    Примечание

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

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

    Если установить 'Standardize',true в fitrnet при обучении Mdlзатем программное обеспечение стандартизирует числовые столбцы данных предиктора с использованием соответствующих средств и стандартных отклонений.

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

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

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

    Пример: loss(Mdl,Tbl,"Response","Weights","W") указывает на использование Response и W переменные в таблице Tbl в качестве значений ответа и весов наблюдения соответственно.

    Функция потерь, указанная как 'mse' или дескриптор функции.

    • 'mse' - средневзвешенная квадратичная ошибка.

    • Дескриптор функции - чтобы указать пользовательскую функцию потери, используйте дескриптор функции. Функция должна иметь следующую форму:

      lossval = lossfun(Y,YFit,W)

      • Выходной аргумент lossval является скаляром с плавающей точкой.

      • Указывается имя функции (lossfun).

      • Y - длина n числового вектора наблюдаемых ответов, где n - количество наблюдений в Tbl или X.

      • YFit является n-числовым вектором соответствующих предсказанных откликов.

      • W является n-на-1 числовым вектором весов наблюдения.

    Пример: 'LossFun',@lossfun

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

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

    Примечание

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

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

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

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

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

    Если вы поставляете веса, то loss вычисляет взвешенную регрессионную потерю и нормализует веса до суммы 1.

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

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