8.3. Случайные леса
Алгоритм случайных лесов для классификации является двойником соответствующего алгоритма для регрессии. Как и в случае с бутстрэп агрегированием каждое дерево в лесе голосует для классификации нового наблюдения, и часть голосов в каждом классе во всем ансамбле является вектором вероятности предсказания.
По большей части, у случайного леса для классификации есть аналогичные регрессии свойства, включая:
– модель относительно нечувствительна к значению mtry – числа предикторов, которое рассматривается в узле;
– как с большинством деревьев, требования предварительной обработки данных минимальны;
– могут быть вычислены меры результативности из стеллажа, включая точность, чувствительность, специфику и матрицы рассогласования.
8.4. Усиление
Хотя мы уже обсуждалось усиление при настройке регрессии, этот метод первоначально разрабатывался для проблем классификации, в котором много слабых классификаторов, например, классификатор, который предсказывает незначительно лучше, чем случайный, были объединены в сильный классификатор. Есть много разновидностей усиливающих алгоритмов, и здесь обсудим основные.
В начале 1990-ых появились несколько алгоритмов усиления для реализации оригинальной теории. В 1996, наконец, появилась первая практическая реализация теории усиления в виде известного алгоритма AdaBoost, которая использовалась в ранних версияхRattle.
Кратко, алгоритм AdaBoost генерирует последовательность слабых классификаторов, где на каждой итерации алгоритм считает лучшим классификатором тот, который основан на текущих весах наблюдения. Наблюдения, которые неправильно классифицированы на k-й итерации, получают больше веса в (k +1) итерации, в то время как наблюдения, которые правильно классифицированы, получают меньше веса на последующей итерации. Это означает, что наблюдение, которое трудно классифицировать, получают все более и более большие веса, пока алгоритм не идентифицирует модель, которая правильно классифицирует эти наблюдения. Поэтому, каждая итерация алгоритма обязана изучать другой аспект данных, сосредотачиваясь на областях, которые содержат наблюдения, трудные для классификации. На каждой итерации вычисляется вес этапа, основанный на коэффициенте ошибок на этой итерации. Природа веса этапа подразумевает, что у более точных моделей есть более высокое положительное значение, а у менее точных моделей есть более низкое отрицательное значение, затем полная последовательность взвешенных классификаторов объединяется в ансамбле и имеет большой потенциал для лучшей классификации, чем любой из отдельных классификаторов.
Усиление может быть применено к любому методу классификации, но деревья классификации – популярный метод для усиления, так как они могут быть превращены в слабых учеников, ограничивая глубину деревьев для создания деревьев с немногими разделениями (также известные как пни). Известно объяснение того, почему деревья классификации работают особенно хорошо при усилении. Так как деревья классификации являются методом (малое смещение) / (большая дисперсии), ансамбль деревьев помогает понижать дисперсию, приводя к результату, у которого есть малое смещение и малая дисперсия. Глядя на алгоритм AdaBoost можно показать, что методы с низкой дисперсией не могут быть значительно улучшены посредством усиления.
8.5. Функции R
Приведем некоторые функции, которые могут быть использованы при работе над данным разделом.
Приведено название функции, а в скобках название пакета, в котором функция расположена. Для использования функция необходима загрузка пакета, а если его еще нет, то и установка.
Если названия пакета не приведено – это означает, что функция имеется в базовом пакете и не требуется предварительная загрузка пакета.
Для практической реализации положений данного раздела могут быть полезны следующие пакеты: C50, caret, gbm, ipred, partykit, pROC, randomForest и RWeka.
Категориальные предикторы кодируются в R как факторы с помощью функций: SponsorCode, ContractValueBand, CategoryCode и Weekday.
rpart (rpart)
подгонка отдельно классификационного дерева.
bagging (rpart)
подгонка бутстрэп агрегированного дерева.
randomForest (randomForest)
подгонка случайного леса.
gbm (gbm)
подгонка усиленного дерева. Возможно два вида распределений: «bernoulli» и «adaboost».
blackboost (mboost)
подгонка усиленного дерева.
adaboost (ada)
авторский алгоритм подгонки усиленного дерева.
9. Несбалансированность классов
9.1. Влияние несбалансированности классов
Моделируя дискретные классы, относительные частоты классов могут оказать значительное влияние на эффективность модели. Неустойчивость происходит, когда у одного или более классов есть очень низкие соотношения в учебных данных по сравнению с другими классами. Неустойчивость может присутствовать в любом наборе данных или применении, и, следовательно, практик должен знать о тонкостях моделирования этого типа данных.
Рассмотрим наши целевые переменные (классы) с этих позиций.
Первая целевая переменная имеет два класса: «лонг» и «шорт» («1» и «-1»). Их количество в наборе данных примерно одинаково.
Вторая целевая переменная имеет три класса: «лонг», «шорт» и «вне рынка» («1», «-1» и «0»). Позиций «вне рынка» примерно в три раза меньше, чем «лонгов» или «шортов».
Если мерять эффективность моделей такими показателями как общая точность, Каппа, область под кривой ROC, то выявить влияние несбалансированности классов не удастся.
Несбалансированность классов имеет серьезно влияние на предсказание вероятности класса. Здесь можно получить распределение с чрезвычайно большим скосом.
9.2. Настройка модели
Самый простой подход к противодействию отрицательному влиянию неустойчивости класса – это настройка модели с целью максимизации точности класса меньшинства. К сожалению, этот подход зависит от используемого набора данных и не может быть рекомендован как универсальный.
9.3. Случай неравных весов
У многих предсказательных классификационных моделей есть возможность установки весов наблюдениям (строкам матрицы), где каждой строке можно дать больше акцента в фазе обучения модели. Например, это возможно в моделях усиления, деревьев классификации.
Этот подход позволяет вновь балансировать набор данных обучения, увеличив веса наблюдений в классах меньшинства. Для многих моделей это может быть интерпретировано как наличие идентичных двойных точек данных с тем же самым значением предиктора.
9.4. Методы сэмплирования
Если есть априорное знание о неустойчивости класса, то можно уменьшить его воздействие при обучении модели путем формирования выборки для набора обучения таким образом, чтобы получить примерное равенство. Появление этого подхода устраняет фундаментальную проблему неустойчивости при обучении моделей. Однако если набор данных обучения составлен сбалансированным, то тестовый набор должен иметь естественное состоянием и должен отразить неустойчивость для вычисления честных оценок будущей эффективности.
Если априорный подход к выборке не возможен, то реализуют апостериорный подход к выборке, который может помочь ослабить влияние неустойчивости во время обучения модели. Два общих апостериорных подхода – это понижающая дискретизация и повышающая дискретизация данных. Повышающая дискретизация – любой метод, который имитирует или приписывает дополнительные наблюдения для улучшения балансов классов, в то время как понижающая дискретизация обращается к любому методу, который сокращает количество наблюдений для улучшения баланса классов.
Возможен подход к повышающей дискретизации, в которой наблюдения из классов меньшинства выбираются с заменой, пока классы не становятся примерно равными. Предположим, набор данных обучения содержит 6466 «лонгов» и 1411 «вне рынка». Если сохранить исходные данные класса меньшинства, а затем добавить ресемплированием 5055 случайных наблюдений (с заменой), то получим дополнение меньшей части до размера большей части. При выполнении некоторые наблюдения класса меньшинства могут обнаружиться в наборе данных обучения со справедливо высокой частотой, в то время как у каждого наблюдения в классе большой части есть единственное наблюдение в наборе данных.
Понижающая дискретизация выбирает наблюдения из большего класса так, чтобы он сравнялся размером с меньшим классом.
9.5. Обучение, чувствительное к стоимости
Вместо того чтобы оптимизировать типичный критерий качества работы, такой как точность или примесь, некоторые модели могут альтернативно оптимизировать функцию стоимости или потерь, которая дифференцировано взвешивает определенные типы ошибок. Например, может быть уместно полагать, что неправильная классификация истинных событий (ложные отрицания) в X разы более дорогостоящая, чем неправильно предсказание непримечательных событий (ложные положительные стороны). Объединение определенных затрат во время обучения модели может склонять модель к менее частым классам. В отличие от использования альтернативных сокращений, неравные затраты могут влиять на параметры модели и таким образом имеют возможности сделать истинные уточнения классификации.
Для моделей, использующих машины опорных векторов (SVM), затраты могут быть присоединены к определенным классам (в противоположность определенным типам ошибок). Вспомним, что эти модели управляются сложностью, используя функцию стоимости, которая увеличивает штраф, если выборки находятся на неправильной стороне текущей границы класса. Для неустойчивости класса неравные затраты для каждого класса могут скорректировать параметры для увеличения или уменьшения чувствительности модели к определенным классам. Заметим, что этот подход отличается от того, где у определенных типов ошибок могут быть дифференцированные стоимости. Для машин опорных векторов (SVM) всему классу можно дать увеличенную значимость. Для двух классов эти два подхода аналогичны.