Используя различные методы, можно объединить результаты многих слабых учеников в один высококачественный предиктор ансамбля. Эти методы сопровождают тот же синтаксис, таким образом, можно попробовать различные методы незначительными изменениями в командах.
Можно создать ансамбль для классификации при помощи fitcensemble
или для регрессии при помощи fitrensemble
.
Обучать ансамбль классификации с помощью fitcensemble
, используйте этот синтаксис.
ens = fitcensemble(X,Y,Name,Value)
X
матрица данных. Каждая строка содержит одно наблюдение, и каждый столбец содержит один переменный предиктор.
Y
вектор ответов, с тем же количеством наблюдений как строки в X
.
Name,Value
задайте дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, можно задать метод агрегации ансамбля с 'Method'
аргумент, количество ансамбля, изучающего циклы с 'NumLearningCycles'
аргумент и тип слабых учеников с 'Learners'
аргумент. Для полного списка аргументов пары "имя-значение" смотрите fitcensemble
функциональная страница.
Этот рисунок показывает информацию, необходимо создать ансамбль классификации.
Точно так же можно обучить ансамбль регрессии при помощи fitrensemble
, который следует за тем же синтаксисом как fitcensemble
. Для получения дополнительной информации на входных параметрах и аргументах пары "имя-значение", смотрите fitrensemble
функциональная страница.
Для всей классификации или нелинейных проблем регрессии, выполните эти шаги, чтобы создать ансамбль:
Все контролируемые методы изучения запускаются с данных о предикторе, обычно называемого X
в этой документации. X
может храниться в матрице или таблице. Каждая строка X
представляет одно наблюдение и каждый столбец X
представляет одну переменную или предиктор.
Можно использовать большое разнообразие типов данных для данных об ответе.
Для ансамблей регрессии, Y
должен быть числовой вектор с тем же числом элементов как количество строк X
.
Для ансамблей классификации, Y
может быть числовой вектор, категориальный вектор, символьный массив, массив строк, массив ячеек из символьных векторов или логический вектор.
Например, предположите, что ваши данные об ответе состоят из трех наблюдений в следующем порядке: true
ложь
TRUE
. Вы могли выразить Y
как:
[1;0;1] (числовой вектор)
categorical({'true','false','true'})
(категориальный вектор)
[true;false;true]
(логический вектор)
['true ';'false';'true ']
(символьный массив, дополненный пробелами так каждая строка, имеет ту же длину),
["true","false","true"]
Массив строк
{'true','false','true'}
Массив ячеек из символьных векторов
Используйте, какой бы ни тип данных является самым удобным. Поскольку вы не можете представлять отсутствующие значения с логическими записями, не используйте логические записи, когда у вас есть отсутствующие значения в Y
.
fitcensemble
и fitrensemble
проигнорируйте отсутствующие значения в Y
при создании ансамбля. Эта таблица содержит метод включения недостающих записей.
Тип данных | Пропавшие без вести записи |
---|---|
Числовой вектор | NaN |
Категориальный вектор | <undefined> |
Массив символов | Строка пробелов |
Массив строк | <missing> или "" |
Массив ячеек из символьных векторов | '' |
Логический вектор | (не возможный представлять) |
Создать классификацию и ансамбли регрессии с fitcensemble
и fitrensemble
, соответственно, выберите соответствующие алгоритмы из этого списка.
Для классификации с двумя классами:
'AdaBoostM1'
'LogitBoost'
'GentleBoost'
'RobustBoost'
(требует Optimization Toolbox™),
'LPBoost'
(требует Optimization Toolbox),
'TotalBoost'
(требует Optimization Toolbox),
'RUSBoost'
'Subspace'
'Bag'
Для классификации с тремя или больше классами:
'AdaBoostM2'
'LPBoost'
(требует Optimization Toolbox),
'TotalBoost'
(требует Optimization Toolbox),
'RUSBoost'
'Subspace'
'Bag'
Для регрессии:
'LSBoost'
'Bag'
Для описаний различных алгоритмов см. Алгоритмы Ансамбля.
Смотрите предложения для выбора соответствующего алгоритма ансамбля.
Эта таблица приводит характеристики различных алгоритмов. В табличных заголовках:
Неустойчивость — Хороший для неустойчивых данных (один класс имеет намного больше наблюдений, чем другой),
Остановитесь — Алгоритм самозавершает работу
Разреженный — Требует меньшего количества слабых учеников, чем другие алгоритмы ансамбля
Алгоритм | Регрессия | Бинарная классификация | Классификация мультиклассов | Неустойчивость класса | Остановка | Разреженный |
---|---|---|---|---|---|---|
Bag | × | × | × | |||
AdaBoostM1 | × | |||||
AdaBoostM2 | × | |||||
LogitBoost | × | |||||
GentleBoost | × | |||||
RobustBoost | × | |||||
LPBoost | × | × | × | × | ||
TotalBoost | × | × | × | × | ||
RUSBoost | × | × | × | |||
LSBoost | × | |||||
Subspace | × | × |
RobustBoost
, LPBoost
, и TotalBoost
потребуйте лицензии Optimization Toolbox. Попробуйте TotalBoost
перед LPBoost
, как TotalBoost
может быть более устойчивым.
Регрессия — Вашим выбором является LSBoost
или Bag
. Смотрите Общие характеристики Алгоритмов Ансамбля для основных отличий между повышением и укладыванием в мешки.
Бинарная классификация — пробует AdaBoostM1
во-первых, с этими модификациями:
Характеристика данных | Рекомендуемый алгоритм |
---|---|
Много предикторов | Subspace |
Скошенные данные (намного больше наблюдений за одним классом) | RUSBoost |
Пометьте шум (некоторые обучающие данные имеет неправильный класс), | RobustBoost |
Много наблюдений | Избегайте LPBoost и TotalBoost |
Классификация мультиклассов — пробует AdaBoostM2
во-первых, с этими модификациями:
Характеристика данных | Рекомендуемый алгоритм |
---|---|
Много предикторов | Subspace |
Скошенные данные (намного больше наблюдений за одним классом) | RUSBoost |
Много наблюдений | Избегайте LPBoost и TotalBoost |
Для получения дополнительной информации алгоритмов, см. Алгоритмы Ансамбля.
Boost
алгоритмы обычно используют очень мелкие деревья. Эта конструкция использует относительно мало времени или памяти. Однако для эффективных предсказаний, повышенным деревьям может быть нужно больше членов ансамбля, чем сложенные в мешок деревья. Поэтому это не всегда ясно, какой класс алгоритмов выше.
Bag
обычно построения глубокие деревья. Эта конструкция является и трудоемкой и интенсивно использующей память. Это также приводит к относительно медленным предсказаниям.
Bag
может оценить ошибку обобщения без дополнительной перекрестной проверки. Смотрите oobLoss
.
За исключением Subspace
, все повышение и укладывание в мешки алгоритмов основаны на учениках дерева решений. Subspace
может использовать или дискриминантный анализ или учеников k - ближайших соседей.
Для получения дополнительной информации характеристик отдельных членов ансамбля, смотрите Характеристики Алгоритмов Классификации.
Выбор размера ансамбля включает балансирующуюся скорость и точность.
Более многочисленные ансамбли занимают больше времени, чтобы обучить и сгенерировать предсказания.
Некоторые алгоритмы ансамбля могут стать перетренированными (неточный), когда слишком большой.
Чтобы установить соответствующий размер, рассмотрите начиная с нескольких дюжин нескольким сотням членов в ансамбле, обучение ансамбль и затем проверка качества ансамбля, как в Тестовом Качестве Ансамбля. Если кажется, что вам нужно больше членов, добавьте их использующий resume
метод (классификация) или resume
метод (регрессия). Повторитесь до добавления, что больше членов не улучшает качество ансамбля.
Для классификации, LPBoost
и TotalBoost
алгоритмы самозавершают работу, означая, что вы не должны исследовать соответствующий размер ансамбля. Попробуйте установку NumLearningCycles
к 500
. Алгоритмы обычно завершают работу с меньшим количеством членов.
В настоящее время слабые типы ученика:
'Discriminant'
(рекомендуемый для Subspace
ансамбль)
'KNN'
(только для Subspace
ансамбль)
'Tree'
(для любого ансамбля кроме Subspace
)
Существует два способа установить слабый тип ученика в ансамбле.
Чтобы создать ансамбль со слабыми опциями ученика по умолчанию, задайте значение 'Learners'
аргумент пары "имя-значение" как вектор символов или строковый скаляр слабого имени ученика. Например:
ens = fitcensemble(X,Y,'Method','Subspace', ... 'NumLearningCycles',50,'Learners','KNN'); % or ens = fitrensemble(X,Y,'Method','Bag', ... 'NumLearningCycles',50,'Learners','Tree');
Чтобы создать ансамбль со слабыми опциями ученика не по умолчанию, создайте слабого ученика не по умолчанию, использующего соответствующий template
метод.
Например, если вы имеете недостающие данные и хотите использовать деревья классификации с суррогатными разделениями для лучшей точности:
templ = templateTree('Surrogate','all'); ens = fitcensemble(X,Y,'Method','AdaBoostM2', ... 'NumLearningCycles',50,'Learners',templ);
Чтобы вырастить деревья с листами, содержащими много наблюдений, который составляет по крайней мере 10% объема выборки:
templ = templateTree('MinLeafSize',size(X,1)/10); ens = fitcensemble(X,Y,'Method','AdaBoostM2', ... 'NumLearningCycles',50,'Learners',templ);
В качестве альтернативы выберите максимальное количество разделений на дерево:
templ = templateTree('MaxNumSplits',4); ens = fitcensemble(X,Y,'Method','AdaBoostM2', ... 'NumLearningCycles',50,'Learners',templ);
Можно также использовать слабых учеников не по умолчанию в fitrensemble
.
В то время как можно дать fitcensemble
и fitrensemble
массив ячеек шаблонов ученика, наиболее распространенное использование должно дать всего один слабый шаблон ученика.
Для примеров с помощью шаблона смотрите, Обрабатывают Неустойчивые Данные или Неравные Затраты Misclassification в Ансамблях Классификации и Суррогатных Разделениях.
Деревья решений могут обработать NaN
значения в X
. Такие значения называются, “отсутствуя”. Если у вас есть некоторые отсутствующие значения подряд X
, дерево решений находит оптимальное использование разделений ненедостающими значениями только. Если целая строка состоит из NaN
, fitcensemble
и fitrensemble
проигнорируйте ту строку. Если у вас есть данные с большой частью отсутствующих значений в X
, используйте суррогатные разделения решения. Для примеров суррогатных разделений смотрите, Обрабатывают Неустойчивые Данные или Неравные Затраты Misclassification в Ансамблях Классификации и Суррогатных Разделениях.
Глубина слабого дерева ученика имеет значение в течение учебного времени, использования памяти и прогнозирующей точности. Вы управляете глубиной эти параметры:
MaxNumSplits
— Максимальным количеством разделений узла ветви является MaxNumSplits
на дерево. Установите большие значения MaxNumSplits
получить глубокие деревья. Значением по умолчанию для укладывания в мешки является size(X,1) - 1
. Значением по умолчанию для повышения является 1
.
MinLeafSize
— Каждый лист имеет, по крайней мере, MinLeafSize
наблюдения. Установите маленькие значения MinLeafSize
получить глубокие деревья. Значением по умолчанию для классификации является 1
и 5
для регрессии.
MinParentSize
— Каждый узел ветви в дереве имеет, по крайней мере, MinParentSize
наблюдения. Установите маленькие значения MinParentSize
получить глубокие деревья. Значением по умолчанию для классификации является 2
и 10
для регрессии.
Если вы предоставляете оба MinParentSize
и MinLeafSize
, ученик использует установку, которая дает большие листы (более мелкие деревья):
MinParent = max(MinParent,2*MinLeaf)
Если вы дополнительно предоставляете MaxNumSplits
, затем программное обеспечение разделяет дерево, пока одному из трех разделяющих критериев не удовлетворяют.
Surrogate
— Вырастите деревья решений с суррогатными разделениями когда Surrogate
'on'
. Используйте суррогатные разделения, когда ваши данные будут иметь отсутствующие значения.
Суррогатные разделения вызывают более медленное обучение и используют больше памяти.
PredictorSelection
— fitcensemble
, fitrensemble
, и TreeBagger
вырастите деревья с помощью стандартного алгоритма CART [11] по умолчанию. Если переменные предикторы неоднородны или существуют предикторы, имеющие много уровней и другое наличие немногих уровней, то стандартный CART имеет тенденцию выбирать предикторы, имеющие много уровней как предикторы разделения. Для выбора предиктора разделения, который устойчив к количеству уровней, которые имеют предикторы, считайте определение 'curvature'
или 'interaction-curvature'
. Эти технические требования проводят тесты хи-квадрата ассоциации между каждым предиктором и ответом или каждой парой предикторов и ответом, соответственно. Предиктор, который дает к минимальному p - значение, является предиктором разделения для конкретного узла. Для получения дополнительной информации смотрите, Выбирают Split Predictor Selection Technique.
Когда повышение деревьев решений, выбор предикторов разделения с помощью искривления или тестов взаимодействия не рекомендуются.
fitcensemble
или fitrensemble
Синтаксисы для fitcensemble
и fitrensemble
идентичны. Для fitrensemble
, синтаксис:
ens = fitrensemble(X,Y,Name,Value)
X
матрица данных. Каждая строка содержит одно наблюдение, и каждый столбец содержит один переменный предиктор.
Y
ответы, с тем же количеством наблюдений как строки в X
.
Name,Value
задайте дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, можно задать метод агрегации ансамбля с 'Method'
аргумент, количество ансамбля, изучающего циклы с 'NumLearningCycles'
аргумент и тип слабых учеников с 'Learners'
аргумент. Для полного списка аргументов пары "имя-значение" смотрите fitrensemble
функциональная страница.
Результат fitrensemble
и fitcensemble
объект ансамбля, подходящий для того, чтобы сделать предсказания на новых данных. Для основного примера создания ансамбля регрессии смотрите, Обучают Ансамбль Регрессии. Для основного примера создания ансамбля классификации смотрите, Обучают Ансамбль Классификации.
Существует несколько пар "имя-значение", которые можно передать fitcensemble
или fitrensemble
, и несколько, которые применяются к слабым ученикам (templateDiscriminant
, templateKNN
, и templateTree
). Чтобы определить, какой аргумент пары "имя-значение" является соответствующим, ансамбль или слабый ученик:
Используйте пары "имя-значение" шаблона, чтобы управлять характеристиками слабых учеников.
Используйте fitcensemble
или fitrensemble
аргументы пары "имя-значение", чтобы управлять ансамблем в целом, или для алгоритмов или для структуры.
Например, для ансамбля повышенных деревьев классификации с каждым деревом глубже, чем значение по умолчанию, устанавливает templateTree
аргументы пары "имя-значение" MinLeafSize
и MinParentSize
к меньшим значениям, чем значения по умолчанию. Или, MaxNumSplits
к большему значению, чем значения по умолчанию. Деревья являются затем более покрытыми листвой (глубже).
Чтобы назвать предикторы в ансамбле классификации (часть структуры ансамбля), используйте PredictorNames
пара "имя-значение" в fitcensemble
.
fitcensemble
| fitrensemble
| oobLoss
| resume
| resume
| templateDiscriminant
| templateKNN
| templateTree