exponenta event banner

предсказать

Прогнозирование ответов с использованием обобщенной аддитивной модели (GAM)

    Описание

    пример

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

    пример

    yFit = predict(Mdl,X,'IncludeInteractions',includeInteractions) указывает, следует ли включать в вычисления элементы взаимодействия.

    Примеры

    свернуть все

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

    Загрузить 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
              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             1228122  classreg.learning.regr.CompactRegressionGAM              
      Mdl       1x1             1262143  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                 
    
    

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

    свернуть все

    Обобщенная аддитивная модель, указанная как 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

    Флаг для включения условий взаимодействия модели, указанный как true или false.

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

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

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

    свернуть все

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

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