Подгонка обобщенной аддитивной модели (GAM) для регрессии
возвращает обобщенную аддитивную модель
Mdl = fitrgam(Tbl,ResponseVarName)Mdl обучение с использованием данных выборки, содержащихся в таблице Tbl. Входной аргумент ResponseVarName - имя переменной в Tbl содержит значения ответа для регрессии.
указывает параметры, использующие один или несколько аргументов «имя-значение» в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, Mdl = fitrgam(___,Name,Value)'Interactions',5 указывает на включение в модель пяти терминов взаимодействия. Можно также указать список терминов взаимодействия с помощью 'Interactions' аргумент «имя-значение».
Обучайте одномерный GAM, который содержит линейные термины для предикторов. Затем интерпретируйте прогноз для указанного экземпляра данных с помощью plotLocalEffects функция.
Загрузить набор данных NYCHousing2015.
load NYCHousing2015Набор данных включает 10 переменных с информацией о продажах недвижимости в Нью-Йорке в 2015 году. В этом примере эти переменные используются для анализа продажных цен (SALEPRICE).
Выполните предварительную обработку набора данных. Удалить отклонения, преобразовать datetime массив (SALEDATE) к числам месяцев и переместите переменную ответа (SALEPRICE) к последнему столбцу.
idx = isoutlier(NYCHousing2015.SALEPRICE); NYCHousing2015(idx,:) = []; NYCHousing2015.SALEDATE = month(NYCHousing2015.SALEDATE); NYCHousing2015 = movevars(NYCHousing2015,'SALEPRICE','After','SALEDATE');
Отображение первых трех строк таблицы.
head(NYCHousing2015,3)
ans=3×10 table
BOROUGH NEIGHBORHOOD BUILDINGCLASSCATEGORY RESIDENTIALUNITS COMMERCIALUNITS LANDSQUAREFEET GROSSSQUAREFEET YEARBUILT SALEDATE SALEPRICE
_______ ____________ ____________________________ ________________ _______________ ______________ _______________ _________ ________ _________
2 {'BATHGATE'} {'01 ONE FAMILY DWELLINGS'} 1 0 4750 2619 1899 8 0
2 {'BATHGATE'} {'01 ONE FAMILY DWELLINGS'} 1 0 4750 2619 1899 8 0
2 {'BATHGATE'} {'01 ONE FAMILY DWELLINGS'} 1 1 1287 2528 1899 12 0
Тренируйте одномерный GAM для продажных цен. Укажите переменные для BOROUGH, NEIGHBORHOOD, BUILDINGCLASSCATEGORY, и SALEDATE в качестве категориальных предикторов.
Mdl = fitrgam(NYCHousing2015,'SALEPRICE','CategoricalPredictors',[1 2 3 9])
Mdl =
RegressionGAM
PredictorNames: {1x9 cell}
ResponseName: 'SALEPRICE'
CategoricalPredictors: [1 2 3 9]
ResponseTransform: 'none'
Intercept: 3.7518e+05
NumObservations: 83517
Properties, Methods
Mdl является RegressionGAM объект модели. На экране модели отображается частичный список свойств модели. Чтобы просмотреть полный список свойств, дважды щелкните имя переменной Mdl в рабочей области. Откроется редактор переменных для Mdl. Кроме того, свойства можно отобразить в окне команд с помощью точечной нотации. Например, отображение расчетного (постоянного) члена перехвата Mdl.
Mdl.Intercept
ans = 3.7518e+05
Спрогнозировать продажную цену для первого наблюдения за данными обучения и построить график локальных эффектов терминов в Mdl по прогнозу.
yFit = predict(Mdl,NYCHousing2015(1,:))
yFit = 4.4421e+05
plotLocalEffects(Mdl,NYCHousing2015(1,:))

predict функция предсказывает продажную цену для первого наблюдения как 4.4421e5. plotLocalEffects функция создает горизонтальную гистограмму, которая показывает локальные эффекты терминов в Mdl по прогнозу. Каждая локальная величина эффекта показывает вклад каждого срока в прогнозируемую цену продажи.
Тренируйте обобщенную аддитивную модель, которая содержит линейные термины и условия взаимодействия для предикторов тремя различными способами:
Укажите термины взаимодействия с помощью formula входной аргумент.
Укажите 'Interactions' аргумент «имя-значение».
Создайте модель с линейными элементами и добавьте элементы взаимодействия в модель с помощью addInteractions функция.
Загрузить carbig набор данных, содержащий замеры автомобилей, сделанные в 1970-х и начале 1980-х годов.
load carbigСоздайте таблицу, содержащую переменные предиктора (Acceleration, Displacement, Horsepower, и Weight) и переменной ответа (MPG).
tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG);
Определить formula
Обучить GAM, который содержит четыре линейных члена (Acceleration, Displacement, Horsepower, и Weight) и два условия взаимодействия (Acceleration*Displacement и Displacement*Horsepower). Укажите термины с помощью формулы в форме 'Y ~ terms'.
Mdl1 = fitrgam(tbl,'MPG ~ Acceleration + Displacement + Horsepower + Weight + Acceleration:Displacement + Displacement:Horsepower');Функция добавляет условия взаимодействия в модель в порядке важности. Вы можете использовать Interactions свойство для проверки терминов взаимодействия в модели и порядка, в котором fitrgam добавляет их в модель. Отображение Interactions собственность.
Mdl1.Interactions
ans = 2×2
2 3
1 2
Каждая строка Interactions представляет один член взаимодействия и содержит индексы столбцов переменных предиктора для члена взаимодействия.
Определить 'Interactions'
Сдать данные обучения (tbl) и имя переменной ответа в tbl кому fitrgam, так что функция включает в себя линейные члены для всех других переменных в качестве предикторов. Укажите 'Interactions' аргумент «имя-значение», использующий логическую матрицу для включения двух терминов взаимодействия, x1*x2 и x2*x3.
Mdl2 = fitrgam(tbl,'MPG','Interactions',logical([1 1 0 0; 0 1 1 0])); Mdl2.Interactions
ans = 2×2
2 3
1 2
Можно также указать 'Interactions' как число терминов взаимодействия или как 'all' для включения всех доступных терминов взаимодействия. Среди указанных терминов взаимодействия, fitrgam определяет те, значения p которых не превышают 'MaxPValue' и добавляет их в модель. Дефолт 'MaxPValue' равно 1, так что функция добавляет все указанные условия взаимодействия в модель.
Определить 'Interactions','all' и установите 'MaxPValue' аргумент «имя-значение» равен 0,05.
Mdl3 = fitrgam(tbl,'MPG','Interactions','all','MaxPValue',0.05);
Warning: Model does not include interaction terms because all interaction terms have p-values greater than the 'MaxPValue' value, or the software was unable to improve the model fit.
Mdl3.Interactions
ans = 0x2 empty double matrix
Mdl3 не включает в себя члены взаимодействия, что подразумевает одно из следующих: все члены взаимодействия имеют p-значения больше 0,05, или добавление членов взаимодействия не улучшает аппроксимацию модели.
Использовать addInteractions Функция
Обучите одномерный GAM, который содержит линейные термины для предикторов, а затем добавьте термины взаимодействия к обученной модели с помощью addInteractions функция. Укажите второй входной аргумент addInteractions точно так же, как вы указываете 'Interactions' аргумент «имя-значение» fitrgam. Можно указать список терминов взаимодействия с помощью логической матрицы, число терминов взаимодействия или 'all'.
Укажите число терминов взаимодействия как 3, чтобы добавить три наиболее важных термина взаимодействия в обучаемую модель.
Mdl4 = fitrgam(tbl,'MPG');
UpdatedMdl4 = addInteractions(Mdl4,3);
UpdatedMdl4.Interactionsans = 3×2
2 3
1 2
3 4
Mdl4 является одномерным GAM, и UpdatedMdl4 является обновленным GAM, который содержит все термины в Mdl4 и три дополнительных условия взаимодействия.
fitrgamПодготовка перекрестно проверенного GAM с 10 складками, который является опцией перекрестной проверки по умолчанию, с помощью fitrgam. Затем используйте kfoldPredict прогнозировать ответы для валидационных наблюдений с использованием модели, обученной на тренировочных наблюдениях.
Загрузить carbig набор данных, содержащий замеры автомобилей, сделанные в 1970-х и начале 1980-х годов.
load carbigСоздайте таблицу, содержащую переменные предиктора (Acceleration, Displacement, Horsepower, и Weight) и переменной ответа (MPG).
tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG);
Создайте перекрестную проверку GAM с помощью опции перекрестной проверки по умолчанию. Укажите 'CrossVal' аргумент имя-значение как 'on'.
rng('default') % For reproducibility CVMdl = fitrgam(tbl,'MPG','CrossVal','on')
CVMdl =
RegressionPartitionedGAM
CrossValidatedModel: 'GAM'
PredictorNames: {1x4 cell}
ResponseName: 'MPG'
NumObservations: 398
KFold: 10
Partition: [1x1 cvpartition]
NumTrainedPerFold: [1x1 struct]
ResponseTransform: 'none'
Properties, Methods
fitrgam функция создает RegressionPartitionedGAM объект модели CVMdl с 10 складками. Во время перекрестной проверки программное обеспечение выполняет следующие действия:
Произвольно разбить данные на 10 наборов.
Для каждого набора зарезервируйте набор в качестве данных проверки и обучайте модель, используя другие 9 наборов.
Храните 10 компактных обученных моделей a в клеточном векторе 10 на 1 в Trained свойство объекта перекрестной проверки модели RegressionPartitionedGAM.
Можно переопределить настройку перекрестной проверки по умолчанию с помощью 'CVPartition', 'Holdout', 'KFold', или 'Leaveout' аргумент «имя-значение».
Прогнозирование ответов для наблюдений в tbl с помощью kfoldPredict. Функция предсказывает ответы для каждого наблюдения с использованием модели, обученной без этого наблюдения.
yHat = kfoldPredict(CVMdl);
yHat - числовой вектор. Отображение первых пяти прогнозируемых ответов.
yHat(1:5)
ans = 5×1
19.4848
15.7203
15.5742
15.3185
17.8223
Вычислите потери регрессии (среднеквадратичную ошибку).
L = kfoldLoss(CVMdl)
L = 17.7248
kfoldLoss возвращает среднее значение квадрата ошибки за 10 складок.
bayesoptОптимизация параметров GAM в отношении перекрестной проверки с помощью bayesopt функция.
Загрузить carbig набор данных, содержащий замеры автомобилей, сделанные в 1970-х и начале 1980-х годов.
load carbigОпределить Acceleration, Displacement, Horsepower, и Weight в качестве переменных предиктора (X) и MPG в качестве переменной ответа (Y).
X = [Acceleration,Displacement,Horsepower,Weight]; Y = MPG;
Подготовиться optimizableVariable объекты для аргументов «имя-значение», которые необходимо оптимизировать с помощью байесовской оптимизации. Этот пример находит оптимальные значения для MaxNumSplitsPerPredictor и NumTreesPerPredictor аргументы fitrgam.
maxNumSplits = optimizableVariable('maxNumSplits',[1,10],'Type','integer'); numTrees = optimizableVariable('numTrees',[1,500],'Type','integer');
Создание целевой функции, которая принимает входные данные z = [maxNumSplits,numTrees] и возвращает значение потери с перекрестной проверкой z.
minfun = @(z)kfoldLoss(fitrgam(X,Y,'CrossVal','on', ... 'MaxNumSplitsPerPredictor',z.maxNumSplits, ... 'NumTreesPerPredictor',z.numTrees));
Если задан параметр перекрестной проверки ('CrossVal','on'), то fitrgam функция возвращает объект модели с перекрестной проверкой RegressionPartitionedGAM. kfoldLoss функция возвращает потерю регрессии (среднеквадратичную ошибку), полученную перекрестно проверенной моделью. Поэтому дескриптор функции minfun вычисляет потери перекрестной проверки в параметрах в z.
Поиск наилучших параметров [maxNumSplits,numTrees] использование bayesopt. Для воспроизводимости выберите 'expected-improvement-plus' функция приобретения. Функция сбора данных по умолчанию зависит от времени выполнения и, следовательно, может давать различные результаты.
rng('default') results = bayesopt(minfun,[maxNumSplits,numTrees],'Verbose',0, ... 'IsObjectiveDeterministic',true, ... 'AcquisitionFunctionName','expected-improvement-plus');


Получите наилучшую точку из results.
zbest = bestPoint(results)
zbest=1×2 table
maxNumSplits numTrees
____________ ________
1 215
Обучение оптимизированного GAM с помощью zbest значения.
Mdl = fitrgam(X,Y, ... 'MaxNumSplitsPerPredictor',zbest.maxNumSplits, ... 'NumTreesPerPredictor',zbest.numTrees);
Tbl - Образцы данныхОбразец данных, используемых для обучения модели, указанный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Дополнительно, Tbl может содержать столбец для переменной ответа и столбец для весов наблюдения. Переменная отклика и значения веса должны быть числовыми векторами.
Необходимо указать переменную ответа в Tbl с помощью ResponseVarName или formula и укажите веса наблюдения в Tbl с помощью 'Weights'.
Укажите переменную ответа с помощью ResponseVarName — fitrgam использует остальные переменные в качестве предикторов. Использование подмножества остальных переменных в Tbl в качестве предикторов укажите переменные предиктора с помощью 'PredictorNames'.
Определение спецификации модели с помощью formula — fitrgam использует подмножество переменных в Tbl в качестве переменных предиктора и переменной ответа, как указано в formula.
Если Tbl не содержит переменную ответа, затем укажите переменную ответа с помощью Y. Длина переменной ответа Y и количество строк в Tbl должно быть равным. Использование подмножества переменных в Tbl в качестве предикторов укажите переменные предиктора с помощью 'PredictorNames'.
fitrgam рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Tbl для отсутствующих значений.
fitrgam не использует наблюдения со всеми отсутствующими значениями в подгонке.
fitrgam не использует наблюдения с отсутствующими значениями ответа в подгонке.
fitrgam использует наблюдения с некоторыми отсутствующими значениями для предикторов, чтобы найти разделения по переменным, для которых эти наблюдения имеют допустимые значения.
Типы данных: table
ResponseVarName - Имя переменной ответаTblИмя ответной переменной, указанное как вектор символов или строковый скаляр, содержащий имя ответной переменной в Tbl. Например, если переменная ответа Y хранится в Tbl.Y, затем укажите его как 'Y'.
Типы данных: char | string
formula - Спецификация моделиСпецификация модели, заданная как вектор символа или скаляр строки в форме 'Y ~ terms'. formula аргумент задает переменную ответа и линейные и условия взаимодействия для переменных предиктора. Использовать formula для указания подмножества переменных в Tbl в качестве предикторов для обучения модели. Если задать формулу, программа не будет использовать переменные в Tbl которые не отображаются в formula.
Например, укажите 'Y~x1+x2+x3+x1:x2'. В этой форме Y представляет переменную ответа, и x1, x2, и x3 представляют линейные члены для переменных предиктора. x1:x2 представляет термин взаимодействия для x1 и x2.
Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимые идентификаторы MATLAB ®. Имена переменных можно проверить вTbl с помощью isvarname функция. Если имена переменных недопустимы, их можно преобразовать с помощью matlab.lang.makeValidName функция.
Кроме того, можно указать переменную отклика и линейные члены для предикторов с помощью formulaи укажите условия взаимодействия для предикторов с помощью 'Interactions'.
fitrgam строит набор деревьев взаимодействия, используя только те члены, значения p которых не больше 'MaxPValue' значение.
Пример: 'Y~x1+x2+x3+x1:x2'
Типы данных: char | string
Y - Данные ответаДанные ответа, указанные как числовой вектор столбца. Каждая запись в Y является ответом на данные в соответствующей строке X или Tbl.
Программное обеспечение учитывает NaN значения в Y для отсутствующих значений. fitrgam не использует наблюдения с отсутствующими значениями ответа в подгонке.
Типы данных: single | double
X - Данные предиктораДанные предиктора, заданные как числовая матрица. Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной.
fitrgam рассматривает NaN значения в X как отсутствующие значения. Функция не использует наблюдения со всеми отсутствующими значениями в подгонке. fitrgam использует наблюдения с некоторыми отсутствующими значениями для X для поиска разбиений по переменным, для которых эти наблюдения имеют допустимые значения.
Типы данных: single | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'Interactions','all','MaxPValue',0.05 указывает включить все доступные термины взаимодействия, значения p которых не превышают 0,05.'InitialLearnRateForInteractions' - Начальная скорость обучения градиентного повышения для членов взаимодействия1 (по умолчанию) | числовой скаляр в (0,1]Начальная скорость обучения градиентного повышения для членов взаимодействия, заданная как числовой скаляр в интервале (0,1].
Для каждой итерации повышения для деревьев взаимодействия, fitrgam начинает соответствовать начальной скорости обучения. Функция наполовину уменьшает скорость обучения до тех пор, пока не обнаружит скорость, которая улучшает аппроксимацию модели.
Обучение модели с использованием небольшой скорости обучения требует большего количества итераций обучения, но часто достигает лучшей точности.
Дополнительные сведения о повышении градиента см. в разделе Алгоритм повышения градиента.
Пример: 'InitialLearnRateForInteractions',0.1
Типы данных: single | double
'InitialLearnRateForPredictors' - Начальная скорость обучения градиентного повышения для линейных членов1 (по умолчанию) | числовой скаляр в (0,1]Начальная скорость обучения градиентному повышению для линейных членов, заданная как числовой скаляр в интервале (0,1].
Для каждой итерации повышения для деревьев предикторов, fitrgam начинает соответствовать начальной скорости обучения. Функция наполовину уменьшает скорость обучения до тех пор, пока не обнаружит скорость, которая улучшает аппроксимацию модели.
Обучение модели с использованием небольшой скорости обучения требует большего количества итераций обучения, но часто достигает лучшей точности.
Дополнительные сведения о повышении градиента см. в разделе Алгоритм повышения градиента.
Пример: 'InitialLearnRateForPredictors',0.1
Типы данных: single | double
'Interactions' - Количество или список терминов взаимодействия0 (по умолчанию) | неотрицательный целочисленный скаляр | логическая матрица | 'all'Число или список терминов взаимодействия, включаемых в набор кандидатов S, указанный как неотрицательный скаляр целого числа, логическая матрица или 'all'.
Число членов взаимодействия, указанное как неотрицательное целое число - S включает указанное число важных членов взаимодействия, выбранных на основе p-значений членов.
Список терминов взаимодействия, указанных как логическая матрица - S включает в себя термины, указанные tоколо-p логическая матрица, где t - количество терминов взаимодействия, и p - количество предикторов, используемых для обучения модели. Например, logical([1 1 0; 0 1 1]) представляет собой две пары членов взаимодействия: пару первого и второго предикторов и пару второго и третьего предикторов.
Если fitrgam использует подмножество входных переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. То есть индексы столбцов логической матрицы не подсчитывают весовые переменные ответа и наблюдения. Индексы также не подсчитывают переменные, не используемые функцией.
'all' - S включает все возможные пары терминов взаимодействия, что p*(p – 1)/2 общее количество терминов.
Среди терминов взаимодействия в S, fitrgam функция определяет те, значения p которых не превышают значение 'MaxPValue' и использует их для построения набора деревьев взаимодействия. Используйте значение по умолчанию ('MaxPValue'1) для построения деревьев взаимодействия с использованием всех терминов в S.
Пример: 'Interactions','all'
Типы данных: single | double | logical | char | string
'MaxNumSplitsPerInteraction' - Максимальное количество разделений решений на дерево взаимодействияМаксимальное количество разделений решений (или узлов ветвления) для каждого дерева взаимодействия (усиленное дерево для члена взаимодействия), указанное как положительный целочисленный скаляр.
Пример: 'MaxNumSplitsPerInteraction',5
Типы данных: single | double
'MaxNumSplitsPerPredictor' - Максимальное число разделений решений на дерево предиктораМаксимальное количество разделений решения (или узлов ветвления) для каждого дерева предиктора (усиленное дерево для линейного члена), указанное как положительный целочисленный скаляр. По умолчанию fitrgam использует культю дерева для дерева предиктора.
Пример: 'MaxNumSplitsPerPredictor',5
Типы данных: single | double
'MaxPValue' - Максимальное значение p для обнаружения терминов взаимодействияМаксимальное значение p для обнаружения членов взаимодействия, заданное как числовой скаляр в интервале [0,1].
fitrgam сначала находит набор кандидатов S терминов взаимодействия из formula или 'Interactions'. Затем функция идентифицирует члены взаимодействия, значения p которых не превышают 'MaxPValue' и использует их для построения набора деревьев взаимодействия.
Значение по умолчанию ('MaxPValue',1) строит деревья взаимодействия для всех терминов взаимодействия в наборе кандидатов S.
Дополнительные сведения об обнаружении терминов взаимодействия см. в разделе Обнаружение терминов взаимодействия.
Пример: 'MaxPValue',0.05
Типы данных: single | double
'NumBins' - Количество ячеек для числовых предикторов256 (по умолчанию) | положительный целочисленный скаляр | [] (пусто)Число ячеек для числовых предикторов, указанных как положительный скаляр целого числа или [] (пусто).
При указании 'NumBins' значение в виде положительного целого скаляра (numBins), то fitrgam помещает каждый числовой предиктор максимум в numBins equiprobable bins, а затем выращивает деревья по индексам bin вместо исходных данных.
Количество ячеек может быть меньше numBins если предиктор имеет менее numBins уникальные значения.
fitrgam не содержит категориальных предикторов.
Если 'NumBins' значение пустое ([]), то fitrgam не содержит никаких предикторов.
При использовании большого набора данных обучения этот параметр объединения ускоряет обучение, но может привести к снижению точности. Сначала можно использовать значение по умолчанию 'NumBins', а затем изменить значение в зависимости от точности и скорости тренировки.
Обученная модель Mdl хранит края ячейки в BinEdges собственность.
Пример: 'NumBins',50
Типы данных: single | double
'NumTreesPerInteraction' - Количество деревьев на один термин взаимодействияЧисло деревьев на член взаимодействия, указанное как положительный целочисленный скаляр.
'NumTreesPerInteraction' значение эквивалентно количеству итераций повышения градиента для членов взаимодействия для предикторов. Для каждой итерации fitrgam добавляет в модель набор деревьев взаимодействия, по одному дереву для каждого члена взаимодействия. Сведения об алгоритме повышения градиента см. в разделе Алгоритм повышения градиента.
Можно определить, имеет ли подогнанная модель указанное количество деревьев, просматривая диагностическое сообщение, отображаемое при 'Verbose' равно 1 или 2, или путем проверки ReasonForTermination значение свойства модели Mdl.
Пример: 'NumTreesPerInteraction',500
Типы данных: single | double
'NumTreesPerPredictor' - Количество деревьев на линейный членЧисло деревьев на линейный член, указанное как положительный целочисленный скаляр.
'NumTreesPerPredictor' значение эквивалентно количеству итераций повышения градиента для линейных членов для предикторов. Для каждой итерации fitrgam добавляет в модель набор деревьев предиктора, по одному дереву для каждого предиктора. Сведения об алгоритме повышения градиента см. в разделе Алгоритм повышения градиента.
Можно определить, имеет ли подогнанная модель указанное количество деревьев, просматривая диагностическое сообщение, отображаемое при 'Verbose' равно 1 или 2, или путем проверки ReasonForTermination значение свойства модели Mdl.
Пример: 'NumTreesPerPredictor',500
Типы данных: single | double
'CategoricalPredictors' - Список категориальных предикторов'all'Список категориальных предикторов, указанный как одно из значений в этой таблице.
| Стоимость | Описание |
|---|---|
| Вектор положительных целых чисел |
Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до Если |
| Логический вектор |
A |
| Символьная матрица | Каждая строка матрицы является именем предикторной переменной. Имена должны соответствовать записям в PredictorNames. Поместите имена с дополнительными пробелами, чтобы каждая строка символьной матрицы имела одинаковую длину. |
| Строковый массив или массив ячеек символьных векторов | Каждый элемент массива является именем переменной предиктора. Имена должны соответствовать записям в PredictorNames. |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl), fitrgam предполагает, что переменная категорична, если она является логическим вектором, неупорядоченным категориальным вектором, символьным массивом, строковым массивом или массивом ячеек символьных векторов. Если данные предиктора являются матрицей (X), fitrgam предполагает, что все предикторы непрерывны. Чтобы определить любые другие предикторы как категориальные предикторы, укажите их с помощью 'CategoricalPredictors' аргумент «имя-значение».
Пример: 'CategoricalPredictors','all'
Типы данных: single | double | logical | char | string | cell
'NumPrint' - Количество итераций между распечатками диагностических сообщений10 (по умолчанию) | неотрицательный целочисленный скалярЧисло итераций между распечатками диагностических сообщений, указанных как неотрицательный целочисленный скаляр. Этот аргумент допустим только при указании 'Verbose' как 1.
При указании 'Verbose',1 и 'NumPrint',numPrint, то программное обеспечение отображает диагностические сообщения каждый numPrint итерации в окне команд.
Пример: 'NumPrint',500
Типы данных: single | double
'PredictorNames' - Имена переменных предиктораИмена переменных предиктора, заданные как строковый массив уникальных имен или массив ячеек уникальных векторов символов. Функциональные возможности PredictorNames зависит от способа ввода данных обучения.
Если вы поставляете X и Y, то вы можете использовать PredictorNames назначение имен переменным предиктора в X.
Порядок имен в PredictorNames должен соответствовать порядку столбцов X. То есть PredictorNames{1} является именем X(:,1), PredictorNames{2} является именем X(:,2)и так далее. Также, size(X,2) и numel(PredictorNames) должно быть равным.
По умолчанию PredictorNames является {'x1','x2',...}.
Если вы поставляете Tbl, то вы можете использовать PredictorNames чтобы выбрать, какие переменные предиктора использовать в обучении. То есть fitrgam использует только переменные предиктора в PredictorNames и переменную ответа во время обучения.
PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной ответа.
По умолчанию PredictorNames содержит имена всех переменных предиктора.
Хорошей практикой является определение предикторов для обучения с использованием 'PredictorNames' или formulaно не оба.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string | cell
'ResponseName' - Имя переменной ответа'Y' (по умолчанию) | символьный вектор | строковый скалярИмя переменной ответа, указанное как вектор символа или скаляр строки.
Если вы поставляете Y, то вы можете использовать 'ResponseName' для указания имени переменной ответа.
Если вы поставляете ResponseVarName или formula, то вы не можете использовать 'ResponseName'.
Пример: 'ResponseName','response'
Типы данных: char | string
'ResponseTransform' - Преобразование ответа'none' (по умолчанию) | дескриптор функцииПреобразование ответа, указанное как 'none' или дескриптор функции. Значение по умолчанию: 'none', что означает @(y)y, или нет трансформации. Для функции MATLAB или определяемой функции используйте ее дескриптор функции для преобразования ответа. Дескриптор функции должен принимать вектор (исходные значения ответа) и возвращать вектор того же размера (преобразованные значения ответа).
Пример: Предположим, что вы создаете дескриптор функции, который применяет экспоненциальное преобразование к входному вектору с помощью myfunction = @(y)exp(y). Затем можно указать преобразование ответа как 'ResponseTransform',myfunction.
Типы данных: char | string | function_handle
'Verbose' - Уровень детализации0 (по умолчанию) | 1 | 2Уровень детализации, указанный как 0, 1, или 2. Verbose значение определяет объем информации, отображаемой программой в окне команд.
В этой таблице представлены доступные параметры уровня детализации.
| Стоимость | Описание |
|---|---|
0 | Программное обеспечение не отображает никакой информации. |
1 | Программа отображает диагностические сообщения каждый numPrint итерации, где numPrint является 'NumPrint' значение. |
2 | Программа отображает диагностические сообщения на каждой итерации. |
В каждой строке диагностических сообщений отображается информация о каждой итерации повышения и содержатся следующие столбцы:
Type - тип обученных деревьев, 1D (деревья предикторов или усиленные деревья для линейных терминов для предикторов) или 2D (деревья взаимодействия или усиленные деревья для терминов взаимодействия для предикторов)
NumTrees - Количество деревьев на линейный член или член взаимодействия, которые fitrgam добавлено к модели до настоящего времени
Deviance - Отклонение модели
RelTol - Относительное изменение предсказаний модели: y ^ k − )/ y^k′y^k, где y ^ k - вектор-столбец предсказаний модели при итерации k
LearnRate - Коэффициент обучения, используемый для текущей итерации
Пример: 'Verbose',1
Типы данных: single | double
'Weights' - Наблюдательные весаones(size(X,1),1) (по умолчанию) | вектор скалярных значений | имя переменной в TblВеса наблюдения, заданные как вектор скалярных значений или имя переменной в Tbl. Программа взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должно равняться количеству строк в X или Tbl.
Если входные данные указаны как таблица Tbl, то Weights может быть именем переменной в Tbl содержит числовой вектор. В этом случае необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если весовые коэффициенты вектора W хранится как Tbl.W, затем укажите его как 'W'.
fitrgam нормализует значения Weights для суммирования в 1.
Типы данных: single | double | char | string
'CrossVal' - Флаг для обучения перекрестно проверенной модели'off' (по умолчанию) | 'on' Флаг для обучения перекрестно проверенной модели, указанный как 'on' или 'off'.
При указании 'on'затем программное обеспечение обучает перекрестно проверенную модель с 10 складками.
Этот параметр перекрестной проверки можно переопределить с помощью 'CVPartition', 'Holdout', 'KFold', или 'Leaveout' аргумент «имя-значение». Одновременно можно использовать только один аргумент имя-значение перекрестной проверки для создания модели с перекрестной проверкой.
Либо выполните перекрестную проверку после создания модели путем передачи Mdl кому crossval.
Пример: 'Crossval','on'
'CVPartition' - Раздел перекрестной проверки[] (по умолчанию) | cvpartition объект секционированияРаздел перекрестной проверки, указанный как cvpartition объект секционирования, созданный cvpartition. Объект секционирования определяет тип перекрестной проверки и индексирования для наборов обучения и проверки.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: Предположим, что вы создаете случайный раздел для пятикратной перекрестной проверки 500 наблюдений с помощью cvp = cvpartition(500,'KFold',5). Затем можно указать модель с перекрестной проверкой с помощью 'CVPartition',cvp.
'Holdout' - Доля данных для проверки отсутствияДоля данных, используемых для проверки удержания, заданная как скалярное значение в диапазоне (0,1). При указании 'Holdout',p, затем программное обеспечение выполняет следующие действия:
Случайный выбор и резервирование p*100% данных в качестве данных проверки и обучение модели с использованием остальных данных.
Храните компактную обучаемую модель в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold' - Количество складок10 (по умолчанию) | положительное целое значение больше 1Число сгибов для использования в модели с перекрестной проверкой, указанное как положительное целое значение больше 1. При указании 'KFold',k, затем программное обеспечение выполняет следующие действия:
Случайное разбиение данных на k наборы.
Для каждого набора зарезервируйте набор в качестве данных проверки и обучайте модель с помощью другого k - 1 комплект.
Сохранить k компактные, обученные модели в k-by-1 клеточный вектор в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'KFold',5
Типы данных: single | double
'Leaveout' - Флаг перекрестной проверки «оставить один»'off' (по умолчанию) | 'on'Флаг перекрестной проверки «оставить один», указанный как 'on' или 'off'. При указании 'Leaveout','on', то для каждого из n наблюдений (где n - количество наблюдений, исключая отсутствующие наблюдения, указанные в NumObservations свойство модели), программное обеспечение выполняет следующие действия:
Зарезервируйте одно наблюдение в качестве данных проверки и обучите модель, используя другие наблюдения n-1.
Храните n компактных обученных моделей в клеточном векторе n-by-1 в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'Leaveout','on'
Mdl - Обученная обобщенная аддитивная модельRegressionGAM объект модели | RegressionPartitionedGAM объект модели с перекрестной проверкойОбученная обобщенная аддитивная модель, возвращенная в качестве одного из объектов модели в этой таблице.
| Объект модели | Опции перекрестной проверки для обучения объекта модели | Способы прогнозирования ответов с помощью объекта модели |
|---|---|---|
RegressionGAM | Ничего | Использовать predict для прогнозирования ответов на новые наблюдения и использования resubPredict прогнозировать ответы на обучающие наблюдения. |
RegressionPartitionedGAM | Укажите аргумент имя-значение KFold, Holdout, Leaveout, CrossVal, или CVPartition | Использовать kfoldPredict прогнозировать ответы на наблюдения, которые fitrgam держится во время обучения. kfoldPredict прогнозирует ответ для каждого наблюдения, используя модель, обученную без этого наблюдения. |
Для ссылки на свойства Mdl, используйте точечную нотацию. Например, введите Mdl.Interactions в окне команд для отображения терминов взаимодействия в Mdl.
Обобщенная аддитивная модель (GAM) - это интерпретируемая модель, которая объясняет переменную ответа, используя сумму одномерных и двумерных функций формы предикторов.
fitrgam использует усиленное дерево в качестве функции формы для каждого предиктора и, необязательно, для каждой пары предикторов; следовательно, функция может фиксировать нелинейное отношение между предиктором и переменной отклика. Поскольку вклады отдельных функций формы в предсказание (значение отклика) хорошо разделены, модель легко интерпретировать.
Стандартный GAM использует одномерную функцию формы для каждого предиктора.
f2 (x2) +⋯+fp (xp),
где y - переменная отклика, которая следует за нормальным распределением со средним λ и стандартным отклонением g (λ) - функция идентификационной линии связи, а c - член перехвата (константа). fi (xi) является одномерной функцией формы для i-го предиктора, который является усиленным деревом для линейного члена для предиктора (дерева предиктора).
Можно включить взаимодействия между предикторами в модель, добавив в модель двумерные функции формы важных терминов взаимодействия.
+∑i,j∈{1,2,⋯,p}fij (xixj),
где fij (xixj) - двумерная функция формы для i-го и j-го предикторов, которая является усиленным деревом для члена взаимодействия для предикторов (дерева взаимодействия).
fitrgam находит важные условия взаимодействия на основе p-значений F-тестов. Дополнительные сведения см. в разделе Определение терминов взаимодействия.
Отклонение - это обобщение остаточной суммы квадратов. Он измеряет доброту посадки по сравнению с насыщенной моделью.
Отклонение подогнанной модели в два раза превышает разницу между логарифмами модели и насыщенной модели:
-2 (logL - logLs),
где L и Ls - вероятности подогнанной модели и насыщенной модели соответственно. Насыщенная модель - это модель с максимальным количеством параметров, которое можно оценить.
fitrgam использует отклонение для измерения благости соответствия модели и находит скорость обучения, которая уменьшает отклонение в каждой итерации. Определить 'Verbose' 1 или 2 для отображения отклонения и скорости обучения в окне команд.
fitrgam подгоняет обобщенную аддитивную модель с использованием алгоритма повышения градиента (ускорение методом наименьших квадратов).
fitrgam сначала строит наборы деревьев предикторов (усиленные деревья для линейных терминов для предикторов), а затем строит наборы деревьев взаимодействия (усиленные деревья для терминов взаимодействия для предикторов). Алгоритм повышения итераций не более 'NumTreesPerPredictor' время для деревьев предикторов, а затем итераций не более 'NumTreesPerInteraction' время для деревьев взаимодействия.
Для каждой итерации повышения, fitrgam строит набор предикторных деревьев с начальной скоростью обучения 'InitialLearnRateForPredictors'или строит набор деревьев взаимодействия с начальной скоростью обучения 'InitialLearnRateForInteractions'.
При построении набора деревьев функция обрабатывает по одному дереву за один раз. Оно соответствует остатку дерева, который представляет собой разницу между откликом и агрегированным предсказанием от всех деревьев, выращенных ранее. Для управления скоростью повышения уровня обучения функция сокращает дерево на скорость обучения, а затем добавляет дерево к модели и обновляет остаток.
Обновленная модель = текущая модель + (коэффициент обучения)· (новое дерево)
Обновленный остаток = текущий остаток - (скорость обучения)· (ответ объясняется новым деревом)
Если добавление набора деревьев улучшает аппроксимацию модели (то есть уменьшает отклонение аппроксимации), то fitrgam переходит к следующей итерации.
В противном случае fitrgam уменьшает вдвое уровень обучения и использует его для обновления модели и остатка. Функция продолжает уменьшать скорость обучения вдвое до тех пор, пока не обнаружит скорость, которая улучшает аппроксимацию модели.
Если функция не может найти такую скорость обучения для деревьев предикторов, то она останавливает повышение итераций для линейных членов и начинает повышение итераций для членов взаимодействия.
Если функция не может найти такую скорость обучения для деревьев взаимодействия, она завершает аппроксимацию модели.
Вы можете определить, почему обучение остановлено, проверив ReasonForTermination свойство обучаемой модели.
Для каждого парного члена взаимодействия xixj (определяется formula или 'Interactions'), программное обеспечение выполняет F-тест, чтобы проверить, является ли термин статистически значимым.
Чтобы ускорить процесс, fitrgam суммирует числовые предикторы не более чем в 8 четких бункеров. Количество ячеек может быть меньше 8, если предиктор имеет менее 8 уникальных значений. F-тест рассматривает нулевую гипотезу о том, что бункеры, созданные xi и xj, имеют равные ответы по сравнению с альтернативой того, что по меньшей мере один бункер имеет отличное от других значение ответа. Небольшое значение p указывает на то, что различия значительны, что подразумевает, что соответствующий член взаимодействия значителен и, следовательно, включение термина может улучшить подгонку модели.
fitrgam строит набор деревьев взаимодействия с использованием терминов, значения p которых не превышают 'MaxPValue' значение. Можно использовать значение по умолчанию 'MaxPValue' стоимость 1 для построения деревьев взаимодействия с использованием всех терминов, указанных в formula или 'Interactions'.
fitrgam добавляет в модель условия взаимодействия в порядке важности на основе значений p. Используйте Interactions свойство возвращаемой модели для проверки порядка терминов взаимодействия, добавленных в модель.
[1] Лу, Инь, Рич Каруана и Йоханнес Герке. «Внятные модели для классификации и регрессии». Материалы 18-й Международной конференции АСМ СИГКДД по вопросам обнаружения знаний и интеллектуального анализа данных (KDD "12). Пекин, Китай: ACM Press, 2012, стр. 150-158.
[2] Лу, Инь, Рич Каруана, Йоханнес Герке и Джайлс Хукер. «Точные внятные модели с парными взаимодействиями». Материалы 19-й Международной конференции ACM SIGKDD по открытию знаний и анализу данных (KDD "13), Чикаго, Иллинойс, США: ACM Press, 2013, стр. 623-631.
addInteractions | predict | RegressionGAM | RegressionPartitionedGAM | resume
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.