addInteractions

Добавьте условия взаимодействия в одномерную обобщенную аддитивную модель (GAM)

    Описание

    пример

    UpdatedMdl = addInteractions(Mdl,Interactions) возвращает обновленную модель UpdatedMdl путем добавления терминов взаимодействия в Interactions одномерной обобщенной аддитивной модели Mdl. Модель Mdl должны содержать только линейные условия для предикторов.

    Если вы хотите возобновить обучение для существующих условий в Mdl, использовать resume функция.

    пример

    UpdatedMdl = addInteractions(Mdl,Interactions,Name,Value) задает дополнительные опции, используя один или несколько аргументов имя-значение. Для примера, 'MaxPValue',0.05 задает, чтобы включать только условия взаимодействия, значения p которых не более 0,05.

    Примеры

    свернуть все

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

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

    load carbig

    Создайте таблицу, которая содержит переменные предиктора (Acceleration, Displacement, Horsepower, и Weight) и переменной отклика (MPG).

    tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG);

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

    Mdl = fitrgam(tbl,'MPG');

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

    UpdatedMdl = addInteractions(Mdl,5);

    Mdl является одномерной GAM, и UpdatedMdl - обновленный GAM, содержащий все термины в Mdl и пять дополнительных условий взаимодействия. Отобразите условия взаимодействия в UpdatedMdl.

    UpdatedMdl.Interactions
    ans = 5×2
    
         2     3
         1     2
         3     4
         1     4
         1     3
    
    

    Каждая строка Interactions свойство представляет один член взаимодействия и содержит индексы столбцов переменных предиктора для термина взаимодействия. Можно использовать Interactions свойство для проверки членов в модели взаимодействия и порядка, в котором fitrgam добавляет их в модель.

    Обучите одномерную GAM, которая содержит линейные условия для предикторов, а затем добавьте условия взаимодействия к обученной модели с помощью addInteractions функция. Задайте 'MaxPValue' аргумент имя-значение для добавления членов взаимодействия, значения p которых не больше 'MaxPValue' значение.

    Загрузите набор данных радужки Фишера. Составьте таблицу, которая содержит наблюдения для versicolor и virginica.

    load fisheriris
    inds = strcmp(species,'versicolor') | strcmp(species,'virginica');
    Tbl = array2table(meas(inds,:),'VariableNames',["x1","x2","x3","x4"]);
    Tbl.Y = species(inds,:);

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

    Mdl = fitcgam(Tbl,'Y');

    Добавьте важные условия взаимодействия к обученной модели Mdl. Задайте 'all' для Interactions аргумент и установите 'MaxPValue' аргумент имя-значение 0,05. Среди всех доступных условий взаимодействия, addInteractions определяет те, чьи значения p не больше, чем 'MaxPValue' и добавляет их в модель. Значение по умолчанию 'MaxPValue' равен 1, так что функция добавляет все заданные условия взаимодействия в модель.

    UpdatedMdl = addInteractions(Mdl,'all','MaxPValue',0.05);
    UpdatedMdl.Interactions
    ans = 5×2
    
         3     4
         2     4
         1     4
         2     3
         1     3
    
    

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

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

    свернуть все

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

    Количество или список членов взаимодействия для включения в S набора кандидатов, заданные как неотрицательный целочисленный скаляр, логическая матрица или 'all'.

    • Количество членов взаимодействия, заданное как неотрицательное целое число - S включает указанное количество важных членов взаимодействия, выбранных исходя из p - значений членов.

    • Список условий взаимодействия, заданных как логическая матрица - S включает условия, заданные t-by- p логическая матрица, где t количество членов взаимодействия и p - количество предикторов, используемых для обучения модели. Для примера, logical([1 1 0; 0 1 1]) представляет две пары членов взаимодействия: пару первого и второго предикторов и пару второго и третьего предикторов.

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

    • 'all' - S включает все возможные пары членов взаимодействия, что   p*(p – 1)/2 количество терминов в общей сложности.

    Среди терминов взаимодействия в S, addInteractions функция идентифицирует те, чьи p -значения не больше 'MaxPValue' и использует их, чтобы создать набор деревьев взаимодействия. Используйте значение по умолчанию ('MaxPValue'1) для построения деревьев взаимодействия с использованием всех терминов в S.

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

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

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

    Пример: addInteractions (Mdl, 'all', 'MaxPValue', 0,05, 'Verbose', 1, 'NumPrints', 10) указывает, что включает все доступные условия взаимодействия, значения p которых не более 0,05, и отображать диагностические сообщения каждые 10 итераций.

    Начальная скорость обучения ускорения градиента для членов взаимодействия, заданная как числовой скаляр в интервале (0,1].

    Для каждой итерации увеличения для деревьев взаимодействия, addInteractions начинает аппроксимацию с начальной скоростью обучения. Функция уменьшает скорость обучения вдвое, пока не найдет скорость, которая улучшает подгонку модели.

    Настройка модели с использованием малой скорости обучения требует большего количества итераций обучения, но часто достигает лучшей точности.

    Для получения дополнительной информации о ускорении градиента, см. Алгоритм ускорения градиента.

    Пример: 'InitialLearnRateForInteractions',0.1

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

    Максимальное количество разделений решений (или узлов ветви) для каждого дерева взаимодействия (повышенное дерево для термина взаимодействия), заданное как положительный целочисленный скаляр.

    Пример: 'MaxNumSplitsPerInteraction',5

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

    Максимальное p-значение для обнаружения членов взаимодействия, заданное в виде числа в интервале [0,1].

    addInteractions сначала находит набор кандидатов, S членов взаимодействия из Interactions значение. Затем функция идентифицирует условия взаимодействия, p которых - значения не больше 'MaxPValue' и использует их, чтобы создать набор деревьев взаимодействия.

    Значение по умолчанию ('MaxPValue',1) строит деревья взаимодействия для всех членов взаимодействия в S набора кандидатов.

    Для получения дополнительной информации об обнаружении терминов взаимодействия смотрите Обнаружение терминов взаимодействия.

    Пример: 'MaxPValue',0.05

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

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

    Если вы задаете 'Verbose',1 и 'NumPrint',numPrint, затем программное обеспечение отображает диагностические сообщения каждый numPrint итерации в Командном окне.

    Значение по умолчанию Mdl.ModelParameters.NumPrint, который является NumPrint значение, заданное при создании объекта GAM Mdl.

    Пример: 'NumPrint',500

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

    Количество деревьев на один член взаимодействия, заданное как положительный целочисленный скаляр.

    The 'NumTreesPerInteraction' значение эквивалентно количеству итераций ускорения градиента для членов взаимодействия для предикторов. Для каждой итерации, addInteractions добавляет к модели набор деревьев взаимодействия, по одному дереву для каждого термина взаимодействия. Чтобы узнать о алгоритме ускорения градиента, см. «Алгоритм ускорения градиента».

    Можно определить, имеет ли подобранная модель заданное количество деревьев, просмотрев диагностическое сообщение, отображаемое при 'Verbose' равен 1 или 2, или путем проверки ReasonForTermination значение свойства модели Mdl.

    Пример: 'NumTreesPerInteraction',500

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

    Уровень подробностей, заданный как 0, 1, или 2. The Verbose значение управляет объемом информации, отображаемой программным обеспечением в Командном окне.

    В этой таблице представлены доступные опции уровня подробностей.

    ЗначениеОписание
    0Программа не отображает никакой информации.
    1Программа отображает диагностические сообщения каждый numPrint итерации, где numPrint является 'NumPrint' значение.
    2Программа отображает диагностические сообщения при каждой итерации.

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

    • Type - Тип обученных деревьев, 1D (деревья предикторов или усиленные деревья для линейных терминов для предикторов) или 2D (деревья взаимодействия или усиленные деревья для условий взаимодействия для предикторов)

    • NumTrees - Количество деревьев на линейный термин или термин взаимодействия, который addInteractions добавлено к модели до сих пор

    • Deviance - Отклонение модели

    • RelTol - Относительное изменение предсказаний модели: (y^ky^k1)(y^ky^k1)/y^ky^k, где y^k является вектор-столбец предсказаний модели при итерации k

    • LearnRate - Скорость обучения, используемый для текущей итерации

    Значение по умолчанию Mdl.ModelParameters.VerbosityLevel, который является Verbose значение, заданное при создании объекта GAM Mdl.

    Пример: 'Verbose',1

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

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

    свернуть все

    Обновленная обобщенная аддитивная модель, возвращенная как ClassificationGAM или RegressionGAM объект модели. UpdatedMdl имеет тот же тип объекта, что и входная модель Mdl.

    Чтобы перезаписать входной параметр Mdl, присвойте выходные данные addInteractions на Mdl:

    Mdl = addInteractions(Mdl,Interactions);

    Подробнее о

    свернуть все

    Отклонение

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

    Отклонение подобранной модели в два раза больше разницы между логарифмической правдоподобностью модели и насыщенной моделью:

    -2 (log L - log Ls),

    где L и Ls являются вероятностями подобранной модели и насыщенной модели, соответственно. Насыщенная модель является моделью с максимальным количеством параметров, которые вы можете оценить.

    addInteractions использует отклонение для измерения качества модели и находит скорость обучения, которая уменьшает отклонение при каждой итерации. Задайте 'Verbose' равным 1 или 2, чтобы отобразить отклонение и скорость обучения в Командном окне.

    Алгоритмы

    свернуть все

    Алгоритм ускорения градиента

    addInteractions добавляет наборы деревьев взаимодействия (усиленные деревья для терминов взаимодействия для предикторов) в одномерную обобщенную аддитивную модель с помощью градиентного алгоритма бустинга (ускорение методом наименьших квадратов для регрессии и адаптивная логистическая регрессия для классификации). Алгоритм итерирует самое большее 'NumTreesPerInteraction' время для деревьев взаимодействия.

    Для каждой итерации увеличения, addInteractions создает набор деревьев взаимодействия с начальной скоростью обучения 'InitialLearnRateForInteractions'.

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

      • Обновленная модель = текущая модель + (темп обучения)· (новое дерево)

      • Обновлённая невязка = текущая невязка - (темп обучения)· (ответ объясняется новым деревом)

    • Если добавление набора деревьев улучшает подгонка модели (то есть уменьшает отклонение подгонки), то addInteractions переходит к следующей итерации.

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

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

    Обнаружение терминов взаимодействия

    Для каждого парного термина взаимодействия xi xj (задается Interactions), программное обеспечение выполняет F-тест, чтобы выяснить, является ли термин статистически значимым.

    Чтобы ускорить процесс, addInteractions заключает числовые предикторы в самое большее 8 уравнительных интервалов. Количество интервалов может быть меньше 8, если предиктор имеет меньше 8 уникальных значений. F-test исследует нулевую гипотезу о том, что интервалы, созданные xi и xj, имеют одинаковые отклики по сравнению с альтернативой, что, по крайней мере, одно интервал имеет отличное значение отклика от других. Небольшое p -значение указывает, что различия значительны, что подразумевает, что соответствующий термин взаимодействия значителен и, следовательно, включая термин может улучшить подгонку модели.

    addInteractions создает набор деревьев взаимодействия с помощью членов, значения p которых не больше 'MaxPValue' значение. Можно использовать 'MaxPValue' по умолчанию значение 1 для построения деревьев взаимодействия с использованием всех терминов, заданных Interactions.

    addInteractions добавляет к модели условия взаимодействия в порядке важности на основе p значений. Используйте Interactions свойство возвращаемой модели для проверки порядка добавленных в модель членов взаимодействия.

    Введенный в R2021a