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

Деревья решений ансамбля

Резюме

В Части IV этого курса мы исследовали k-ближайших соседей (kNN). Мы продемонстрировали шаги по созданию модели kNN с помощью DRESS Kit, а также составили прогнозы с использованием этой модели. Мы сделали обходной путь, чтобы обсудить различные метрики производительности модели, включая коэффициент детерминации, среднюю абсолютную ошибку и среднеквадратичную ошибку для задач регрессии, а также точность, прецизионность, отзыв и F-балл для задач классификации. Мы также представили метод перекрестной проверки, прежде чем вернуться к обсуждению различных методов оптимизации, характерных для алгоритма kNN. Наконец, мы демонстрируем использование алгоритма kNN в качестве метода вменения пропущенных значений, а также метода сопоставления когорт.

Напомним, что одним из ограничений модели линейной / логистической регрессии является ее гладкая и непрерывная граница принятия решений. Основным преимуществом модели kNN перед моделью линейной / логистической регрессии является ее способность создавать круговую границу принятия решений произвольного размера (на основе значения k). Модели дерева решений представляют собой дальнейшее улучшение, позволяя создавать произвольную границу решений.

ПЛАТЬЕ Обновление комплекта

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

Древо решений

Обзор модели

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

Интуитивно мы можем понять, как на производительность модели дерева решений может влиять выбор критериев разделения. Совершенно бесполезная модель дерева решений - это модель, которая просто случайным образом разбивает узел на два, потому что предсказательная сила такой модели не лучше, чем случайные предположения. Следовательно, чтобы построить полезную модель дерева решений, мы должны попытаться уменьшить степень случайности после разделения. Есть несколько способов измерить случайность в модели машинного обучения. Чаще всего используются примесь Джини и получение энтропии / информации для задач классификации и дисперсия для задач регрессии. Для целей этого курса не важно знать математику, лежащую в основе примеси Джини, получения информации или дисперсии. Достаточно сказать, что когда эти метрики падают до нуля, тогда все субъекты, связанные с этим узлом, имеют одинаковое значение результата, и дальнейшее разделение узла не дает никаких преимуществ. Чтобы построить оптимальную модель дерева решений, алгоритму просто нужно найти критерий разделения, который приводит к наименьшей степени полной случайности в их дочерних узлах.

Сила и ограничения

Мы можем легко увидеть, основываясь на приведенном выше описании, как дерево решений может поддерживать произвольную границу решения. Каждый узел уровня работает независимо от других узлов того же уровня. Предположим, мы разделили наших испытуемых на две группы на основе среднего артериального давления (САД) 60 мм рт. (например, другой уровень гемоглобина или что-то совершенно не связанное, например, пол или ИМТ).

Мы также можем видеть, что дерево решений по сути представляет собой каскад операторов if-then-else. Это означает, что дерево решений может работать как с числовыми, так и с категориальными признаками (если вы можете построить оператор if-then-else на основе признака, оно может функционировать как узел в дереве решений). Это также означает, что дерево решений может работать с экстремальной скоростью на этапе прогнозирования. Нет необходимости в сложном матричном умножении, возведении в степень или сортировке. Наконец, легко интерпретировать результаты модели дерева решений. Чтобы понять, как делается прогноз, нам просто нужно вручную проследить дерево от корня.

Одним из незначительных ограничений метода моделирования дерева решений является невозможность учитывать более одного предиктора в каждом узле. Например, если набор данных содержит только рост и вес в качестве предикторов, но результат на самом деле лучше коррелирует с ИМТ, модель дерева решений не сможет эффективно уловить такую ​​взаимосвязь. Однако основным ограничением моделей дерева решений является тенденция к переобучению. Частично это происходит благодаря способности моделей дерева решений создавать произвольную границу решения, а частично - из-за экспоненциального увеличения количества узлов по мере того, как дерево растет глубже.

Рассмотрим гипотетический набор данных с 1000 субъектов. Предположим, что каждый субъект может быть однозначно идентифицирован с помощью комбинации предикторов, что не является полностью нереалистичным, учитывая, например, вероятность того, что у двух субъектов точно одинаковый ИМТ, уровень гемоглобина, количество тромбоцитов и т. Д. систолическое артериальное давление, частота сердечных сокращений и уровень общего холестерина. Можем ли мы построить модель дерева решений, которая гарантированно будет на 100% точной при применении обратно к набору обучающих данных? Ответ положительный. Фактически, все, что требуется, - это дерево решений с глубиной 10 (2¹⁰ = 1024). 20-слойное дерево может однозначно идентифицировать более 1 миллиона субъектов. Вся идея, лежащая в основе ансамблевых моделей дерева решений, состоит в том, чтобы преодолеть тот факт, что одна модель дерева решений склонна к переобучению.

Модель случайного леса / дополнительных деревьев

Обзор модели

Случайный лес работает на основе основного предположения, что взаимосвязь между некоторыми предикторами и результатом может быть представлена ​​набором деревьев решений (много-много деревьев, следовательно, лес), каждое из которых моделирует только определенный аспект взаимосвязи. Это похоже на старую азиатскую притчу о слепых и слоне. Каждый человек может оценить только определенные черты слона, основываясь на его ограниченном взаимодействии со слоном, но вместе они описывают слона довольно точно. Мы также можем рассматривать случайный лес / дополнительные деревья как своего рода демократию или правило большинства.

Техника, используемая для создания этой коллекции деревьев решений в модели случайного леса, известна как упаковка, которая представляет собой комбинацию начальной загрузки и агрегации. Под загрузкой понимается процесс выборки с заменой. Например, у нас есть пул из 9 предметов, и мы хотим создать образец из 7 с помощью начальной загрузки, мы выберем один предмет (например, предмет A) , не удаляя его из пула. Когда нам нужно выбрать следующий предмет, вероятность снова выбрать предмет А остается прежней. Начальная загрузка позволяет нам создавать образцы, которые сильно отличаются друг от друга и от исходного набора данных, но все образцы, взятые вместе, должны напоминать распределение исходного набора данных. Предположим, что гендерное распределение исходного набора данных составляет 60:40, гендерное распределение каждой выборки, созданной с помощью бутстрэппинга, может быть не точно 60:40, но если мы сгенерируем много выборок, гендерное распределение всех этих выборок в целом будет быть близко к 60:40.

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

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

Сильные стороны и ограничения

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

Еще один недостаток случайных лесов / дополнительных деревьев - вероятностный характер этих алгоритмов. Алгоритмы linear / logistic и kNN, которые мы изучили ранее, являются детерминированными, что означает, что одна и та же модель создается каждый раз, когда применяется один и тот же набор обучающих данных. Напротив, методы пакетирования, подстановки признаков и случайного разделения, используемые алгоритмами случайного леса / дополнительных деревьев, вносят некоторую степень случайности и создают совершенно другую модель каждый раз, когда применяется обучающий набор данных. Одна модель может работать значительно лучше или хуже, чем следующая модель, и это значительно усложняет оптимизацию модели.

Выполнение

На данный момент достаточно основных теорий, и давайте приступим к построению нашей первой модели ансамблевых деревьев решений. В комплект DRESS Kit входит функция DRESS.randomForest, но она фактически реализует алгоритм дополнительных деревьев внутри для повышения эффективности вычислений.

Поскольку все наши предикторы числовые, мы передаем их функции DRESS.randomForest в качестве третьего параметра и передаем пустой массив в качестве четвертого параметра (который принимает массив категориальных предикторов). Мы также устанавливаем пятый параметр на false, потому что мы строим регрессионную модель. Распечатка самой модели не содержит большого количества информации, за исключением моделируемого результата и значения seed, которое можно использовать для воссоздания той же самой модели в будущем, установив для глобальной переменной DRESS.SEED это значение.

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

Чтобы создать модель классификации, мы просто устанавливаем пятый параметр функции DRESS.randomForest как true.

Оптимизация

Прежде чем мы обсудим различные оптимизации, которые могут быть выполнены в нашей модели случайного леса (в действительности - дополнительных деревьев), давайте вспомним, как мы можем использовать DRESS.crossValidate и DRESS.async для оценки производительности модели машинного обучения. Оказывается, настройки гиперпараметров по умолчанию далеки от того, чтобы оптимизировать то, что мы пытаемся сделать.

Подсчет дерева

Первое, что приходит на ум, - это количество деревьев в лесу. Интуитивно мы можем видеть, что если модель состоит только из нескольких деревьев (например, 5–10 деревьев) и каждое дерево работает только с подмножеством предикторов, окончательная модель может не уловить определенные аспекты взаимосвязи между предикторами. и результат. Однако, как только мы достигли достаточного количества деревьев, дальнейшее увеличение, как правило, не улучшает общую производительность, а, напротив, резко снижает эффективность модели. Для обучения 1000 деревьев потребуется в десять раз больше вычислительной мощности, чем требуется для обучения 100 деревьев, но вряд ли это повысит точность в 10 раз. В общем, мы можем начать с 50–100 деревьев, а затем постепенно увеличивать количество деревьев, удваивая его, пока производительность модели не начнет выходить на плато.

Глубина дерева

Глубина дерева играет гораздо более важную роль в оптимизации, чем количество деревьев. Интуитивно мы видим, что если глубина дерева установлена ​​на 1, то каждое дерево будет иметь только 2 конечных узла. Даже с большим количеством деревьев модель не будет очень точной, потому что значения результатов на обоих концах кривой нормального распределения будут перевешивать значения, близкие к среднему. Эта проблема особенно важна для моделей мультиклассовой классификации с неравномерным распределением классов. Поскольку окончательный прогноз модели вычисляется путем взятия режима из всех деревьев, если количество конечных узлов в каждом дереве значительно меньше, чем количество классов, эти редкие классы почти никогда не будут выбраны в качестве режима. Напротив, если установить слишком большую глубину дерева, переобучение может стать более заметным.

Соотношение подпространств

Не менее важной оптимизацией для алгоритма случайного леса / дополнительных деревьев является соотношение подпространств признаков, поскольку оно является одним из основных источников случайности для окончательной модели (коэффициент упаковки и критерии случайного разделения являются другим источником для случайного леса и дополнительных деревьев, соответственно. ). Другими словами, соотношение подпространств контролирует баланс между недостаточным и избыточным соответствием. Рассмотрим модель, которая состоит из комбинации сильных предикторов и слабых предикторов, установив отношение подпространств к 1, слабые предикторы, вероятно, будут включены в некоторые деревья, результирующая модель будет очень точной при повторном применении к обучению. набор данных, но будет плохо работать при применении к независимому набору данных проверки, т.е. Если коэффициент подпространства установлен на 0, то модель полностью бесполезна, потому что она не принимает во внимание какие-либо предикторы. Чтобы определить оптимальное соотношение подпространств для конкретной модели, требуется много проб и ошибок.

Выбор функций

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

Машина для повышения градиента

Обзор модели

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

Сильные стороны и ограничения

При правильной настройке машины для повышения градиента, по-видимому, превосходят модели случайных лесов / дополнительных деревьев, основанные на результатах многих соревнований по машинному обучению на Kaggle. Однако такая повышенная производительность имеет свою цену. Время обучения для машины повышения градиента намного больше, чем случайный лес / дополнительные деревья, потому что весь обучающий набор данных должен применяться к рабочей модели каждый раз, когда создается новое дерево, чтобы вычислить остаточную ошибку. Фаза обучения не может быть распараллелена, потому что каждое дерево зависит от остаточной ошибки, произведенной предыдущими деревьями. Машина повышения градиента также плохо работает с задачами мультиклассовой классификации, потому что для каждого класса требуется отдельная цепочка деревьев решений по принципу один против остальных. Также гораздо труднее интерпретировать результирующую модель, потому что, за исключением первого дерева решений, модель фокусируется на взаимосвязи между предикторами и остаточными ошибками, а не на значениях результата. Наконец, машины для повышения градиента более подвержены переобучению, чем модели случайных лесов / дополнительных деревьев.

Выполнение

Создание машины повышения градиента почти не требует изменений в коде, используемом для создания модели случайного леса / дополнительных деревьев, кроме вызова DRESS.gradientBoosting вместо DRESS.randomForest. Обратите внимание, что выполнение кода занимает значительно больше времени из-за времени обработки, которое требуется для применения всего обучающего набора данных каждый раз, когда создается новое дерево решений.

Оптимизация

Подсчет дерева

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

Глубина дерева

Как и в случае с подсчетом деревьев, машины с повышением градиента часто могут достигать сопоставимого уровня производительности с моделью случайного леса / дополнительных деревьев с использованием более мелких деревьев решений. Это связано с тем, что остаточные ошибки имеют тенденцию группироваться вокруг центрального предела после нескольких деревьев, в результате степень случайности (т.е. среднеквадратичная ошибка), которую необходимо обработать каждому дереву, мала. Чрезмерно глубокое дерево - частая причина переоснащения машины для повышения градиента.

Соотношение подпространств

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

Скорость обучения

Скорость обучения определяет, какая часть остаточных ошибок моделируется каждым деревом решений. Обычно устанавливается небольшое число от 0,1 до 0,3, что означает, что каждое дерево решений будет пытаться учитывать только 10–30% остаточных ошибок, а оставшиеся 70–90% остаточных ошибок будут обрабатываться последующими деревьями решений. которые работают с разными подмножествами обучающего набора данных (как определено гиперпараметром соотношения подпространств). Фактически, эти два гиперпараметра представляют собой основную гарантию против переоснащения машин для повышения градиента. Однако установка слишком низкой скорости обучения может привести к недостаточной подгонке или потребовать компенсации большим количеством деревьев, что снижает эффективность модели.

Важность функции

Вспомните наше обсуждение концептуальных различий между использованием линейной / логистической регрессии в качестве модели машинного обучения и использованием ее в качестве традиционного метода регрессионного анализа в Части III курса. Хотя модели машинного обучения не предназначены для оценки наличия / отсутствия статистически значимой связи между предиктором / функцией и результатом, иногда все же полезно выяснить, важна ли конкретная функция / предиктор. или нет. Если определенная функция считается неважной, то может быть более эффективным перестроить модель без этой функции. В линейной / логистической модели эти несущественные особенности легко идентифицировать. В модели kNN каждая функция одинаково важна (если определенные функции не масштабируются по-другому и флаг нормализации не выключен). Как мы можем объективно измерить важность функции в модели дерева решений ансамбля?

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

Для удобства модели дерева решений ансамбля, созданные с помощью DRESS Kit, имеют встроенную функцию (model.importance), которая автоматически вычисляет важность функции на основе примеси или дисперсии Джини.

LPA : 1209.08 
OBESITY : 1038.83 
DENTAL : 1020.85 
CSMOKING : 877.34 
COLON_SCREEN: 605.89 
COREW : 584.14 
BINGE : 573.65 
SLEEP : 464.21 
COREM : 383.77 
BPMED : 380.73 
ACCESS2 : 311.41 
CHECKUP : 149.87 
PAPTEST : 128.30 
CHOLSCREEN : 110.00 
MAMMOUSE : 60.40

Основываясь на распечатке, мы можем сделать вывод, что LPA (отсутствие физической активности в свободное время среди взрослых в возрасте ›= 18 лет) является наиболее важным прогностическим фактором в модели и на несколько порядков важнее, чем MAMMOUSE. Если мы построим две модели, одну с предсказателем MAMMOUSE, а другую без него, мы увидим, что между двумя моделями нет разницы в производительности.

Заворачивать

Давайте рассмотрим то, что мы узнали в Части V. Мы представили концепцию дерева решений как модель машинного обучения и обсудили его сильные и слабые стороны, в частности риск переобучения. Мы обсудили, как спроектирована модель случайного леса для снижения риска переобучения за счет использования таких методов, как бэггинг и подпространство функций. Мы также представили модель дополнительных деревьев и объяснили, как ее можно использовать в качестве более эффективной с точки зрения вычислений замены случайного леса. Мы перешли к демонстрации кода для построения дополнительной модели деревьев с использованием DRESS.randomForest и обсудили различные точки оптимизации. Затем мы перешли к обсуждению другой модели дерева решений ансамбля, машины повышения градиента и ее сравнения с моделью случайного леса / дополнительных деревьев. Мы снова продемонстрировали код для создания машины для повышения градиента DRESS.gradientBoosting и обсудили его оптимизацию. Наконец, мы прошли этапы оценки важности функции с помощью функции model.importance.

Резюме модели

Случайный лес / Дополнительные деревья

Сильные стороны

  • Поддержка границы произвольного решения
  • Работает с числовыми и категориальными предикторами
  • Очень быстро делать прогнозы
  • Менее склонен к переобучению

Ограничения

  • Трудно интерпретировать (задействовано много деревьев, некоторые плохо работают по замыслу)
  • Трудно оптимизировать (необходимо учитывать множество гиперпараметров, алгоритм не детерминирован)

Машина для повышения градиента

Сильные стороны

  • Поддержка границы произвольного решения
  • Работает с числовыми и категориальными предикторами
  • Очень быстро делать прогнозы
  • Лучшая производительность, чем случайный лес / дополнительные деревья

Ограничения

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

Упражнение

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