Как дерево принятия решений узнает, какой следующий вопрос лучше задать на основе данных?

Механизм принятия решений как дерево узнает, какой следующий вопрос задать на основе данных?

Создайте свой классификатор дерева решений (с нуля на Python) и поймите, как он использует энтропию для разделения узла

Фото от Daniele Levis Pelusi на Unsplash

Введение

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

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

Чтобы понять концепцию энтропии и “gini impurity” (другой метрики, используемой для измерения случайности и определения качества разделения в деревьях решений), быстро ознакомьтесь с этой статьей.

Определение проблемы и данные

Проблема: По измерениям длины и веса определите, является ли рыба тунцом или лососем.

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

Вы можете загрузить набор данных отсюда.

Очень рекомендуется писать код во время чтения этой статьи, чтобы получить максимальное понимание 🙂

Предварительные требования для совместного кодирования

Давайте убедимся, что у вас есть все необходимое для начала (я думаю, что у вас уже есть, но на всякий случай).