Подгонка обобщенной аддитивной модели (GAM) для двоичной классификации
возвращает обобщенную аддитивную модель
Mdl = fitcgam(Tbl,ResponseVarName)Mdl обучение с использованием данных выборки, содержащихся в таблице Tbl. Входной аргумент ResponseVarName - имя переменной в Tbl содержит метки классов для двоичной классификации.
указывает параметры, использующие один или несколько аргументов «имя-значение» в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, Mdl = fitcgam(___,Name,Value)'Interactions',5 указывает на включение в модель пяти терминов взаимодействия. Можно также указать список терминов взаимодействия с помощью 'Interactions' аргумент «имя-значение».
Тренируйте одномерную обобщенную аддитивную модель, которая содержит линейные термины для предикторов. Затем интерпретируйте прогноз для указанного экземпляра данных с помощью plotLocalEffects функция.
Загрузить ionosphere набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный отклик для радарных возвращений, либо плохой ('b') или хорошо ('g').
load ionosphereОбучить одномерный GAM, который определяет, является ли возврат радара плохим ('b') или хорошо ('g').
Mdl = fitcgam(X,Y)
Mdl =
ClassificationGAM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'b' 'g'}
ScoreTransform: 'logit'
Intercept: 2.2715
NumObservations: 351
Properties, Methods
Mdl является ClassificationGAM объект модели. На экране модели отображается частичный список свойств модели. Чтобы просмотреть полный список свойств, дважды щелкните имя переменной Mdl в рабочей области. Откроется редактор переменных для Mdl. Кроме того, свойства можно отобразить в окне команд с помощью точечной нотации. Например, отобразить порядок классов Mdl.
classOrder = Mdl.ClassNames
classOrder = 2x1 cell
{'b'}
{'g'}
Классифицируйте первое наблюдение обучающих данных и постройте график локальных эффектов терминов в Mdl по прогнозу.
label = predict(Mdl,X(1,:))
label = 1x1 cell array
{'g'}
plotLocalEffects(Mdl,X(1,:))

predict функция классифицирует первое наблюдение X(1,:) как 'g'. plotLocalEffects функция создает горизонтальную гистограмму, которая показывает локальные эффекты 10 наиболее важных терминов на прогноз. Каждое локальное значение эффекта показывает вклад каждого термина в оценку классификации для 'g', который является логитом задней вероятности того, что классификация 'g' для наблюдения.
Тренируйте обобщенную аддитивную модель, которая содержит линейные термины и условия взаимодействия для предикторов тремя различными способами:
Укажите термины взаимодействия с помощью formula входной аргумент.
Укажите 'Interactions' аргумент «имя-значение».
Создайте модель с линейными элементами и добавьте элементы взаимодействия в модель с помощью addInteractions функция.
Загрузите набор данных радужки Фишера. Создайте таблицу, содержащую наблюдения для versicolor и virginica.
load fisheriris inds = strcmp(species,'versicolor') | strcmp(species,'virginica'); tbl = array2table(meas(inds,:),'VariableNames',["x1","x2","x3","x4"]); tbl.Y = species(inds,:);
Определить formula
Обучить GAM, который содержит четыре линейных члена (x1, x2, x3, и x4) и два условия взаимодействия (x1*x2 и x2*x3). Укажите термины с помощью формулы в форме 'Y ~ terms'.
Mdl1 = fitcgam(tbl,'Y ~ x1 + x2 + x3 + x4 + x1:x2 + x2:x3');Функция добавляет условия взаимодействия в модель в порядке важности. Вы можете использовать Interactions свойство для проверки терминов взаимодействия в модели и порядка, в котором fitcgam добавляет их в модель. Отображение Interactions собственность.
Mdl1.Interactions
ans = 2×2
2 3
1 2
Каждая строка Interactions представляет один член взаимодействия и содержит индексы столбцов переменных предиктора для члена взаимодействия.
Определить 'Interactions'
Сдать данные обучения (tbl) и имя переменной ответа в tbl кому fitcgam, так что функция включает в себя линейные члены для всех других переменных в качестве предикторов. Укажите 'Interactions' аргумент «имя-значение», использующий логическую матрицу для включения двух терминов взаимодействия, x1*x2 и x2*x3.
Mdl2 = fitcgam(tbl,'Y','Interactions',logical([1 1 0 0; 0 1 1 0])); Mdl2.Interactions
ans = 2×2
2 3
1 2
Можно также указать 'Interactions' как число терминов взаимодействия или как 'all' для включения всех доступных терминов взаимодействия. Среди указанных терминов взаимодействия, fitcgam определяет те, значения p которых не превышают 'MaxPValue' и добавляет их в модель. Дефолт 'MaxPValue' равно 1, так что функция добавляет все указанные условия взаимодействия в модель.
Определить 'Interactions','all' и установите 'MaxPValue' аргумент «имя-значение» равен 0,01.
Mdl3 = fitcgam(tbl,'Y','Interactions','all','MaxPValue',0.01); Mdl3.Interactions
ans = 5×2
3 4
2 4
1 4
2 3
1 3
Mdl3 включает в себя пять из шести доступных пар терминов взаимодействия.
Использовать addInteractions Функция
Обучите одномерный GAM, который содержит линейные термины для предикторов, а затем добавьте термины взаимодействия к обученной модели с помощью addInteractions функция. Укажите второй входной аргумент addInteractions точно так же, как вы указываете 'Interactions' аргумент «имя-значение» fitcgam. Можно указать список терминов взаимодействия с помощью логической матрицы, число терминов взаимодействия или 'all'.
Укажите число терминов взаимодействия как 5, чтобы добавить пять наиболее важных терминов взаимодействия в обучаемую модель.
Mdl4 = fitcgam(tbl,'Y');
UpdatedMdl4 = addInteractions(Mdl4,5);
UpdatedMdl4.Interactionsans = 5×2
3 4
2 4
1 4
2 3
1 3
Mdl4 является одномерным GAM, и UpdatedMdl4 является обновленным GAM, который содержит все термины в Mdl4 и пять дополнительных условий взаимодействия.
fitcgamПодготовка перекрестно проверенного GAM с 10 складками, который является опцией перекрестной проверки по умолчанию, с помощью fitcgam. Затем используйте kfoldPredict прогнозировать метки классов для валидационных наблюдений с использованием модели, обученной на тренировочных наблюдениях.
Загрузить ionosphere набор данных. Этот набор данных имеет 34 предиктора и 351 двоичный отклик для радарных возвращений, либо плохой ('b') или хорошо ('g').
load ionosphereСоздайте перекрестную проверку GAM с помощью опции перекрестной проверки по умолчанию. Укажите 'CrossVal' аргумент имя-значение как 'on'.
rng('default') % For reproducibility CVMdl = fitcgam(X,Y,'CrossVal','on')
CVMdl =
ClassificationPartitionedGAM
CrossValidatedModel: 'GAM'
PredictorNames: {1x34 cell}
ResponseName: 'Y'
NumObservations: 351
KFold: 10
Partition: [1x1 cvpartition]
NumTrainedPerFold: [1x1 struct]
ClassNames: {'b' 'g'}
ScoreTransform: 'logit'
Properties, Methods
fitcgam функция создает ClassificationPartitionedGAM объект модели CVMdl с 10 складками. Во время перекрестной проверки программное обеспечение выполняет следующие действия:
Произвольно разбить данные на 10 наборов.
Для каждого набора зарезервируйте набор в качестве данных проверки и обучайте модель, используя другие 9 наборов.
Храните 10 компактных обученных моделей в клеточном векторе 10 на 1 в Trained свойство объекта перекрестной проверки модели ClassificationPartitionedGAM.
Можно переопределить настройку перекрестной проверки по умолчанию с помощью 'CVPartition', 'Holdout', 'KFold', или 'Leaveout' аргумент «имя-значение».
Классифицировать наблюдения в X с помощью kfoldPredict. Функция предсказывает метки классов для каждого наблюдения, используя модель, обученную без этого наблюдения.
label = kfoldPredict(CVMdl);
Создайте матрицу путаницы, чтобы сравнить истинные классы наблюдений с их предсказанными метками.
C = confusionchart(Y,label);

Вычислите ошибку классификации.
L = kfoldLoss(CVMdl)
L = 0.0712
Средняя степень неправильной классификации за 10 складок составляет около 7%.
bayesoptОптимизация параметров GAM в отношении перекрестной проверки с помощью bayesopt функция.
Загрузка данных переписи 1994 года, хранящихся в census1994.mat. Набор данных состоит из демографических данных Бюро переписи населения США для прогнозирования того, составляет ли человек более 50 000 долларов в год. Задача классификации состоит в том, чтобы соответствовать модели, которая предсказывает категорию зарплаты людей с учетом их возраста, рабочего класса, уровня образования, семейного положения, расы и так далее.
load census1994census1994 содержит набор данных обучения adultdata и набор тестовых данных adulttest. Чтобы сократить время работы для этого примера, выполните пример 500 учебных наблюдений из adultdata с помощью datasample функция.
rng('default') NumSamples = 5e2; adultdata = datasample(adultdata,NumSamples,'Replace',false);
Подготовиться optimizableVariable объекты для аргументов «имя-значение», которые необходимо оптимизировать с помощью байесовской оптимизации. Этот пример находит оптимальные значения для MaxNumSplitsPerPredictor и NumTreesPerPredictor аргументы fitcgam.
maxNumSplits = optimizableVariable('maxNumSplits',[1,10],'Type','integer'); numTrees = optimizableVariable('numTrees',[1,500],'Type','integer');
Создание целевой функции, которая принимает входные данные z = [maxNumSplits,numTrees] и возвращает значение потери с перекрестной проверкой z.
minfun = @(z)kfoldLoss(fitcgam(adultdata,'salary','CrossVal','on', ... 'MaxNumSplitsPerPredictor',z.maxNumSplits, ... 'NumTreesPerPredictor',z.numTrees));
Если задан параметр перекрестной проверки ('CrossVal','on'), то fitcgam функция возвращает объект модели с перекрестной проверкой ClassificationPartitionedGAM. kfoldLoss функция возвращает потери классификации, полученные перекрестно проверенной моделью. Поэтому дескриптор функции minfun вычисляет потери перекрестной проверки в параметрах в z.
Поиск наилучших параметров [maxNumSplits,numTrees] использование bayesopt. Для воспроизводимости выберите 'expected-improvement-plus' функция приобретения. Функция сбора данных по умолчанию зависит от времени выполнения и, следовательно, может давать различные результаты.
results = bayesopt(minfun,[maxNumSplits,numTrees],'Verbose',0, ... 'IsObjectiveDeterministic',true, ... 'AcquisitionFunctionName','expected-improvement-plus');


Получите наилучшую точку из results.
zbest = bestPoint(results)
zbest=1×2 table
maxNumSplits numTrees
____________ ________
1 123
Обучение оптимизированного GAM с помощью zbest значения.
Mdl = fitcgam(adultdata,'salary', ... 'MaxNumSplitsPerPredictor',zbest.maxNumSplits, ... 'NumTreesPerPredictor',zbest.numTrees);
Tbl - Образцы данныхОбразец данных, используемых для обучения модели, указанный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Дополнительно, Tbl может содержать столбец для переменной ответа и столбец для весов наблюдения.
Переменная ответа должна быть категориальным, символьным или строковым массивом, логическим или числовым вектором или массивом ячеек символьных векторов. Рекомендуется указывать порядок классов в переменной ответа с помощью 'ClassNames' аргумент «имя-значение».
Столбец для весов должен быть числовым вектором.
Необходимо указать переменную ответа в Tbl с помощью ResponseVarName или formula и укажите веса наблюдения в Tbl с помощью 'Weights'.
Укажите переменную ответа с помощью ResponseVarName — fitcgam использует остальные переменные в качестве предикторов. Использование подмножества остальных переменных в Tbl в качестве предикторов укажите переменные предиктора с помощью 'PredictorNames'.
Определение спецификации модели с помощью formula — fitcgam использует подмножество переменных в Tbl в качестве переменных предиктора и переменной ответа, как указано в formula.
Если Tbl не содержит переменную ответа, затем укажите переменную ответа с помощью Y. Длина переменной ответа Y и количество строк в Tbl должно быть равным. Использование подмножества переменных в Tbl в качестве предикторов укажите переменные предиктора с помощью 'PredictorNames'.
fitcgam рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Tbl для отсутствующих значений.
fitcgam не использует наблюдения со всеми отсутствующими значениями в подгонке.
fitcgam не использует наблюдения с отсутствующими значениями ответа в подгонке.
fitcgam использует наблюдения с некоторыми отсутствующими значениями для предикторов, чтобы найти разделения по переменным, для которых эти наблюдения имеют допустимые значения.
Типы данных: 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'.
fitcgam строит набор деревьев взаимодействия, используя только те члены, значения p которых не больше 'MaxPValue' значение.
Пример: 'Y~x1+x2+x3+x1:x2'
Типы данных: char | string
Y - Этикетки классовМетки класса, указанные как категориальный, символьный или строковый массив, логический или числовой вектор или массив ячеек символьных векторов. Каждая строка Y представляет классификацию соответствующей строки X или Tbl.
Рекомендуется указывать порядок классов с помощью 'ClassNames' аргумент «имя-значение».
fitcgam рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Y для отсутствующих значений. fitcgam не использует наблюдения с отсутствующими значениями ответа в подгонке.
Типы данных: single | double | categorical | logical | char | string | cell
X - Данные предиктораДанные предиктора, заданные как числовая матрица. Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной.
fitcgam рассматривает NaN значения в X как отсутствующие значения. Функция не использует наблюдения со всеми отсутствующими значениями в подгонке. fitcgam использует наблюдения с некоторыми отсутствующими значениями для 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].
Для каждой итерации повышения для деревьев взаимодействия, fitcgam начинает соответствовать начальной скорости обучения. Функция наполовину уменьшает скорость обучения до тех пор, пока не обнаружит скорость, которая улучшает аппроксимацию модели.
Обучение модели с использованием небольшой скорости обучения требует большего количества итераций обучения, но часто достигает лучшей точности.
Дополнительные сведения о повышении градиента см. в разделе Алгоритм повышения градиента.
Пример: 'InitialLearnRateForInteractions',0.1
Типы данных: single | double
'InitialLearnRateForPredictors' - Начальная скорость обучения градиентного повышения для линейных членов1 (по умолчанию) | числовой скаляр в (0,1]Начальная скорость обучения градиентному повышению для линейных членов, заданная как числовой скаляр в интервале (0,1].
Для каждой итерации повышения для деревьев предикторов, fitcgam начинает соответствовать начальной скорости обучения. Функция наполовину уменьшает скорость обучения до тех пор, пока не обнаружит скорость, которая улучшает аппроксимацию модели.
Обучение модели с использованием небольшой скорости обучения требует большего количества итераций обучения, но часто достигает лучшей точности.
Дополнительные сведения о повышении градиента см. в разделе Алгоритм повышения градиента.
Пример: 'InitialLearnRateForPredictors',0.1
Типы данных: single | double
'Interactions' - Количество или список терминов взаимодействия0 (по умолчанию) | неотрицательный целочисленный скаляр | логическая матрица | 'all'Число или список терминов взаимодействия, включаемых в набор кандидатов S, указанный как неотрицательный скаляр целого числа, логическая матрица или 'all'.
Число членов взаимодействия, указанное как неотрицательное целое число - S включает указанное число важных членов взаимодействия, выбранных на основе p-значений членов.
Список терминов взаимодействия, указанных как логическая матрица - S включает в себя термины, указанные tоколо-p логическая матрица, где t - количество терминов взаимодействия, и p - количество предикторов, используемых для обучения модели. Например, logical([1 1 0; 0 1 1]) представляет собой две пары членов взаимодействия: пару первого и второго предикторов и пару второго и третьего предикторов.
Если fitcgam использует подмножество входных переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. То есть индексы столбцов логической матрицы не подсчитывают весовые переменные ответа и наблюдения. Индексы также не подсчитывают переменные, не используемые функцией.
'all' - S включает все возможные пары терминов взаимодействия, что p*(p – 1)/2 общее количество терминов.
Среди терминов взаимодействия в S, fitcgam функция определяет те, значения p которых не превышают значение 'MaxPValue' и использует их для построения набора деревьев взаимодействия. Используйте значение по умолчанию ('MaxPValue'1) для построения деревьев взаимодействия с использованием всех терминов в S.
Пример: 'Interactions','all'
Типы данных: single | double | logical | char | string
'MaxNumSplitsPerInteraction' - Максимальное количество разделений решений на дерево взаимодействияМаксимальное количество разделений решений (или узлов ветвления) для каждого дерева взаимодействия (усиленное дерево для члена взаимодействия), указанное как положительный целочисленный скаляр.
Пример: 'MaxNumSplitsPerInteraction',5
Типы данных: single | double
'MaxNumSplitsPerPredictor' - Максимальное число разделений решений на дерево предиктораМаксимальное количество разделений решения (или узлов ветвления) для каждого дерева предиктора (усиленное дерево для линейного члена), указанное как положительный целочисленный скаляр. По умолчанию fitcgam использует культю дерева для дерева предиктора.
Пример: 'MaxNumSplitsPerPredictor',5
Типы данных: single | double
'MaxPValue' - Максимальное значение p для обнаружения терминов взаимодействияМаксимальное значение p для обнаружения членов взаимодействия, заданное как числовой скаляр в интервале [0,1].
fitcgam сначала находит набор кандидатов S терминов взаимодействия из formula или 'Interactions'. Затем функция идентифицирует члены взаимодействия, значения p которых не превышают 'MaxPValue' и использует их для построения набора деревьев взаимодействия.
Значение по умолчанию ('MaxPValue',1) строит деревья взаимодействия для всех терминов взаимодействия в наборе кандидатов S.
Дополнительные сведения об обнаружении терминов взаимодействия см. в разделе Обнаружение терминов взаимодействия.
Пример: 'MaxPValue',0.05
Типы данных: single | double
'NumBins' - Количество ячеек для числовых предикторов256 (по умолчанию) | положительный целочисленный скаляр | [] (пусто)Число ячеек для числовых предикторов, указанных как положительный скаляр целого числа или [] (пусто).
При указании 'NumBins' значение в виде положительного целого скаляра (numBins), то fitcgam помещает каждый числовой предиктор максимум в numBins equiprobable bins, а затем выращивает деревья по индексам bin вместо исходных данных.
Количество ячеек может быть меньше numBins если предиктор имеет менее numBins уникальные значения.
fitcgam не содержит категориальных предикторов.
Если 'NumBins' значение пустое ([]), то fitcgam не содержит никаких предикторов.
При использовании большого набора данных обучения этот параметр объединения ускоряет обучение, но может привести к снижению точности. Сначала можно использовать значение по умолчанию 'NumBins', а затем изменить значение в зависимости от точности и скорости тренировки.
Обученная модель Mdl хранит края ячейки в BinEdges собственность.
Пример: 'NumBins',50
Типы данных: single | double
'NumTreesPerInteraction' - Количество деревьев на один термин взаимодействияЧисло деревьев на член взаимодействия, указанное как положительный целочисленный скаляр.
'NumTreesPerInteraction' значение эквивалентно количеству итераций повышения градиента для членов взаимодействия для предикторов. Для каждой итерации fitcgam добавляет в модель набор деревьев взаимодействия, по одному дереву для каждого члена взаимодействия. Сведения об алгоритме повышения градиента см. в разделе Алгоритм повышения градиента.
Можно определить, имеет ли подогнанная модель указанное количество деревьев, просматривая диагностическое сообщение, отображаемое при 'Verbose' равно 1 или 2, или путем проверки ReasonForTermination значение свойства модели Mdl.
Пример: 'NumTreesPerInteraction',500
Типы данных: single | double
'NumTreesPerPredictor' - Количество деревьев на линейный членЧисло деревьев на линейный член, указанное как положительный целочисленный скаляр.
'NumTreesPerPredictor' значение эквивалентно количеству итераций повышения градиента для линейных членов для предикторов. Для каждой итерации fitcgam добавляет в модель набор деревьев предиктора, по одному дереву для каждого предиктора. Сведения об алгоритме повышения градиента см. в разделе Алгоритм повышения градиента.
Можно определить, имеет ли подогнанная модель указанное количество деревьев, просматривая диагностическое сообщение, отображаемое при 'Verbose' равно 1 или 2, или путем проверки ReasonForTermination значение свойства модели Mdl.
Пример: 'NumTreesPerPredictor',500
Типы данных: single | double
'CategoricalPredictors' - Список категориальных предикторов'all'Список категориальных предикторов, указанный как одно из значений в этой таблице.
| Стоимость | Описание |
|---|---|
| Вектор положительных целых чисел |
Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до Если |
| Логический вектор |
A |
| Символьная матрица | Каждая строка матрицы является именем предикторной переменной. Имена должны соответствовать записям в PredictorNames. Поместите имена с дополнительными пробелами, чтобы каждая строка символьной матрицы имела одинаковую длину. |
| Строковый массив или массив ячеек символьных векторов | Каждый элемент массива является именем переменной предиктора. Имена должны соответствовать записям в PredictorNames. |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl), fitcgam предполагает, что переменная категорична, если она является логическим вектором, неупорядоченным категориальным вектором, символьным массивом, строковым массивом или массивом ячеек символьных векторов. Если данные предиктора являются матрицей (X), fitcgam предполагает, что все предикторы непрерывны. Чтобы определить любые другие предикторы как категориальные предикторы, укажите их с помощью 'CategoricalPredictors' аргумент «имя-значение».
Пример: 'CategoricalPredictors','all'
Типы данных: single | double | logical | char | string | cell
'ClassNames' - Названия классов, используемых для обученияИмена классов, используемых для обучения, указанные как категориальный, символьный или строковый массив; логический или числовой вектор; или массив ячеек символьных векторов. ClassNames должен иметь тот же тип данных, что и переменная ответа в Tbl или Y.
Если ClassNames является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Использовать ClassNames кому:
Укажите порядок занятий во время обучения.
Укажите порядок любого измерения входного или выходного аргумента, соответствующего порядку класса. Например, использовать ClassNames для указания порядка размеров Cost или порядок столбцов классификационных баллов, возвращенных predict.
Выберите подмножество классов для обучения. Например, предположим, что набор всех различных имен классов в Y является {'a','b','c'}. Обучение модели с использованием наблюдений из классов 'a' и 'c' только, укажите 'ClassNames',{'a','c'}.
Значение по умолчанию для ClassNames - набор всех различающихся имен классов в переменной ответа в Tbl или Y.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical | char | string | logical | single | double | cell
'Cost' - Расходы на неправильную классификацию[0 1; 1 0] (по умолчанию) | числовая матрица 2 на 2 | структураСтоимость неправильной классификации точки, указанная как одно из следующих значений:
числовая матрица 2 на 2, где Cost(i,j) - стоимость классификации точки по классу j если его истинный класс i (то есть строки соответствуют истинному классу, а столбцы соответствуют прогнозируемому классу). Определение порядка классов для соответствующих строк и столбцов Cost, установите 'ClassNames' аргумент «имя-значение».
Структура S с двумя полями: S.ClassNames, который содержит имена групп в качестве переменной того же типа данных, что и переменная ответа в Tbl или Y; и S.ClassificationCosts, которая содержит матрицу затрат.
Пример: 'Cost',[0 2; 1 0]
Типы данных: single | double | struct
'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 чтобы выбрать, какие переменные предиктора использовать в обучении. То есть fitcgam использует только переменные предиктора в PredictorNames и переменную ответа во время обучения.
PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной ответа.
По умолчанию PredictorNames содержит имена всех переменных предиктора.
Хорошей практикой является определение предикторов для обучения с использованием 'PredictorNames' или formulaно не оба.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string | cell
'Prior' - Предварительные вероятности'empirical' (по умолчанию) | 'uniform' | вектор скалярных значений | структураПредварительные вероятности для каждого класса, определенные как одна из следующих:
Вектор символа или строковый скаляр.
Вектор (одно скалярное значение для каждого класса). Определение порядка классов для соответствующих элементов 'Prior', установите 'ClassNames' аргумент «имя-значение».
Структура S с двумя полями.
S.ClassNames содержит имена классов в качестве переменной того же типа, что и переменная ответа в Y или Tbl.
S.ClassProbs содержит вектор соответствующих вероятностей.
fitcgam нормализует веса в каждом классе ('Weights') для суммирования значения предшествующей вероятности соответствующего класса.
Пример: 'Prior','uniform'
Типы данных: char | string | single | double | struct
'ResponseName' - Имя переменной ответа'Y' (по умолчанию) | символьный вектор | строковый скалярИмя переменной ответа, указанное как вектор символа или скаляр строки.
Если вы поставляете Y, то вы можете использовать 'ResponseName' для указания имени переменной ответа.
Если вы поставляете ResponseVarName или formula, то вы не можете использовать 'ResponseName'.
Пример: 'ResponseName','response'
Типы данных: char | string
'ScoreTransform' - Преобразование баллов'logit' (по умолчанию) | 'none' | дескриптор функции |...Преобразование баллов, указанное как имя встроенной функции преобразования или дескриптор функции.
В этой таблице представлены доступные преобразования баллов. Укажите его с помощью соответствующего вектора символа или скаляра строки.
| Стоимость | Описание |
|---|---|
'doublelogit' | 1/( 1 + e-2x) |
'invlogit' | log (x/( 1 - x)) |
'ismax' | Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в 0 |
'logit' | 1/( 1 + e-x) |
'none' или 'identity' | x (без преобразования) |
'sign' | -1 для x < 0 0 для x = 0 1 для x > 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в -1 |
'symmetriclogit' | 2/( 1 + e-x) - 1 |
Для функции MATLAB или определяемой функции используйте ее дескриптор функции для преобразования оценки. Дескриптор функции должен принимать матрицу (исходные баллы) и возвращать матрицу того же размера (преобразованные баллы).
Этот аргумент определяет вычисление выходного балла для функций объекта, таких как predict, margin, и edge. Использовать 'logit' (по умолчанию) для вычисления апостериорных вероятностей и использования 'none' для вычисления логита задних вероятностей.
Пример: 'ScoreTransform','none'
Типы данных: char | string | function_handle
'Verbose' - Уровень детализации0 (по умолчанию) | 1 | 2Уровень детализации, указанный как 0, 1, или 2. Verbose значение определяет объем информации, отображаемой программой в окне команд.
В этой таблице представлены доступные параметры уровня детализации.
| Стоимость | Описание |
|---|---|
0 | Программное обеспечение не отображает никакой информации. |
1 | Программа отображает диагностические сообщения каждый numPrint итерации, где numPrint является 'NumPrint' значение. |
2 | Программа отображает диагностические сообщения на каждой итерации. |
В каждой строке диагностических сообщений отображается информация о каждой итерации повышения и содержатся следующие столбцы:
Type - тип обученных деревьев, 1D (деревья предикторов или усиленные деревья для линейных терминов для предикторов) или 2D (деревья взаимодействия или усиленные деревья для терминов взаимодействия для предикторов)
NumTrees - Количество деревьев на линейный член или член взаимодействия, которые fitcgam добавлено к модели до настоящего времени
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'.
fitcgam нормализует веса в каждом классе для суммирования со значением предшествующей вероятности соответствующего класса.
Типы данных: 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 - Обученная обобщенная аддитивная модельClassificationGAM объект модели | ClassificationPartitionedGAM объект модели с перекрестной проверкойОбученная обобщенная аддитивная модель, возвращенная в качестве одного из объектов модели в этой таблице.
| Объект модели | Опции перекрестной проверки для обучения объекта модели | Способы классификации наблюдений с помощью объекта модели |
|---|---|---|
ClassificationGAM | Ничего | Использовать predict для классификации новых наблюдений и использования resubPredict классифицировать обучающие наблюдения. |
ClassificationPartitionedGAM | Определить KFold, Holdout, Leaveout, CrossVal, или CVPartition | Использовать kfoldPredict классифицировать наблюдения, которые fitcgam держится во время обучения. kfoldPredict предсказывает метку класса для каждого наблюдения, используя модель, обученную без этого наблюдения. |
Для ссылки на свойства Mdl, используйте точечную нотацию. Например, введите Mdl.Interactions в окне команд для отображения терминов взаимодействия в Mdl.
Обобщённая аддитивная модель (GAM) - интерпретируемая модель, которая объясняет оценки классов (логит вероятностей классов), используя сумму одномерных и двумерных функций формы предикторов.
fitcgam использует усиленное дерево в качестве функции формы для каждого предиктора и, необязательно, для каждой пары предикторов; следовательно, функция может фиксировать нелинейное отношение между предиктором и переменной отклика. Поскольку вклады отдельных функций формы в прогноз (классификационный балл) хорошо разделены, модель легко интерпретировать.
Стандартный GAM использует одномерную функцию формы для каждого предиктора.
f2 (x2) +⋯+fp (xp),
где y - переменная отклика, которая следует за биномиальным распределением с вероятностью успеха (вероятность положительного класса) λ в n наблюдениях. g (λ) является функцией логитовой линии связи, а c - член перехвата (константа). fi (xi) является одномерной функцией формы для i-го предиктора, который является усиленным деревом для линейного члена для предиктора (дерева предиктора).
Можно включить взаимодействия между предикторами в модель, добавив в модель двумерные функции формы важных терминов взаимодействия.
+∑i,j∈{1,2,⋯,p}fij (xixj),
где fij (xixj) - двумерная функция формы для i-го и j-го предикторов, которая является усиленным деревом для члена взаимодействия для предикторов (дерева взаимодействия).
fitcgam находит важные условия взаимодействия на основе p-значений F-тестов. Дополнительные сведения см. в разделе Определение терминов взаимодействия.
Отклонение - это обобщение остаточной суммы квадратов. Он измеряет доброту посадки по сравнению с насыщенной моделью.
Отклонение подогнанной модели в два раза превышает разницу между логарифмами модели и насыщенной модели:
-2 (logL - logLs),
где L и Ls - вероятности подогнанной модели и насыщенной модели соответственно. Насыщенная модель - это модель с максимальным количеством параметров, которое можно оценить.
fitcgam использует отклонение для измерения благости соответствия модели и находит скорость обучения, которая уменьшает отклонение в каждой итерации. Определить 'Verbose' 1 или 2 для отображения отклонения и скорости обучения в окне команд.
fitcgam подгоняет обобщенную аддитивную модель с использованием алгоритма повышения градиента (адаптивная логистическая регрессия).
fitcgam сначала строит наборы деревьев предикторов (усиленные деревья для линейных терминов для предикторов), а затем строит наборы деревьев взаимодействия (усиленные деревья для терминов взаимодействия для предикторов). Алгоритм повышения итераций не более 'NumTreesPerPredictor' время для деревьев предикторов, а затем итераций не более 'NumTreesPerInteraction' время для деревьев взаимодействия.
Для каждой итерации повышения, fitcgam строит набор предикторных деревьев с начальной скоростью обучения 'InitialLearnRateForPredictors'или строит набор деревьев взаимодействия с начальной скоростью обучения 'InitialLearnRateForInteractions'.
При построении набора деревьев функция обрабатывает по одному дереву за один раз. Оно соответствует остатку дерева, который представляет собой разницу между откликом и агрегированным предсказанием от всех деревьев, выращенных ранее. Для управления скоростью повышения уровня обучения функция сокращает дерево на скорость обучения, а затем добавляет дерево к модели и обновляет остаток.
Обновленная модель = текущая модель + (коэффициент обучения)· (новое дерево)
Обновленный остаток = текущий остаток - (скорость обучения)· (ответ объясняется новым деревом)
Если добавление набора деревьев улучшает аппроксимацию модели (то есть уменьшает отклонение аппроксимации), то fitcgam переходит к следующей итерации.
В противном случае fitcgam уменьшает вдвое уровень обучения и использует его для обновления модели и остатка. Функция продолжает уменьшать скорость обучения вдвое до тех пор, пока не обнаружит скорость, которая улучшает аппроксимацию модели.
Если функция не может найти такую скорость обучения для деревьев предикторов, то она останавливает повышение итераций для линейных членов и начинает повышение итераций для членов взаимодействия.
Если функция не может найти такую скорость обучения для деревьев взаимодействия, она завершает аппроксимацию модели.
Вы можете определить, почему обучение остановлено, проверив ReasonForTermination свойство обучаемой модели.
Для каждого парного члена взаимодействия xixj (определяется formula или 'Interactions'), программное обеспечение выполняет F-тест, чтобы проверить, является ли термин статистически значимым.
Чтобы ускорить процесс, fitcgam суммирует числовые предикторы не более чем в 8 четких бункеров. Количество ячеек может быть меньше 8, если предиктор имеет менее 8 уникальных значений. F-тест рассматривает нулевую гипотезу о том, что бункеры, созданные xi и xj, имеют равные ответы по сравнению с альтернативой того, что по меньшей мере один бункер имеет отличное от других значение ответа. Небольшое значение p указывает на то, что различия значительны, что подразумевает, что соответствующий член взаимодействия значителен и, следовательно, включение термина может улучшить подгонку модели.
fitcgam строит набор деревьев взаимодействия с использованием терминов, значения p которых не превышают 'MaxPValue' значение. Можно использовать значение по умолчанию 'MaxPValue' стоимость 1 для построения деревьев взаимодействия с использованием всех терминов, указанных в formula или 'Interactions'.
fitcgam добавляет в модель условия взаимодействия в порядке важности на основе значений p. Используйте Interactions свойство возвращаемой модели для проверки порядка терминов взаимодействия, добавленных в модель.
[1] Лу, Инь, Рич Каруана и Йоханнес Герке. «Внятные модели для классификации и регрессии». Материалы 18-й Международной конференции АСМ СИГКДД по вопросам обнаружения знаний и интеллектуального анализа данных (KDD "12). Пекин, Китай: ACM Press, 2012, стр. 150-158.
[2] Лу, Инь, Рич Каруана, Йоханнес Герке и Джайлс Хукер. «Точные внятные модели с парными взаимодействиями». Материалы 19-й Международной конференции ACM SIGKDD по открытию знаний и анализу данных (KDD "13), Чикаго, Иллинойс, США: ACM Press, 2013, стр. 623-631.
addInteractions | ClassificationGAM | ClassificationPartitionedGAM | predict | resume
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.