Подходящая обобщенная аддитивная модель (GAM) для бинарной классификации
возвращает обобщенную аддитивную модель
Mdl
= fitcgam(Tbl
,ResponseVarName
)Mdl
обученное использование выборочных данных содержится в таблице Tbl
. Входной параметр ResponseVarName
имя переменной в Tbl
это содержит метки класса для бинарной классификации.
задает опции с помощью одних или нескольких аргументов name-value в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, 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.Interactions
ans = 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
Среднее значение misclassification уровень более чем 10 сгибов составляет приблизительно 7%.
OptimizeHyperparameters
Оптимизируйте гиперпараметры GAM относительно потери перекрестной проверки при помощи аргумента значения имени OptimizeHyperparameters.
Загрузите 1 994 данных о переписи, хранимых в census1994.mat
. Набор данных состоит из демографических данных Бюро переписи США, чтобы предсказать, передает ли индивидуум 50 000$ в год. Задача классификации состоит в том, чтобы подобрать модель, которая предсказывает категорию зарплаты людей, учитывая их возраст, рабочий класс, образовательный уровень, семейное положение, гонку, и так далее.
load census1994
census1994
содержит обучающий набор данных adultdata
и тестовые данные устанавливают adulttest
. Уменьшать время выполнения для этого примера, поддемонстрационных 500 учебных наблюдений и 500 тестовых наблюдений при помощи datasample
функция.
rng('default') NumSamples = 5e2; adultdata = datasample(adultdata,NumSamples,'Replace',false); adulttest = datasample(adulttest,NumSamples,'Replace',false);
Обучите классификатор GAM путем передачи обучающих данных adultdata
к fitcgam
функция, и включает OptimizeHyperparameters
аргумент. Задайте OptimizeHyperparameters
как 'auto'
так, чтобы fitcgam
находит оптимальные значения InitialLearnRateForPredictors
, NumTreesPerPredictor
, Interactions
, InitialLearnRateForInteractions
, и NumTreesPerInteraction
. Для воспроизводимости выберите 'expected-improvement-plus'
функция захвата. Функция захвата по умолчанию зависит от времени выполнения и, поэтому, может дать различные результаты.
Mdl = fitcgam(adultdata,'salary','OptimizeHyperparameters','auto', ... 'HyperparameterOptimizationOptions', ... struct('AcquisitionFunctionName','expected-improvement-plus'))
|==========================================================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | InitialLearnRate-| NumTreesPerP-| Interactions | InitialLearnRate-| NumTreesPerI-| | | result | | runtime | (observed) | (estim.) | ForPredictors | redictor | | ForInteractions | nteraction | |==========================================================================================================================================================| | 1 | Best | 0.148 | 11.721 | 0.148 | 0.148 | 0.001555 | 356 | 5 | 0.068117 | 16 | | 2 | Accept | 0.182 | 0.88258 | 0.148 | 0.14977 | 0.94993 | 25 | 0 | - | - | | 3 | Accept | 0.174 | 0.5938 | 0.148 | 0.148 | 0.016784 | 11 | 3 | 0.12025 | 12 | | 4 | Accept | 0.176 | 10.466 | 0.148 | 0.148 | 0.14207 | 179 | 71 | 0.0020629 | 22 | | 5 | Accept | 0.176 | 9.6859 | 0.148 | 0.1502 | 0.0010025 | 104 | 12 | 0.0052651 | 178 | | 6 | Accept | 0.152 | 9.212 | 0.148 | 0.15035 | 0.0017566 | 323 | 4 | 0.079281 | 16 | | 7 | Accept | 0.166 | 16.319 | 0.148 | 0.14801 | 0.0011656 | 497 | 10 | 0.17479 | 92 | | 8 | Accept | 0.172 | 10.99 | 0.148 | 0.14914 | 0.0014435 | 397 | 0 | - | - | | 9 | Accept | 0.16 | 11.9 | 0.148 | 0.14801 | 0.0016398 | 432 | 2 | 0.045129 | 11 | | 10 | Accept | 0.172 | 4.414 | 0.148 | 0.14855 | 0.0013589 | 146 | 9 | 0.065204 | 12 | | 11 | Accept | 0.156 | 10.724 | 0.148 | 0.14911 | 0.002082 | 368 | 7 | 0.0011513 | 12 | | 12 | Accept | 0.178 | 11.031 | 0.148 | 0.14801 | 0.13309 | 360 | 6 | 0.67104 | 13 | | 13 | Accept | 0.154 | 11.475 | 0.148 | 0.15192 | 0.0014287 | 380 | 5 | 0.027919 | 18 | | 14 | Accept | 0.164 | 10.497 | 0.148 | 0.15151 | 0.0015368 | 318 | 5 | 0.022401 | 93 | | 15 | Best | 0.144 | 9.6966 | 0.144 | 0.14515 | 0.0020403 | 331 | 8 | 0.12167 | 11 | | 16 | Accept | 0.168 | 9.6039 | 0.144 | 0.14401 | 0.0016201 | 329 | 10 | 0.74319 | 12 | | 17 | Accept | 0.16 | 9.0822 | 0.144 | 0.1526 | 0.002317 | 313 | 9 | 0.093554 | 18 | | 18 | Accept | 0.158 | 9.8266 | 0.144 | 0.15425 | 0.0016865 | 331 | 5 | 0.023535 | 11 | | 19 | Accept | 0.146 | 11.464 | 0.144 | 0.15096 | 0.0019238 | 386 | 6 | 0.043578 | 14 | | 20 | Accept | 0.156 | 11.165 | 0.144 | 0.15234 | 0.0023502 | 385 | 6 | 0.063029 | 11 | |==========================================================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | InitialLearnRate-| NumTreesPerP-| Interactions | InitialLearnRate-| NumTreesPerI-| | | result | | runtime | (observed) | (estim.) | ForPredictors | redictor | | ForInteractions | nteraction | |==========================================================================================================================================================| | 21 | Accept | 0.146 | 11.203 | 0.144 | 0.15105 | 0.0023381 | 383 | 6 | 0.042149 | 21 | | 22 | Best | 0.142 | 11.922 | 0.142 | 0.14959 | 0.0024173 | 400 | 7 | 0.022884 | 18 | | 23 | Accept | 0.152 | 13.325 | 0.142 | 0.14972 | 0.0017718 | 443 | 8 | 0.022974 | 18 | | 24 | Best | 0.14 | 12.785 | 0.14 | 0.14681 | 0.0032302 | 417 | 7 | 0.01295 | 23 | | 25 | Accept | 0.148 | 11.121 | 0.14 | 0.14672 | 0.0043102 | 371 | 6 | 0.016624 | 27 | | 26 | Accept | 0.14 | 11.871 | 0.14 | 0.14433 | 0.0029528 | 410 | 6 | 0.011766 | 25 | | 27 | Accept | 0.15 | 13.058 | 0.14 | 0.14441 | 0.0038288 | 455 | 6 | 0.038686 | 14 | | 28 | Accept | 0.144 | 13.992 | 0.14 | 0.14374 | 0.0030969 | 471 | 7 | 0.0093565 | 39 | | 29 | Accept | 0.144 | 14.149 | 0.14 | 0.14331 | 0.0033063 | 487 | 5 | 0.0033831 | 26 | | 30 | Best | 0.138 | 12.442 | 0.138 | 0.14213 | 0.0031221 | 420 | 5 | 0.0035267 | 26 |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 326.2596 seconds Total objective function evaluation time: 316.6185 Best observed feasible point: InitialLearnRateForPredictors NumTreesPerPredictor Interactions InitialLearnRateForInteractions NumTreesPerInteraction _____________________________ ____________________ ____________ _______________________________ ______________________ 0.0031221 420 5 0.0035267 26 Observed objective function value = 0.138 Estimated objective function value = 0.14267 Function evaluation time = 12.4417 Best estimated feasible point (according to models): InitialLearnRateForPredictors NumTreesPerPredictor Interactions InitialLearnRateForInteractions NumTreesPerInteraction _____________________________ ____________________ ____________ _______________________________ ______________________ 0.0029528 410 6 0.011766 25 Estimated objective function value = 0.14213 Estimated function evaluation time = 12.2594
Mdl = ClassificationGAM PredictorNames: {'age' 'workClass' 'fnlwgt' 'education' 'education_num' 'marital_status' 'occupation' 'relationship' 'race' 'sex' 'capital_gain' 'capital_loss' 'hours_per_week' 'native_country'} ResponseName: 'salary' CategoricalPredictors: [2 4 6 7 8 9 10 14] ClassNames: [<=50K >50K] ScoreTransform: 'logit' Intercept: -1.3924 Interactions: [6×2 double] NumObservations: 500 HyperparameterOptimizationResults: [1×1 BayesianOptimization] Properties, Methods
fitcgam
возвращает ClassificationGAM
объект модели, который использует лучшую предполагаемую допустимую точку. Лучшая предполагаемая допустимая точка является набором гиперпараметров, который минимизирует верхнюю доверительную границу потери перекрестной проверки на основе базовой Гауссовой модели процесса Байесового процесса оптимизации.
Байесов процесс оптимизации внутренне обеспечивает Гауссову модель процесса целевой функции. Целевая функция является перекрестным подтвержденным misclassification уровнем для классификации. Для каждой итерации процесс оптимизации обновляет Гауссову модель процесса и использует модель, чтобы найти новый набор гиперпараметров. Каждая линия итеративного отображения показывает новый набор гиперпараметров и этих значений столбцов:
Objective
— Значение целевой функции вычисляется в новом наборе гиперпараметров.
Objective runtime
— Время оценки целевой функции.
Eval result
— Отчет результата в виде Accept
, Best
, или Error
. Accept
указывает, что целевая функция возвращает конечное значение и Error
указывает, что целевая функция возвращает значение, которое не является конечным действительным скаляром. Best
указывает, что целевая функция возвращает конечное значение, которое ниже, чем ранее вычисленные значения целевой функции.
BestSoFar(observed)
— Минимальное значение целевой функции вычисляется до сих пор. Это значение является любой значением целевой функции текущей итерации (если Eval result
значением для текущей итерации является Best
) или значение предыдущего Best
итерация.
BestSoFar(estim.)
— В каждой итерации программное обеспечение оценивает верхние доверительные границы значений целевой функции, с помощью обновленной Гауссовой модели процесса, во всех наборах гиперпараметров, которые попробовали до сих пор. Затем программное обеспечение выбирает точку с минимальной верхней доверительной границей. BestSoFar(estim.)
значение является значением целевой функции, возвращенным predictObjective
функция в минимальной точке.
График ниже итеративного отображения показывает BestSoFar(observed)
и BestSoFar(estim.)
значения синего и зеленого цвета, соответственно.
Возвращенный объект Mdl
использует лучшую предполагаемую допустимую точку, то есть, набор гиперпараметров, который производит BestSoFar(estim.)
значение в итоговой итерации на основе итоговой Гауссовой модели процесса.
Получите лучшую предполагаемую допустимую точку из Mdl
в HyperparameterOptimizationResults
свойство.
Mdl.HyperparameterOptimizationResults.XAtMinEstimatedObjective
ans=1×5 table
InitialLearnRateForPredictors NumTreesPerPredictor Interactions InitialLearnRateForInteractions NumTreesPerInteraction
_____________________________ ____________________ ____________ _______________________________ ______________________
0.0029528 410 6 0.011766 25
В качестве альтернативы можно использовать bestPoint
функция. По умолчанию, bestPoint
функционируйте использует 'min-visited-upper-confidence-interval'
критерий.
[x,CriterionValue,iteration] = bestPoint(Mdl.HyperparameterOptimizationResults)
x=1×5 table
InitialLearnRateForPredictors NumTreesPerPredictor Interactions InitialLearnRateForInteractions NumTreesPerInteraction
_____________________________ ____________________ ____________ _______________________________ ______________________
0.0029528 410 6 0.011766 25
CriterionValue = 0.1464
iteration = 26
'min-visited-upper-confidence-interval'
критерий выбирает гиперпараметры, полученные из 26-й итерации как лучшая точка. CriterionValue
верхняя граница перекрестной подтвержденной потери, вычисленной итоговой Гауссовой моделью процесса.
Можно также извлечь лучшую наблюдаемую допустимую точку (то есть, последний Best
укажите в итеративном отображении) от HyperparameterOptimizationResults
свойство или путем определения Criterion
как 'min-observed'
.
Mdl.HyperparameterOptimizationResults.XAtMinObjective
ans=1×5 table
InitialLearnRateForPredictors NumTreesPerPredictor Interactions InitialLearnRateForInteractions NumTreesPerInteraction
_____________________________ ____________________ ____________ _______________________________ ______________________
0.0031221 420 5 0.0035267 26
[x_observed,CriterionValue_observed,iteration_observed] = bestPoint(Mdl.HyperparameterOptimizationResults,'Criterion','min-observed')
x_observed=1×5 table
InitialLearnRateForPredictors NumTreesPerPredictor Interactions InitialLearnRateForInteractions NumTreesPerInteraction
_____________________________ ____________________ ____________ _______________________________ ______________________
0.0031221 420 5 0.0035267 26
CriterionValue_observed = 0.1380
iteration_observed = 30
'min-observed'
критерий выбирает гиперпараметры, полученные из 30-й итерации как лучшая точка. CriterionValue_observed
вычисленное использование фактической перекрестной подтвержденной потери выбранных гиперпараметров. Для получения дополнительной информации смотрите аргумент значения имени Критерия bestPoint
.
Оцените эффективность классификатора на наборе тестов путем вычисления ошибки классификации наборов тестов.
L = loss(Mdl,adulttest,'salary')
L = 0.1564
bayesopt
Оптимизируйте параметры GAM относительно перекрестной проверки при помощи bayesopt
функция.
В качестве альтернативы можно найти оптимальные значения fitcgam
аргументы name-value при помощи аргумента значения имени OptimizeHyperparameters. Для примера смотрите, Оптимизируют GAM Используя OptimizeHyperparameters.
Загрузите 1 994 данных о переписи, хранимых в census1994.mat
. Набор данных состоит из демографических данных Бюро переписи США, чтобы предсказать, передает ли индивидуум 50 000$ в год. Задача классификации состоит в том, чтобы подобрать модель, которая предсказывает категорию зарплаты людей, учитывая их возраст, рабочий класс, образовательный уровень, семейное положение, гонку, и так далее.
load census1994
census1994
содержит обучающий набор данных adultdata
и тестовые данные устанавливают adulttest
. Уменьшать время выполнения для этого примера, поддемонстрационных 500 учебных наблюдений от adultdata
при помощи datasample
функция.
rng('default') NumSamples = 5e2; adultdata = datasample(adultdata,NumSamples,'Replace',false);
Настройте раздел для перекрестной проверки. Этот шаг фиксирует наборы перекрестной проверки, которые оптимизация использует на каждом шаге.
c = cvpartition(adultdata.salary,'KFold',5);
Подготовьте optimizableVariable
объекты для аргументов name-value, что вы хотите оптимизировать использующую Байесовую оптимизацию. Этот пример находит оптимальные значения для 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','CVPartition',c, ... 'MaxNumSplitsPerPredictor',z.maxNumSplits, ... 'NumTreesPerPredictor',z.numTrees));
Если вы задаете опцию перекрестной проверки, то 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 5
Обучите оптимизированный GAM с помощью zbest
значения.
Mdl = fitcgam(adultdata,'salary', ... 'MaxNumSplitsPerPredictor',zbest.maxNumSplits, ... 'NumTreesPerPredictor',zbest.numTrees);
Tbl
— Выборочные данныеВыборочные данные раньше обучали модель в виде таблицы. Каждая строка Tbl
соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.
Опционально, Tbl
может содержать столбец для переменной отклика и столбец для весов наблюдения.
Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов.
fitcgam
поддержки только бинарная классификация. Или переменная отклика должна содержать точно два отличных класса, или необходимо задать два класса для обучения при помощи ClassNames
аргумент значения имени.
Хорошая практика должна задать порядок классов в переменной отклика при помощи 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
— Метки классаКласс помечает в виде категориального, символа, или массива строк, логического или числового вектора или массива ячеек из символьных векторов.
fitcgam
поддержки только бинарная классификация. Любой Y
должен содержать точно два отличных класса, или необходимо задать два класса для обучения при помощи ClassNames
аргумент значения имени.
Длина Y
должно быть равно количеству наблюдений в X
или Tbl
.
Если Y
символьный массив, затем каждая метка должна соответствовать одной строке массива.
Хорошая практика должна задать порядок класса с помощью 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
— Начальная скорость обучения повышения градиента в течение многих периодов взаимодействия
(значение по умолчанию) | числовой скаляр в (0,1]Начальная скорость обучения повышения градиента в течение многих периодов взаимодействия в виде числового скаляра в интервале (0,1].
Для каждой повышающей итерации для деревьев взаимодействия, fitcgam
начинает соответствовать начальной скорости обучения. Функциональные половины скорость обучения, пока это не находит уровень, который улучшает подгонку модели.
Обучение модель с помощью небольшой скорости обучения требует большего количества итераций изучения, но часто достигает лучшей точности.
Для получения дополнительной информации о повышении градиента, смотрите, что Градиент Повышает Алгоритм.
Пример: 'InitialLearnRateForInteractions',0.1
Типы данных: single
| double
InitialLearnRateForPredictors
— Начальная скорость обучения повышения градиента для линейных членов
(значение по умолчанию) | числовой скаляр в (0,1]Начальная скорость обучения повышения градиента для линейных членов в виде числового скаляра в интервале (0,1].
Для каждой повышающей итерации для деревьев предиктора, fitcgam
начинает соответствовать начальной скорости обучения. Функциональные половины скорость обучения, пока это не находит уровень, который улучшает подгонку модели.
Обучение модель с помощью небольшой скорости обучения требует большего количества итераций изучения, но часто достигает лучшей точности.
Для получения дополнительной информации о повышении градиента, смотрите, что Градиент Повышает Алгоритм.
Пример: 'InitialLearnRateForPredictors',0.1
Типы данных: single
| double
Interactions
— Номер или список периодов взаимодействия
(значение по умолчанию) | неотрицательный целочисленный скаляр | логическая матрица | '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
— Количество интервалов для числовых предикторов
(значение по умолчанию) | положительный целочисленный скаляр | []
пустойКоличество интервалов для числовых предикторов в виде положительного целочисленного скаляра или []
пустой.
Если вы задаете 'NumBins'
значение как положительный целочисленный скаляр (numBins
то fitcgam
интервалы каждый числовой предиктор в в большей части numBins
равновероятные интервалы, и затем выращивают деревья на индексах интервала вместо исходных данных.
Количество интервалов может быть меньше 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 и Если |
Логический вектор |
|
Символьная матрица | Каждая строка матрицы является именем переменного предиктора. Имена должны совпадать с записями в 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
— Misclassification стоится
(значение по умолчанию) | числовая матрица 2 на 2 | структураСтоимость Misclassification точки в виде одного из следующего:
Числовая матрица 2 на 2, где Cost(i,j)
стоимость классификации точки в класс j
если его истинным классом является i
(то есть, строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу). Чтобы задать класс заказывают для соответствующих строк и столбцов Cost
, установите 'ClassNames'
аргумент значения имени.
Структуры
с двумя полями: S.ClassNames
, который содержит названия группы как переменную совпадающего типа данных как переменная отклика в Tbl
или Y
; и S.ClassificationCosts
, который содержит матрицу стоимости.
Пример: 'Cost',[0 2; 1 0]
Типы данных: single
| double
| struct
NumPrint
— Количество итераций между диагностическими распечатками сообщения
(значение по умолчанию) | неотрицательный целочисленный скалярКоличество итераций между диагностическими распечатками сообщения в виде неотрицательного целочисленного скаляра. Этот аргумент допустим только, когда вы задаете '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.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" | журнал (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
— Уровень многословия
(значение по умолчанию) | 1
| 2
Уровень многословия в виде 0
, 1, или
2
. Verbose
значение управляет объемом информации, который программное обеспечение отображает в Командном окне.
Эта таблица суммирует доступные опции уровня многословия.
Значение | Описание |
---|---|
0
| Программное обеспечение не отображает информации. |
1
| Программное обеспечение отображается, диагностика передает каждый numPrint итерации, где numPrint 'NumPrint' значение. |
2
| Программное обеспечение отображает диагностические сообщения в каждой итерации. |
Каждая линия диагностических сообщений показывает информацию о каждой повышающей итерации и включает следующие столбцы:
Type
— Тип обученных деревьев, 1D
(деревья предиктора или повышенные деревья для линейных членов для предикторов) или 2D
(деревья взаимодействия или повышенные деревья в течение многих периодов взаимодействия для предикторов)
NumTrees
— Количество деревьев на линейный член или период взаимодействия это fitcgam
добавленный к модели до сих пор
Deviance
— Отклонение модели
RelTol
— Относительное изменение предсказаний модели: , где вектор-столбец предсказаний модели в итерации 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
Примечание
Вы не можете использовать аргумент значения имени перекрестной проверки вместе с 'OptimizeHyperparameters'
аргумент значения имени. Можно изменить перекрестную проверку для 'OptimizeHyperparameters'
только при помощи 'HyperparameterOptimizationOptions'
аргумент значения имени.
CrossVal
— Отметьте, чтобы обучить перекрестную подтвержденную модель'off'
(значение по умолчанию) | 'on'
Отметьте, чтобы обучить перекрестную подтвержденную модель в виде 'on'
или 'off'
.
Если вы задаете 'on'
, затем программное обеспечение обучает перекрестную подтвержденную модель с 10 сгибами.
Можно заменить эту установку перекрестной проверки с помощью 'CVPartition'
, 'Holdout'
, 'KFold'
, или 'Leaveout'
аргумент значения имени. Можно использовать только один аргумент значения имени перекрестной проверки за один раз, чтобы создать перекрестную подтвержденную модель.
В качестве альтернативы перекрестный подтвердите после создания модели путем передачи Mdl
к crossval
.
Пример: 'Crossval','on'
CVPartition
— Раздел перекрестной проверки[]
(значение по умолчанию) | cvpartition
объект разделаРаздел перекрестной проверки в виде cvpartition
объект раздела, созданный cvpartition
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
Holdout
— Часть данных для валидации затяжкиЧасть данных, используемых для валидации затяжки в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте p*100
% из данных как данные о валидации, и обучают модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double |
single
KFold
— Количество сгибов
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели в виде положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает эти шаги:
Случайным образом разделите данные в k
наборы.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k
– 1 набор.
Сохраните k
компактные, обученные модели в k
- 1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: 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
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно задать только одни из этих четырех аргументов name-value: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Leaveout','on'
OptimizeHyperparameters
— Параметры, чтобы оптимизировать'none'
(значение по умолчанию) | 'auto'
| 'auto-univariate'
| 'auto-bivariate'
| 'all'
| 'all-univariate'
| 'all-bivariate'
| массив строк или массив ячеек имеющих право названий параметра | вектор из optimizableVariable
объектыПараметры, чтобы оптимизировать в виде одного из этих значений:
'none'
— Не оптимизировать.
'auto'
— Оптимизируйте InitialLearnRateForPredictors
, NumTreesPerPredictor
, Interactions
, InitialLearnRateForInteractions
, и NumTreesPerInteraction
.
'auto-univariate'
— Оптимизируйте InitialLearnRateForPredictors
и NumTreesPerPredictor
.
'auto-bivariate'
— Оптимизируйте Interactions
, InitialLearnRateForInteractions
, и NumTreesPerInteraction
.
'all'
— Оптимизируйте все имеющие право параметры.
'all-univariate'
— Оптимизируйте все имеющие право одномерные параметры.
'all-bivariate'
— Оптимизируйте все имеющие право двумерные параметры.
Массив строк или массив ячеек имеющих право названий параметра.
Вектор из optimizableVariable
объекты, обычно выход hyperparameters
.
Имеющие право параметры для fitcgam
:
Одномерные гиперпараметры
InitialLearnRateForPredictors
— fitcgam
поисковые запросы среди вещественных значений, масштабируемых журналом в области значений [1e-3,1]
.
MaxNumSplitsPerPredictor
— fitcgam
поисковые запросы среди целых чисел в области значений [1,maxNumSplits]
, где maxNumSplits
min(30,max(2,NumObservations–1))
. NumObservations
количество наблюдений, исключая недостающие наблюдения, сохраненные в NumObservations
свойство возвращенной модели Mdl
.
NumTreesPerPredictor
— fitcgam
поисковые запросы среди целых чисел, масштабируемых журналом в области значений [10,500]
.
Двумерные гиперпараметры
Interactions
— fitcgam
поисковые запросы среди целых чисел, масштабируемых журналом в области значений [0,MaxNumInteractions]
t, где MaxNumInteractions
NumPredictors*(NumPredictors – 1)/2
, и NumPredictors
количество предикторов, используемых, чтобы обучить модель.
InitialLearnRateForInteractions
— fitcgam
поисковые запросы среди вещественных значений, масштабируемых журналом в области значений [1e-3,1]
.
MaxNumSplitsPerInteraction
— fitcgam
поисковые запросы среди целых чисел в области значений [1,maxNumSplits]
.
NumTreesPerInteraction
— fitcgam
поисковые запросы среди целых чисел, масштабируемых журналом в области значений [10,500]
.
Используйте 'auto'
или 'all'
найти оптимальные гиперзначения параметров и для одномерных и для двумерных параметров. В качестве альтернативы можно найти оптимальные значения для одномерных параметров с помощью 'auto-univariate'
или 'all-univariate'
и затем найдите оптимальные значения для двумерных параметров с помощью 'auto-bivariate'
или 'all-bivariate'
. Для примеров смотрите, Оптимизируют GAM Используя OptimizeHyperparameters и Обучают Обобщенную Аддитивную Модель Бинарной Классификации.
Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitcgam
путем варьирования параметров. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте HyperparameterOptimizationOptions
аргумент значения имени.
Примечание
Значения 'OptimizeHyperparameters'
замените любые значения, вы задаете использование других аргументов name-value. Например, установка 'OptimizeHyperparameters'
к 'auto'
причины fitcgam
оптимизировать гиперпараметры, соответствующие 'auto'
опция и проигнорировать любые заданные значения для гиперпараметров.
Установите параметры не по умолчанию путем передачи вектора из optimizableVariable
объекты, которые имеют значения не по умолчанию. Например:
load fisheriris params = hyperparameters('fitcgam',meas,species); params(1).Range = [1e-4,1e6];
Передайте params
как значение OptimizeHyperparameters
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является misclassification уровнем. Чтобы управлять итеративным отображением, установите Verbose
поле 'HyperparameterOptimizationOptions'
аргумент значения имени. Чтобы управлять графиками, установите ShowPlots
поле 'HyperparameterOptimizationOptions'
аргумент значения имени.
Пример: 'OptimizeHyperparameters','auto'
HyperparameterOptimizationOptions
— Опции для оптимизацииОпции для оптимизации в виде структуры. Этот аргумент изменяет эффект OptimizeHyperparameters
аргумент значения имени. Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Захват функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' и 'randomsearch' , и целая сетка для 'gridsearch' |
MaxTime | Ограничение по времени в виде положительного действительного скаляра. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количество значений в каждой размерности. Значение может быть вектором из положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10
|
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее наблюдаемое значение целевой функции против номера итерации. Если вы используете Байесовую оптимизацию (Optimizer 'bayesopt' ), затем это поле также строит лучшее предполагаемое значение целевой функции. Лучшие наблюдаемые значения целевой функции и лучше всего оцененные значения целевой функции соответствуют значениям в BestSoFar (observed) и BestSoFar (estim.) столбцы итеративного отображения, соответственно. Можно найти эти значения в свойствах ObjectiveMinimumTrace и EstimatedObjectiveMinimumTrace из Mdl.HyperparameterOptimizationResults . Если проблема включает один или два параметра оптимизации для Байесовой оптимизации, то ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты когда Optimizer 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменной является BayesianOptimization объект. | false |
Verbose | Отображение в командной строке:
Для получения дополнительной информации смотрите | 1
|
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Из-за невоспроизводимости синхронизации параллели, параллельная Байесова оптимизация не обязательно приводит к восстанавливаемым результатам. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если этим полем является Установка | false |
Используйте не больше, чем одну из следующих трех опций. | ||
CVPartition | cvpartition объект, как создано cvpartition | 'Kfold',5 если вы не задаете поле перекрестной проверки |
Holdout | Скаляр в области значений (0,1) представление части затяжки | |
Kfold | Целое число, больше, чем 1 |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl
— Обученная обобщенная аддитивная модельClassificationGAM
объект модели | ClassificationPartitionedGAM
перекрестный подтвержденный объект моделиОбученная обобщенная аддитивная модель, возвращенная как один из объектов модели в этой таблице.
Объект модели | Опции перекрестной проверки, чтобы обучить объект модели | Способы классифицировать наблюдения Используя объект модели |
---|---|---|
ClassificationGAM | 'none' | Использование predict классифицировать новые наблюдения и использование resubPredict классифицировать учебные наблюдения. |
ClassificationPartitionedGAM | Задайте KFold , Holdout , Leaveout , CrossVal , или CVPartition | Использование kfoldPredict классифицировать наблюдения это fitcgam протягивает во время обучения. kfoldPredict предсказывает метку класса для каждого наблюдения при помощи модели, обученной без того наблюдения. |
К ссылочным свойствам Mdl
, используйте запись через точку. Например, введите Mdl.Interactions
в Командном окне, чтобы отобразить периоды взаимодействия в Mdl
.
Обобщенная аддитивная модель (GAM) является поддающейся толкованию моделью, которая объясняет баллы класса (логит вероятностей класса) использование суммы одномерных и двумерных функций формы предикторов.
fitcgam
использует повышенное дерево в качестве функции формы для каждого предиктора и, опционально, каждой пары предикторов; поэтому, функция может получить нелинейное отношение между предиктором и переменной отклика. Поскольку вклады отдельных функций формы к предсказанию (классификационная оценка) хорошо разделяются, модель легко интерпретировать.
Стандартный GAM использует одномерную функцию формы для каждого предиктора.
где y является переменной отклика, которая следует за биномиальным распределением с вероятностью успеха (вероятность положительного класса) μ в наблюдениях n. g (μ) является функцией ссылки логита, и c является точкой пересечения (постоянный) термин. fi (xi) является одномерной функцией формы для i th предиктор, который является повышенным деревом для линейного члена для предиктора (дерево предиктора).
Можно включать взаимодействия между предикторами в модели путем добавления двумерных функций формы важных периодов взаимодействия к модели.
где fij (xi xj) является двумерной функцией формы для i th и j th предикторы, который является повышенным деревом в течение периода взаимодействия для предикторов (дерево взаимодействия).
fitcgam
находит важные периоды взаимодействия на основе p - значения F - тесты. Для получения дополнительной информации смотрите Обнаружение Периода взаимодействия.
Отклонение является обобщением остаточной суммы квадратов. Это измеряет качество подгонки по сравнению с влажной моделью.
Отклонение подобранной модели является дважды различием между логарифмической правдоподобностью модели и влажной модели:
- 2 (logL - logLs),
где L и Ls являются вероятностями подобранной модели и влажной модели, соответственно. Влажная модель является моделью с максимальным количеством параметров, которые можно оценить.
fitcgam
использует отклонение, чтобы измерить совершенство подгонки модели и находит скорость обучения, которая уменьшает отклонение в каждой итерации. Задайте 'Verbose'
как 1 или 2, чтобы отобразить отклонение и скорость обучения в Командном окне.
fitcgam
подбирает обобщенную аддитивную модель с помощью алгоритма повышения градиента (Адаптивная Логистическая регрессия).
fitcgam
первые наборы сборок деревьев предиктора (повышенные деревья для линейных членов для предикторов) и затем создают наборы деревьев взаимодействия (повышенные деревья в течение многих периодов взаимодействия для предикторов). Повышающий алгоритм выполняет итерации для в большей части 'NumTreesPerPredictor'
времена для деревьев предиктора, и затем выполняют итерации для в большей части 'NumTreesPerInteraction'
времена для деревьев взаимодействия.
Для каждой повышающей итерации, fitcgam
создает набор деревьев предиктора с начальной скоростью обучения 'InitialLearnRateForPredictors'
, или создает набор деревьев взаимодействия с начальной скоростью обучения 'InitialLearnRateForInteractions'
.
При создании набора деревьев функция обучает одно дерево за один раз. Это соответствует дереву к невязке, которая является различием между ответом и агрегированным предсказанием от всех деревьев, выращенных ранее. Чтобы контролировать скорость изучения повышения, функция уменьшает дерево скоростью обучения и затем добавляет дерево в модель и обновляет невязку.
Обновленная модель = текущая модель + (скорость обучения) · (новое дерево)
Обновленная невязка = текущая невязка – (скорость обучения) · (ответ, объясненный новым деревом)
Если добавление набора деревьев улучшает подгонку модели (то есть, уменьшает отклонение подгонки значением, больше, чем допуск), затем fitcgam
перемещения к следующей итерации.
В противном случае, fitcgam
половины скорость обучения и использование это, чтобы обновить модель и невязку. Функция продолжает делить на два скорость обучения, пока это не находит уровень, который улучшает подгонку модели.
Если функция не может найти такую скорость обучения, когда учебные деревья предиктора, то это прекращает повышать итерации для линейных членов и начинает повышать итерации в течение многих периодов взаимодействия.
Если функция не может найти такую скорость обучения, когда учебные деревья взаимодействия, то это отключает подбор кривой модели.
Можно определить, почему обучение зашло в проверку ReasonForTermination
свойство обученной модели.
В течение каждого попарного периода взаимодействия xi xj (заданный formula
или 'Interactions'
), программное обеспечение выполняет F - тест, чтобы исследовать, является ли термин статистически значительным.
Ускорять процесс, fitcgam
интервалы числовые предикторы в самое большее 8 равновероятных интервалов. Количество интервалов может быть меньше 8, если предиктор имеет меньше чем 8 уникальных значений. F - тест исследует нулевую гипотезу, что интервалы, созданные xi и xj, имеют равные ответы по сравнению с альтернативой в наименьшем количестве одного интервала, имеет различное значение отклика от других. Маленький p - значение указывает, что различия являются значительными, который подразумевает, что соответствующий период взаимодействия является значительным и, поэтому, включая термин может улучшить подгонку модели.
fitcgam
создает набор деревьев взаимодействия, использующих термины, p которых - значения не больше 'MaxPValue'
значение. Можно использовать 'MaxPValue'
по умолчанию значение
1
создавать деревья взаимодействия, использующие все термины, заданные formula
или 'Interactions'
.
fitcgam
добавляют периоды взаимодействия к модели в порядке важности на основе p - значения. Используйте Interactions
свойство возвращенной модели проверять порядок периодов взаимодействия, добавленных к модели.
[1] Лу, Инь, Рич Каруана и Джоханнс Джехрк. "Понятные Модели для Классификации и Регрессии". Продолжения 18-й Международной конференции ACM SIGKDD по вопросам Открытия Знаний и Анализа данных (KDD ’12). Пекин, Китай: Нажатие ACM, 2012, стр 150–158.
[2] Лу, Инь, Рич Каруана, Джоханнс Джехрк и Джайлс Хукер. "Точные Понятные Модели с Попарными Взаимодействиями". Продолжения 19-й Международной конференции ACM SIGKDD по вопросам Открытия Знаний и Анализа данных (KDD ’13) Чикаго, Иллинойс, США: Нажатие ACM, 2013, стр 623–631.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true)
аргумент значения имени в вызове fitcgam
функция.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для получения общей информации о параллельных вычислениях, смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
predict
| addInteractions
| resume
| ClassificationGAM
| ClassificationPartitionedGAM
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.