predict

Предскажите ответы с помощью обобщенной аддитивной модели (GAM)

    Описание

    пример

    yFit = predict(Mdl,X) возвращает вектор из предсказанных ответов для данных о предикторе в таблице или матричном X, на основе обобщенной аддитивной модели Mdl для регрессии. Обученная модель может быть или полной или компактной.

    пример

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

    пример

    [yFit,ySD,yInt] = predict(___) также возвращает стандартные отклонения и интервалы предсказания переменной отклика, оцененной при каждом наблюдении в данных о предикторе X, использование любой из комбинаций входных аргументов в предыдущих синтаксисах. Этот синтаксис допустим только, когда вы задаете 'FitStandardDeviation' из fitrgam как true для учебного Mdl и IsStandardDeviationFit свойство Mdl true.

    Примеры

    свернуть все

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

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

    load patients

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

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

    Случайным образом наблюдения раздела в набор обучающих данных и набор тестов. Задайте 10%-ю выборку затяжки для тестирования.

    rng('default') % For reproducibility
    cv = cvpartition(size(tbl,1),'HoldOut',0.10);

    Извлеките обучение и протестируйте индексы.

    trainInds = training(cv);
    testInds = test(cv);

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

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

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

    Предскажите ответы для набора тестов.

    yFit = predict(Mdl,tbl(testInds,:));

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

    table(tbl.Systolic(testInds),yFit, ...
        'VariableNames',{'Observed Value','Predicted Value'})
    ans=10×2 table
        Observed Value    Predicted Value
        ______________    _______________
    
             124              126.58     
             121              123.95     
             130              116.72     
             115              117.35     
             121              117.45     
             116               118.5     
             123              126.16     
             132              124.14     
             125              127.36     
             124              115.99     
    
    

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

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

    load carbig

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

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

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

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

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

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

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

    Сохраните память путем сокращения размера обученной модели.

    CMdl = compact(Mdl);
    whos('Mdl','CMdl')
      Name      Size              Bytes  Class                                          Attributes
    
      CMdl      1x1             1228131  classreg.learning.regr.CompactRegressionGAM              
      Mdl       1x1             1262153  RegressionGAM                                            
    

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

    Предскажите ответы, использующие и линейные термины и периоды взаимодействия, и затем использующие только линейные члены. Чтобы исключить периоды взаимодействия, задайте 'IncludeInteractions',false.

    yFit = predict(CMdl,XNew);
    yFit_nointeraction = predict(CMdl,XNew,'IncludeInteractions',false);

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

    t = table(YNew,yFit,yFit_nointeraction, ...
        'VariableNames',{'Observed Response', ...
        'Predicted Response','Predicted Response Without Interactions'})
    t=10×3 table
        Observed Response    Predicted Response    Predicted Response Without Interactions
        _________________    __________________    _______________________________________
    
              27.9                  23.04                          23.649                 
               NaN                 37.163                          35.779                 
               NaN                 25.876                          21.978                 
                13                 12.786                          14.141                 
                36                 28.889                          27.281                 
              19.9                 22.199                          18.451                 
              24.2                 23.995                          24.885                 
                12                 14.247                          13.982                 
                38                 33.797                          33.528                 
                13                 12.225                          11.127                 
    
    

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

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

    load patients

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

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

    Обучите одномерный GAM, который содержит линейные члены для предикторов в tbl. Задайте FitStandardDeviation аргумент значения имени как true так, чтобы можно было использовать обученную модель, чтобы вычислить интервалы предсказания. Методические рекомендации должны использовать оптимальные гиперпараметры, когда вы подбираете модель стандартного отклонения для точности оценок стандартного отклонения. Задайте 'OptimizeHyperparameters' как 'all-univariate'. Для воспроизводимости используйте 'expected-improvement-plus' функция захвата. Задайте 'ShowPlots' как false и 'Verbose' как 0, чтобы отключить график и индикаторы сообщения, соответственно.

    rng('default') % For reproducibility
    Mdl = fitrgam(tbl,'Systolic','FitStandardDeviation',true, ...
        'OptimizeHyperparameters','all-univariate', ...
        'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus', ...
        'ShowPlots',false,'Verbose',0))
    Mdl = 
      RegressionGAM
                           PredictorNames: {1x6 cell}
                             ResponseName: 'Systolic'
                    CategoricalPredictors: [3 5 6]
                        ResponseTransform: 'none'
                                Intercept: 122.7800
                   IsStandardDeviationFit: 1
                          NumObservations: 100
        HyperparameterOptimizationResults: [1x1 BayesianOptimization]
    
    
      Properties, Methods
    
    

    Mdl RegressionGAM объект модели, который использует лучшую предполагаемую допустимую точку. Лучшая предполагаемая допустимая точка указывает на набор гиперпараметров, который минимизирует верхнюю доверительную границу значения целевой функции на основе базовой модели целевой функции Байесового процесса оптимизации. Для получения дополнительной информации о процессе оптимизации смотрите, Оптимизируют GAM Используя OptimizeHyperparameters.

    Предскажите ответы для обучающих данных в tbl, и вычислите 99% интервалов предсказания переменной отклика. Задайте уровень значения ('Alpha') как 0,01, чтобы установить доверительный уровень интервалов предсказания к 99%.

    [yFit,~,yInt] = predict(Mdl,tbl,'Alpha',0.01);

    Постройте отсортированные истинные ответы вместе с предсказанными ответами и интервалами предсказания.

    figure
    yTrue = tbl.Systolic;
    [sortedYTrue,I] = sort(yTrue); 
    plot(sortedYTrue,'o')
    hold on
    plot(yFit(I))
    plot(yInt(I,1),'k:')
    plot(yInt(I,2),'k:')
    legend('True responses','Predicted responses', ...
        'Prediction interval limits','Location','best')
    hold off

    Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent True responses, Predicted responses, Prediction interval limits.

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

    свернуть все

    Обобщенная аддитивная модель в виде RegressionGAM или CompactRegressionGAM объект модели.

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

    Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.

    • Для числовой матрицы:

      • Переменные, которые составляют столбцы X должен иметь тот же порядок как переменные предикторы, которые обучили Mdl.

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

    • Для таблицы:

      • Если вы обучили Mdl с помощью таблицы (например, Tbl), затем все переменные предикторы в X должен иметь те же имена переменных и типы данных как те в Tbl. Однако порядок следования столбцов X не должен соответствовать порядку следования столбцов Tbl.

      • Если вы обучили Mdl с помощью числовой матрицы затем предиктор называет в Mdl.PredictorNames и соответствующий переменный предиктор называет в X должно быть то же самое. Чтобы задать имена предиктора во время обучения, используйте 'PredictorNames' аргумент значения имени. Все переменные предикторы в X должны быть числовые векторы.

      • X может содержать дополнительные переменные (переменные отклика, веса наблюдения, и так далее), но predict игнорирует их.

      • predict не поддерживает многостолбцовые переменные или массивы ячеек кроме массивов ячеек из символьных векторов.

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

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

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

    Пример: 'Alpha',0.01,'IncludeInteractions',false задает доверительный уровень как 99% и исключает периоды взаимодействия из расчетов.

    Уровень значения для доверительного уровня интервалов предсказания yIntВ виде числового скаляра в области значений [0,1]. Доверительный уровень yInt равно   100(1 – Alpha)%.

    Этот аргумент допустим только когда IsStandardDeviationFit свойство Mdl true. Задайте 'FitStandardDeviation' аргумент значения имени fitrgam как true подбирать модель для стандартного отклонения.

    Пример: 'Alpha',0.01 задает, чтобы возвратить 99% интервалов предсказания.

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

    Отметьте, чтобы включать периоды взаимодействия модели в виде true или false.

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

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

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

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

    свернуть все

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

    Стандартные отклонения переменной отклика, оцененной при каждом наблюдении в данных о предикторе X, возвращенный как вектор-столбец длины n, где n является количеством наблюдений в X. iэлемент th ySD(i) содержит стандартное отклонение iответ th для iнаблюдение th Xi, предполагаемое использование обученной модели стандартного отклонения в Mdl.

    Этот аргумент допустим только когда IsStandardDeviationFit свойство Mdl true. Задайте 'FitStandardDeviation' аргумент значения имени fitrgam как true подбирать модель для стандартного отклонения.

    Интервалы предсказания переменной отклика, оцененной при каждом наблюдении в данных о предикторе X, возвращенный как n-by-2 матрица, где n является количеством наблюдений в X. iстрока th yInt(i,:) содержит 100 (1–Alpha)% интервал предсказания iответ th для iнаблюдение th Xi. Alpha значение является вероятностью, что интервал предсказания не содержит истинное значение отклика для Xi. Первый столбец yInt содержит нижние пределы интервалов предсказания, и второй столбец содержит верхние пределы.

    Этот аргумент допустим только когда IsStandardDeviationFit свойство Mdl true. Задайте 'FitStandardDeviation' аргумент значения имени fitrgam как true подбирать модель для стандартного отклонения.

    Алгоритмы

    свернуть все

    Стандартное отклонение и интервал предсказания

    predict возвращает предсказанные ответы (yFit) и, опционально, стандартные отклонения (ySD) и интервалы предсказания (yInt) из переменной отклика, оцененной при каждом наблюдении в X.

    Обобщенная аддитивная модель (GAM) для Регрессии принимает, что переменная отклика y следует за нормальным распределением со средним μ и стандартным отклонением σ. Если вы задаете 'FitStandardDeviation' из fitrgam как false (значение по умолчанию), затем fitrgam обучает модель μ. Если вы задаете 'FitStandardDeviation' как trueто fitrgam обучает дополнительную модель σ и устанавливает IsStandardDeviationFit свойство объекта GAM к true. Выходные параметры yFit и ySD соответствуйте предполагаемому среднему μ и стандартному отклонению σ, соответственно.

    Введенный в R2021a