Дерево решений — это один из алгоритмов машинного обучения. Алгоритм основан на правиле: «Если <условие>, то <ожидаемый результат>». Например:
Если абонент нажал цифру «1» после голосового приветствия, то звонок нужно перевести в отдел продаж.
Дерево решений часто используют в банковском секторе и в тех сферах, где применяют скрипты для общения с клиентами и нужно управлять процессами принятия решений. Пример такой сферы — финансовые услуги, где банки и страховые компании проверяют информацию о клиенте в строгой последовательности, чтобы оценить риски перед заключением договора.
Вверху дерева — начальный корневой узел, в который попадает вся выборка. Далее происходит проверка на выполнение условия или наличие признака. В результате такой проверки группа данных разбивается на подгруппы: подгруппа данных, которые прошли проверку, и подгруппа данных, которые не соответствуют заданному условию.
Далее подгруппы данных попадают в следующий узел с новой проверкой. И так до конечного узла дерева задач, который отвечает заданной цели анализа данных или завершает процесс принятия решения.
Например, у пользователя не прошёл платёж по карте через приложение банка, он пишет в чат службы поддержки. Сотрудник банка, который ответит на запрос, будет следовать алгоритму: например, первым делом спросит идентификатор платежа. Дальше дерево решений будет разветвляться в зависимости от того, знает пользователь идентификатор или нет.
Скрипты для отдела продаж тоже чаще всего основаны на модели дерева решений: менеджеры задают вопросы потенциальному клиенту и в зависимости от ответа корректируют следующий вопрос.
В машинном обучении, статистике и анализе данных с помощью метода дерева решений можно строить прогнозы, описывать данные, разделять их на группы и находить зависимости между ними.
Простая и популярная задача — это бинарная классификация. То есть разделение множества элементов на две группы, где, например:
1 — успех, да, ответ верный, пользователь вернул кредит;
0 — неудача, нет, ответ неверный, пользователь не вернул кредит.
Например, на основе метеорологических наблюдений за прошедшие 100 дней нужно сделать прогноз, будет ли завтра дождь. Для этого можно разделить все дни на две группы, где:
1 — на следующий день был дождь;
0 — на следующий день не было дождя.
Можно проанализировать набор характеристик каждого дня: среднюю температуру, влажность, был ли дождь в прошедшие две недели. Алгоритм дерева решений будет искать в общем объёме данных те повторяющиеся условия, по которым проще всего разделить все дни на «1» и «0». Такие условия увеличивают вероятность нужного результата.
В машинном обучении и аналитике данных дерево решений используют, чтобы:
1. Классифицировать данные
С помощью дерева решений можно изучить характеристики разных случаев или объектов и на основе результатов разделить их на категории и подкатегории.
2. Определить наиболее значимые условия
Алгоритм дерева решений помогает оценить важность признака (от англ. feature importance). То есть найти такие условия, которые важнее всего для заданной цели исследования. Такие условия находятся ближе всего к началу деления основной выборки. Если построить 100 деревьев для решения одной и той же задачи, то, скорее всего, в начале этих деревьев будут одинаковые условия.
3. Увеличить надёжность результата
Дерево решений помогает сформировать максимально подходящую под все условия выборку или сделать самый точный прогноз на основе имеющихся данных.
Задача — сделать классификатор точек, которые относятся к окружности номер 1 или номер 2.
Для наглядности можно использовать Jupyter Notebook — интерактивную среду разработки и инструмент для анализа данных. Это поможет визуализировать, как работает дерево решений.
Описать окружность с центром в начале координат можно простым уравнением вида:
x² + y² = R².
С этим выражением можно отразить зависимость между координатами x и y и однозначно определить отношение точки к окружности 1 или 2.
В анализе данных и машинном обучении дерево решений не нужно вручную создавать. Аналитики используют для этого специальные библиотеки, которые есть в рамках двух языков программирования: R и Python.
В рамках Python, например, есть бесплатная библиотека стандартных моделей машинного обучения scikit-learn, в которой доступен класс Decision Tree с предподготовленным кодом.
Перед построением дерева решений с помощью предподготовленного кода аналитики должны:
1. Собрать данные и сделать разведочный анализ.
Сначала специалисты анализируют данные и ищут общие закономерности и аномалии. Затем формируют гипотезу о формате модели — почему именно дерево решений подойдёт для задачи. На этом этапе также строят гипотезы о влиянии факторов на зависимую переменную и пайплайн предподготовки данных.
2. Провести предподготовку.
Данные приводят к нужному формату и чистят их от аномалий. Есть специальные алгоритмы и подходы для препроцессинга данных:
● заполнение пропусков средними, медианными значениями,
● нормировка показателей относительно друг друга,
● удаление аномалий при необходимости,
● категоризация переменных.
3. Сформировать отложенную выборку.
Небольшую часть всех данных нужно отложить, проанализировать самостоятельно и определить основное значение для итогового результата. Это делают для того, чтобы после обучения модели дерева решений можно было сравнить результаты и проверить качество работы алгоритма на наблюдениях, которые обученная модель ранее не видела.
4. Составить дерево решений и запустить обучение модели.
На этом этапе в библиотеку загружают данные или ту часть, которая осталась после формирования отложенной выборки, и условия задачи. Правила «если …, то …» генерируются автоматически во время обучения модели.
5. Сравнить результаты на обучающей выборке и на отложенной.
Если результаты сопоставимы и отложенная выборка сформирована верно, значит, алгоритм модели работает корректно. Далее аналитик сохраняет код обученной модели и применяет его для принятия решения и создания прогнозов на основе новых данных.
Александр Толмачёв
Дерево решений — базовый алгоритм, который изучают на первых уроках курсов машинного обучения. Аналитику данных полезно знать и понимать такие алгоритмы, потому что они помогают интерпретировать результаты исследований. К тому же это фундамент для решения более сложных задач.
Читать также: