Среда для приобретения знаний ансамблем

Используя различные методы, можно объединить результаты многих слабых учеников в один высококачественный предиктор ансамбля. Эти методы сопровождают тот же синтаксис, таким образом, можно попробовать различные методы незначительными изменениями в командах.

Можно создать ансамбль для классификации при помощи 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'. Используйте суррогатные разделения, когда ваши данные будут иметь отсутствующие значения.

    Примечание

    Суррогатные разделения вызывают более медленное обучение и используют больше памяти.

  • PredictorSelectionfitcensemble, 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.

Смотрите также

| | | | | | |

Похожие темы