Шаблон обучения ансамбля
возвращает шаблон обучения ансамблю, который определяет использование метода агрегации ансамблей 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. Следуя предыдущему примеру, этот код определяет порядок классов от нижнего до наиболее представленного в classNamesLH.
Ycat = categorical(Y); classNames = categories(Ycat); freq = countcats(Ycat); [~,idx] = sort(freq); classNamesLH = classNames(idx);
Подробные сведения о алгоритмах агрегации ансамбля см. в разделе Алгоритмы ансамбля.
При указании Method быть алгоритмом повышения и Learners чтобы быть деревьями принятия решений, программное обеспечение по умолчанию растет. Stump принятия решения - это один корневой узел, соединенный с двумя конечными, конечными узлами. Можно скорректировать глубину дерева, указав MaxNumSplits, MinLeafSize, и MinParentSize аргументы пары имя-значение с использованием templateTree.
Программное обеспечение генерирует образцы в мешке путем избыточной выборки классов с большими затратами на неправильную классификацию и недостаточной выборки классов с небольшими затратами на неправильную классификацию. Следовательно, образцы вне мешка имеют меньше наблюдений из классов с большими затратами на неправильную классификацию и больше наблюдений из классов с небольшими затратами на неправильную классификацию. Если вы обучаете классификационный ансамбль, используя небольшой набор данных и сильно искаженную матрицу затрат, то количество наблюдений вне пакета на класс может быть очень низким. Следовательно, предполагаемая ошибка вне пакета может иметь большую дисперсию и может быть трудно интерпретировать. Такое же явление может иметь место для классов с большими предшествующими вероятностями.
Для метода агрегации ансамблей RUSBoost (Method), аргумент пары имя-значение RatioToSmallest задает пропорцию выборки для каждого класса по отношению к самому низко представленному классу. Например, предположим, что в данных обучения есть 2 класса, А и В А имеют 100 наблюдений и В имеют 10 наблюдений. Кроме того, предположим, что класс с самым низким представлением имеет m наблюдения в данных обучения.
Если установить 'RatioToSmallest',2, то = s*m2*10 = 20. Следовательно, программа обучает каждого учащегося, используя 20 наблюдений из класса A и 20 наблюдений из класса B. Если установить 'RatioToSmallest',[2 2], то вы получите тот же результат.
Если установить 'RatioToSmallest',[2,1], то = s1*m2*10 = 20 и = s2*m1*10 = 10. Следовательно, программное обеспечение обучает каждого учащегося, используя 20 наблюдений из класса А и 10 наблюдений из класса В.
Для ансамблей деревьев принятия решений, двухъядерных систем и выше, fitcensemble и fitrensemble параллельное обучение с использованием стандартных блоков Intel ® Threading Building Blocks (TBB). Подробные сведения о TBB Intel см. в разделе https://software.intel.com/en-us/intel-tbb.
ClassificationECOC | ClassificationEnsemble | fitcecoc | fitcensemble | fitrensemble | templateDiscriminant | templateKNN | templateTree