exponenta event banner

Рамки обучения ансамблю

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

Можно создать ансамбль для классификации с помощью 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, false, 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' (требуется оптимизация Toolbox™)

    • 'LPBoost' (требуется панель инструментов оптимизации)

    • 'TotalBoost' (требуется панель инструментов оптимизации)

    • 'RUSBoost'

    • 'Subspace'

    • 'Bag'

  • Для классификации с тремя или более классами:

    • 'AdaBoostM2'

    • 'LPBoost' (требуется панель инструментов оптимизации)

    • 'TotalBoost' (требуется панель инструментов оптимизации)

    • 'RUSBoost'

    • 'Subspace'

    • 'Bag'

  • Для регрессии:

    • 'LSBoost'

    • 'Bag'

Описание различных алгоритмов см. в разделе Алгоритмы ансамбля.

См. раздел Рекомендации по выбору соответствующего алгоритма ансамбля.

В этой таблице перечислены характеристики различных алгоритмов. В названиях таблиц:

  • Дисбаланс - хорошо для несбалансированных данных (один класс имеет гораздо больше наблюдений, чем другой)

  • Stop - алгоритм самоустанавливается

  • Разреженный - требует меньше слабых учеников, чем другие алгоритмы ансамбля

АлгоритмРегрессДвоичная классификацияМультиклассовая классификацияДисбаланс классовСтопРедкий
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-ближайших соседних учеников.

Подробные сведения о характеристиках отдельных участников ансамбля см. в разделе Характеристики алгоритмов классификации.

Установка количества участников ансамбля

Выбор размера ансамбля предполагает балансировку скорости и точности.

  • Более крупным ансамблям требуется больше времени, чтобы тренироваться и генерировать прогнозы.

  • Некоторые алгоритмы ансамбля могут стать перетренированными (неточными) при слишком большом размере.

Чтобы установить соответствующий размер, рассмотрите возможность начала с нескольких десятков до нескольких сотен участников в ансамбле, обучения ансамбля, а затем проверки качества ансамбля, как в Test Ensemble Quality. Если вам нужно больше участников, добавьте их с помощью 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 массив ячеек шаблонов учащегося, наиболее распространенным использованием является предоставление только одного слабого шаблона учащегося.

Примеры использования шаблона см. в разделе Обработка несбалансированных данных или неравных затрат на неправильную классификацию в коллекциях классификации и суррогатных разделениях.

Деревья принятия решений могут обрабатывать NaN значения в X. Такие значения называются «отсутствующими». Если в строке отсутствуют значения X, дерево решений находит оптимальные разделения, используя только неупорядоченные значения. Если вся строка состоит из NaN, fitcensemble и fitrensemble игнорировать эту строку. При наличии данных с большой долей отсутствующих значений в X, используйте разделители суррогатных решений. Примеры суррогатных разбиений см. в разделе Обработка несбалансированных данных или неравных затрат на неправильную классификацию в классификационных коллекциях и суррогатных разбиениях.

Общие настройки для слабых учащихся дерева

  • Глубина слабого дерева учащихся влияет на время обучения, использование памяти и точность прогнозирования. Вы контролируете глубину этих параметров:

    • 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, является раздельным предиктором для конкретного узла. Дополнительные сведения см. в разделе Выбор метода выбора разделенного предиктора.

    Примечание

    При усилении деревьев принятия решений выбор разделенных предикторов с использованием тестов кривизны или взаимодействия не рекомендуется.

Звонить 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.

См. также

| | | | | | |

Связанные темы