В основе статьи лежит задача классификации по алгоритму дерева решений, которая используется чаще. В нем рассказывается о различных методах разделения узла, а также о повышении производительности модели с помощью различных методов.

Дерево классификации очень похоже на дерево регрессии, за исключением того, что выходные данные являются качественными, а не количественными. Напомним, что в настройке регрессии прогнозируемый ответ для наблюдения задается средним ответом обучающих наблюдений, принадлежащих одному и тому же конечному узлу. Напротив, для классификации мы прогнозируем наиболее часто встречающийся класс в узле.

Задача выращивания дерева решений при классификации очень похожа на задачу выращивания дерева регрессии, мы также используем рекурсивное двоичное разбиение для классификации. В регрессии мы использовали RSS (остаточную сумму квадратов) в качестве меры примеси для выбора конечного узла и точки разделения.

Естественной альтернативой RSS является частота ошибок классификации.

При классификации нас интересует соотношение классов в конкретном регионе.

Вышеупомянутое уравнение формулирует долю класса k в узле m. Мы относим тестовый пример к большей части пропорционального класса в этом конкретном узле.

Теперь, исходя из этой пропорции, существуют определенные меры примесей, а именно ошибка неправильной классификации, индекс Джини и энтропия.

Все три показателя похожи, но индекс Джини и кросс-энтропия различимы, что является дополнительным преимуществом в случае проблемы оптимизации. Кроме того, индекс Джини и кросс-энтропия более чувствительны к изменениям вероятностей узлов.

В следующем коде я провел классификацию по набору данных о сердце, в котором есть функции, которые определяют, есть ли у пациента болезнь сердца или нет.

Следующий код приводит к выводу большого дерева (без обрезки).

Дерево решений приводит к переоборудованию моделей, которые затем удаляются с использованием метода «затраты-сложность». Но есть и другие мощные методы для повышения эффективности древовидной модели.

Бэггинг (агрегирование бутстрапа)

Дерево решений имеет высокую дисперсию. Стандартный подход к уменьшению дисперсии заключается в обучении дерева решений с помощью независимых выборочных данных из совокупности, чтобы уменьшить дисперсию модели. Но в реальной проблеме есть ограничение на доступ к огромному объему данных. Вот где на сцену выходит метод Bootstrap Aggregation или Bagging.

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

Чтобы применить Bagging к деревьям регрессии, мы просто строим деревья регрессии B, используя B-загрузочные обучающие наборы, и усредняем полученные прогнозы.

В задаче классификации для данного тестового наблюдения мы можем записать класс, предсказанный каждым из B-деревьев, и получить большинство голосов: общий прогноз является наиболее часто встречающийся класс большинства среди предсказаний B.

Оценка ошибок вне упаковки: это показатель для измерения ошибки тестирования модели с упаковкой без перекрестной проверки. Эмпирическим путем можно показать, что каждое упакованное дерево использует две трети наблюдений. Оставшаяся треть наблюдений называется «вне пределов досягаемости» (OOB). Мы можем предсказать ответ для i-го наблюдения, используя каждое из деревьев, в которых это наблюдение было OBB. Результирующая метрика даст прогнозы B / 3 для i-го наблюдения. Чтобы получить единый прогноз, мы можем усреднить этот прогнозируемый ответ (регрессия) или принять большинство голосов (классификация).

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

Мы построили 100 Bagged Classification Tree для набора данных Heart, что дало нам ошибку оценки OBB в 19,53%.

В программировании на R мы можем получить меру важности переменной.

Случайные леса

Случайные леса обеспечивают улучшение по сравнению с деревьями в мешках за счет небольшой настройки, которая декоррелирует дерево. В пакете мы создаем ряд моделей с начальной загрузкой для прогнозирования. Случайная выборка из m предикторов рассматривается как кандидаты для разделения из полного набора предикторов p. В разбиении разрешено использовать только m предикторов.

В случайных лесах при каждом разбиении дерева алгоритму даже не разрешается учитывать большинство доступных предикторов (обычно квадратный корень из полного набора). Обоснование этого способа разделения заключается в том, что в наборе есть сильный предиктор вместе с умеренными предикторами. Для большинства моделей с упаковками сильный предсказатель будет использовать верхнюю часть. Таким образом, большинство моделей в мешках будут иметь аналогичную структуру, что делает их сильно коррелированными. Усреднение многих сильно коррелированных моделей не приведет к существенному уменьшению дисперсии.

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

В наборе данных Heart при упаковке мы использовали 10 предикторов для каждого разбиения, тогда как для метода случайного леса мы будем использовать квадратный корень из общего числа предикторов, то есть 4.

Как мы видим, ошибка OBB снизилась до 17,85% в случае этого метода.

Повышение

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

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

В отличие от подгонки одного большого дерева решений к данным и получения потенциально переобученной модели, метод ускорения изучает медленно. Учитывая текущую модель, мы подгоняем дерево решений к остаткам из модели. Мы подгоняем дерево к остаткам от модели, а не к качественному результату Y. Подбирая модель к остаткам, мы постепенно повышаем эффективность модели. Параметр усадки управляет процессом обучения и может быть изменен в соответствии с требованиями модели.

Повышение имеет три параметра настройки:

  1. Количество деревьев (B). В отличие от мешков и случайных лесов, усиление может переобучаться, если B слишком велико, хотя это переобучение имеет тенденцию происходить медленно, если вообще происходит. Мы используем перекрестную проверку, чтобы выбрать B.
  2. Параметр усадки (лямбда), который контролирует скорость обучения ускорению. Типичные значения - 0,001 или 0,01.
  3. Количество расщеплений (d) в каждом дереве, которое контролирует сложность модели.

В R я использовал библиотеку gbm, которая используется для повышения градиента.

Мы можем резюмировать модель в R, что дает график переменной важности.

Заключительное слово

В этой статье мы исследовали алгоритм машинного обучения (дерево решений), который исчерпывающе используется для задачи классификации. Модификации дерева решений могут улучшить его производительность: упаковка и усиление. В настоящее время такие алгоритмы, как XGBoost, Light GBM, CatBoost, широко используются на больших наборах данных.

Кушал Вала, младший научный сотрудник Datametica Solutions Pvt Ltd

Использованная литература:

[1] Введение в статистическое обучение с приложениями на языке R, Гарет Джеймс Даниэла Виттен, Тревор Хасти, Роберт Тибширани.

[2] Elements of Statistical Learning Edition-2, Тревор Хасти, Роберт Тибширани, Джером Фридман.

[3] Книга R, Майкл Дж. Кроули, Имперский колледж Лондона в Силвуд-парке, Великобритания.