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

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

Можно создать ансамбль для классификации при помощи 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>
Массив символовСтрока пробелов
StringArray<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-nearest.

Для получения дополнительной информации характеристик отдельных членов ансамбля, смотрите Характеристики Алгоритмов Классификации.

Определите номер членов ансамбля

Выбор размера ансамбля включает балансирующуюся скорость и точность.

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

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

Чтобы установить соответствующий размер, рассмотрите начиная с нескольких дюжин нескольким сотням участников в ансамбле, обучение ансамбль и затем проверка качества ансамбля, как в Тестовом Качестве Ансамбля. Если кажется, что вам нужно больше участников, добавьте их использующий метод 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 является объект ансамбля, подходящий для того, чтобы сделать прогнозы на новых данных. Для основного примера создания ансамбля регрессии смотрите Ансамбль Регрессии Train. Для основного примера создания ансамбля классификации смотрите Ансамбль Классификации Train.

Где установить пары "имя-значение"

Существует несколько пар "имя-значение", которые можно передать fitcensemble или fitrensemble и нескольким, которые применяются к слабым ученикам (templateDiscriminant, templateKNN и templateTree). Чтобы определить, какой аргумент пары "имя-значение" является соответствующим, ансамбль или слабый ученик:

  • Используйте пары "имя-значение" шаблона, чтобы управлять характеристиками слабых учеников.

  • Используйте аргументы пары "имя-значение" fitcensemble или fitrensemble, чтобы управлять ансамблем в целом, или для алгоритмов или для структуры.

Например, для ансамбля повышенных деревьев классификации с каждым деревом глубже, чем значение по умолчанию, устанавливает аргументы пары "имя-значение" templateTree MinLeafSize и MinParentSize к меньшим значениям, чем значения по умолчанию. Или, MaxNumSplits к большему значению, чем значения по умолчанию. Деревья являются затем более покрытыми листвой (глубже).

Чтобы назвать предикторы в ансамбле классификации (часть структуры ансамбля), используйте пару "имя-значение" PredictorNames в fitcensemble.

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

| | | | | | |

Похожие темы