Шаблон обучения ансамбля
возвращает шаблон обучения ансамбля, который задает использование метода агрегации ансамбля t
= templateEnsemble(Method
,NLearn
,Learners
)Method
, NLearn
циклы обучения и слабые учащиеся Learners
.
Все другие опции шаблона (t
) характерные для обучения ансамбля появляются пустыми, но программное обеспечение использует их соответствующие значения по умолчанию во время обучения.
возвращает шаблон ансамбля с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".t
= templateEnsemble(Method
,NLearn
,Learners
,Name,Value
)
Для примера можно задать количество предикторов в каждом случайном подпространстве учащегося, скорости обучения для усадки или целевую ошибку классификации для RobustBoost
.
Если вы отображаете t
в Командном окне, затем все опции появляются пустыми ([]
), кроме тех опций, которые вы задаете используя аргументы пары "имя-значение". Во время обучения программа использует значения по умолчанию для пустых опций.
NLearn
может варьироваться от нескольких десятков до нескольких тысяч. Обычно ансамбль с хорошей прогностической степенью требует от нескольких сотен до нескольких тысяч слабых учащихся. Однако вам не придется обучать ансамбль для того, чтобы было сразу много циклов. Можно начать с того, что вырастить несколько десятков учащихся, осмотреть эффективность ансамбля и затем, при необходимости, обучить более слабых учащихся, используя resume
для задач классификации, или resume
для регрессионных задач.
Эффективность ансамбля зависит от обстановки ансамбля и настройки слабых учащихся. То есть, если вы задаете слабых учащихся с параметрами по умолчанию, то ансамбль может выполнять. Поэтому, как и настройки ансамбля, рекомендуется настроить параметры слабых учащихся с помощью шаблонов и выбрать значения, которые минимизируют ошибку обобщения.
Если вы задаете, чтобы выполнить повторную выборку с помощью Resample
, тогда это хорошая практика, чтобы переопределить на целом наборе данных. То есть используйте настройку по умолчанию 1
для FResample
.
В задачах классификации (то есть Type
является 'classification'
):
Если метод агрегации ансамбля (Method
) 'bag'
и:
Затраты на неправильную классификацию сильно несбалансированны, тогда для выборок в мешке программное обеспечение переизбирает уникальные наблюдения от класса, который имеет большой штраф.
Классовые априорные вероятности сильно искажены, программное обеспечение переизбирает уникальные наблюдения из класса, который имеет большую априорную вероятность.
Для небольших размеров выборки эти комбинации могут привести к очень низкой относительной частоте наблюдений вне мешка от класса, который имеет большую штраф или предшествующую вероятность. Следовательно, предполагаемая ошибка вне сумки является сильно переменной, и ее может быть трудно интерпретировать. Чтобы избежать больших предполагаемых отклонений ошибок вне сумки, особенно для небольших размеров выборки, установите более сбалансированную матрицу затрат на неправильную классификацию, используя Cost
Аргумент пары "имя-значение" функции аппроксимации или менее искаженный предыдущий вектор вероятностей с использованием Prior
Аргумент пары "имя-значение" функции аппроксимации.
Поскольку порядок некоторых входных и выходных аргументов соответствует отдельным классам в обучающих данных, рекомендуется задать порядок классов, используя ClassNames
Аргумент пары "имя-значение" функции аппроксимации.
Чтобы быстро определить порядок классов, удалите все наблюдения из обучающих данных, которые не классифицированы (то есть имеют отсутствующую метку), получите и отобразите массив всех различных классов, а затем укажите массив для ClassNames
. Для примера предположим, что переменная отклика (Y
) - массив ячеек с метками. Этот код задает порядок классов в переменной classNames
.
Ycat = categorical(Y); classNames = categories(Ycat)
categorical
присваивает <undefined>
к неклассифицированным наблюдениям и categories
исключает <undefined>
с его выхода. Поэтому, если вы используете этот код для массивов ячеек меток или аналогичный код для категориальных массивов, то вы не должны удалять наблюдения с отсутствующими метками, чтобы получить список различных классов.Чтобы указать, что порядок должен быть от самой низкой представленной метки до самой представленной, затем быстро определите порядок классов (как в предыдущей пуле), но расположите классы в списке по частоте перед передачей списка в ClassNames
. Следующий из предыдущего примера, этот код задает порядок классов от lowest- до наиболее представленных в classNamesLH
.
Ycat = categorical(Y); classNames = categories(Ycat); freq = countcats(Ycat); [~,idx] = sort(freq); classNamesLH = classNames(idx);
Для получения дополнительной информации об алгоритмах агрегации ансамблей смотрите Ensemble Algorithms.
Если вы задаете Method
быть алгоритмом и Learners
ускорения чтобы быть деревьями решений, программное обеспечение растет stumps по умолчанию. Пень принятия решения является одним корневым узлом, соединенным с двумя терминальными, листовыми узлами. Можно настроить глубину дерева, задав
MaxNumSplits
, MinLeafSize
, и MinParentSize
Аргументы пары "имя-значение" с использованием templateTree
.
Программное обеспечение генерирует выборки в мешке путем избыточной дискретизации классов с большими расходами на неправильную классификацию и классов недостаточной дискретизации с небольшими затратами на неправильную классификацию. Следовательно, выборки вне мешка имеют меньше наблюдений от классов с большими расходами на неправильную классификацию и больше наблюдений от классов с небольшими затратами на неправильную классификацию. Если вы обучаете классификационный ансамбль с помощью небольшого набора данных и сильно искаженной матрицы затрат, то количество наблюдений вне мешка на класс может быть очень низким. Поэтому предполагаемая ошибка вне сумки может иметь большое отклонение и может оказаться трудным для интерпретации. То же явление может произойти и для классов с большими априорными вероятностями.
Для метода агрегации ансамбля RUSBoost (Method
), аргумент пары "имя-значение" RatioToSmallest
задает пропорцию дискретизации для каждого класса относительно самого низкопредставленного класса. Например, предположим, что в обучающих данных 2 класса, A и B. A имеют 100 наблюдений и B имеют 10 наблюдений. Кроме того, предположим, что самый низкий представленный класс имеет m
наблюдения в обучающих данных.
Если вы задаете 'RatioToSmallest',2
, затем
= s
* m
2*10
= 20
. Следовательно, программное обеспечение обучает каждого учащегося, используя 20 наблюдений из класса A и 20 наблюдений из класса B. Если вы задаете 'RatioToSmallest',[2 2]
, тогда вы получите тот же результат.
Если вы задаете 'RatioToSmallest',[2,1]
, затем
= s1
* m
2*10
= 20
и
= s2
* m
1*10
= 10
. Следовательно, программное обеспечение обучает каждого учащегося, используя 20 наблюдений из класса A и 10 наблюдений из класса B.
Для ансамблей деревьев решений, и для двухъядерных систем и выше, fitcensemble
и fitrensemble
параллелизируйте обучение с помощью Intel® Многопоточные базовые блоки (TBB). Для получения дополнительной информации о Intel TBB смотрите https://software.intel.com/en-us/intel-tbb.
ClassificationECOC
| ClassificationEnsemble
| fitcecoc
| fitcensemble
| fitrensemble
| templateDiscriminant
| templateKNN
| templateTree