loss

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

    Описание

    пример

    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 \in 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 \in 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-by-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