resubLoss

Потеря регрессии перезамены

    Описание

    пример

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

    Интерпретация L зависит от функции потерь ('LossFun') и взвешивание схемы (Mdl.W). В общем случае лучшие модели дают к меньшим значениям потерь. 'LossFun' по умолчанию значением является 'mse' (среднеквадратическая ошибка).

    пример

    L = resubLoss(Mdl,Name,Value) задает дополнительные опции с помощью одних или нескольких аргументов name-value. Например, 'IncludeInteractions',false задает, чтобы исключить периоды взаимодействия из обобщенной аддитивной модели Mdl.

    Примеры

    свернуть все

    Обучите обобщенную аддитивную модель (GAM), затем вычислите потерю перезамены с помощью среднеквадратической ошибки (MSE).

    Загрузите patients набор данных.

    load patients

    Составьте таблицу, которая содержит переменные предикторы (Age, Diastolic, Smoker, Weight, Gender, SelfAssessedHealthStatus) и переменная отклика (Systolic).

    tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);

    Обучите одномерный GAM, который содержит линейные члены для предикторов в tbl.

    Mdl = fitrgam(tbl,"Systolic")
    Mdl = 
      RegressionGAM
                PredictorNames: {1x6 cell}
                  ResponseName: 'Systolic'
         CategoricalPredictors: [3 5 6]
             ResponseTransform: 'none'
                     Intercept: 122.7800
        IsStandardDeviationFit: 0
               NumObservations: 100
    
    
      Properties, Methods
    
    

    Mdl RegressionGAM объект модели.

    Вычислите потерю перезамены с помощью среднеквадратической ошибки (MSE).

    L = resubLoss(Mdl)
    L = 4.1957
    

    Загрузите выборочные данные и хранилище в table.

    load fisheriris
    tbl = table(meas(:,1),meas(:,2),meas(:,3),meas(:,4),species,...
    'VariableNames',{'meas1','meas2','meas3','meas4','species'});

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

    mdl = fitrgp(tbl,'meas1');

    Предскажите ответы с помощью обученной модели.

    ypred = predict(mdl,tbl);

    Вычислите среднюю абсолютную погрешность.

    n = height(tbl);
    y = tbl.meas1;
    fun = @(y,ypred,w) sum(abs(y-ypred))/n;
    L = resubLoss(mdl,'lossfun',fun)
    L = 0.2345
    

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

    Загрузите carbig набор данных, который содержит измерения автомобилей, сделанных в 1970-х и в начале 1980-х.

    load carbig

    Задайте Acceleration, Displacement, Horsepower, и Weight как переменные предикторы (X) и MPG как переменная отклика (Y).

    X = [Acceleration,Displacement,Horsepower,Weight];
    Y = MPG;

    Разделите набор данных в два набора: один содержащий обучающие данные и другой содержащий новые, ненаблюдаемые тестовые данные. Зарезервируйте 10 наблюдений для нового набора тестовых данных.

    rng('default') % For reproducibility
    n = size(X,1);
    newInds = randsample(n,10);
    inds = ~ismember(1:n,newInds);
    XNew = X(newInds,:);
    YNew = Y(newInds);

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

    Mdl = fitrgam(X(inds,:),Y(inds),'Interactions','all');

    Mdl RegressionGAM объект модели.

    Вычислите перезамену MSEs (то есть, MSEs в выборке) и с и без периодов взаимодействия в Mdl. Чтобы исключить периоды взаимодействия, задайте 'IncludeInteractions',false.

    resubl = resubLoss(Mdl)
    resubl = 0.0292
    
    resubl_nointeraction = resubLoss(Mdl,'IncludeInteractions',false)
    resubl_nointeraction = 4.7330
    

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

    CMdl = compact(Mdl);

    CMdl CompactRegressionGAM объект модели.

    l = loss(CMdl,XNew,YNew)
    l = 12.8604
    
    l_nointeraction = loss(CMdl,XNew,YNew,'IncludeInteractions',false)
    l_nointeraction = 15.6741
    

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

    Входные параметры

    свернуть все

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

    МодельОбъект модели регрессии
    Гауссова модель регрессии процессаRegressionGP
    Обобщенная аддитивная модель (GAM)RegressionGAM
    Модель нейронной сетиRegressionNeuralNetwork

    Аргументы name-value

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

    Пример: resubLoss(Mdl,'IncludeInteractions',false) исключает периоды взаимодействия из обобщенной аддитивной модели Mdl.

    Отметьте, чтобы включать периоды взаимодействия модели в виде true или false. Этот аргумент допустим только для обобщенной аддитивной модели. Таким образом, можно задать этот аргумент только когда Mdl RegressionGAM.

    Значением по умолчанию является true если Mdl содержит периоды взаимодействия. Значением должен быть false если модель не содержит периоды взаимодействия.

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

    Типы данных: логический

    Функция потерь в виде '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

    Больше о

    свернуть все

    Квадратичная невязка взвешенного среднего

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

    Квадратичная невязка взвешенного среднего вычисляется можно следующим образом:

    mse=j=1nwj(f(xj)yj)2j=1nwj,

    где:

    • n является количеством строк данных.

    • xj является j th строка данных.

    • yj является истинным ответом на xj.

    • f (xj) является предсказанием ответа модели Mdl к xj.

    • w является вектором из весов наблюдения.

    Алгоритмы

    resubLoss вычисляет потерю регрессии согласно соответствию loss функция объекта (Mdl). Для описания модели специфичного смотрите loss страницы ссылки на функцию в следующей таблице.

    МодельОбъект модели регрессии (Mdl)loss Объектная функция
    Гауссова модель регрессии процессаRegressionGPloss
    Обобщенная аддитивная модельRegressionGAMloss
    Модель нейронной сетиRegressionNeuralNetworkloss

    Альтернативная функциональность

    Чтобы вычислить потерю ответа для новых данных о предикторе, используйте соответствие loss функция объекта (Mdl).

    Смотрите также

    Введенный в R2021a