Ансамбль, изучающий шаблон
t = templateEnsemble(Method,NLearn,Learners)
t = templateEnsemble(Method,NLearn,Learners,Name,Value)
возвращает шаблон приобретения знаний ансамблем, который задает, чтобы использовать метод агрегации ансамбля 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'
и:
Стоимость misclassification является очень неустойчивой, затем, для выборок в сумке, программное обеспечение сверхдискретизировало уникальные наблюдения от класса, который имеет большой штраф.
Априорные вероятности класса высоко скашиваются, программное обеспечение сверхдискретизировало уникальные наблюдения от класса, который имеет большую априорную вероятность.
Для меньших объемов выборки эти комбинации могут привести к очень низкой относительной частоте наблюдений из сумки от класса, который имеет большой штраф или априорную вероятность. Следовательно, предполагаемая ошибка из сумки является очень переменной, и может быть трудно интерпретировать. Чтобы избежать больших предполагаемых ошибочных отклонений из сумки, особенно для размеров небольшой выборки, устанавливают более сбалансированную матрицу стоимости misclassification использование аргумента пары "имя-значение" 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
, чтобы быть деревьями решений, то программное обеспечение выращивает stumps по умолчанию. Пень решения является одним корневым узлом, соединенным с двумя терминалами, вершинами. Можно настроить древовидную глубину путем определения MaxNumSplits
, MinLeafSize
и аргументов пары "имя-значение" MinParentSize
с помощью templateTree
.
Программное обеспечение генерирует выборки в сумке путем сверхдискретизации классов с большими затратами misclassification и субдискретизации классов с маленькими затратами misclassification. Следовательно, выборки из сумки имеют меньше наблюдений от классов с большими затратами misclassification и больше наблюдений от классов с маленькими затратами misclassification. Если вы обучаете ансамбль классификации, использующий небольшой набор данных и очень скошенную матрицу стоимости, то количество наблюдений из сумки в классе может быть очень низким. Поэтому предполагаемая ошибка из сумки может иметь большое отклонение и может быть трудной интерпретировать. То же явление может произойти для классов с большими априорными вероятностями.
Для метода агрегации ансамбля 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® Threading Building Blocks (TBB). Для получения дополнительной информации на Intel TBB, см. https://software.intel.com/en-us/intel-tbb.
ClassificationECOC
| ClassificationEnsemble
| fitcecoc
| fitcensemble
| fitrensemble
| templateDiscriminant
| templateKNN
| templateTree