Не глядя на клавиатуру напишем алгоритм Decision Tree с нуля на языке Python

preview_player
Показать описание
Применяя ООП напишем дерево классификации и регрессии. Алгоритм построения дерева - жадный, с полным перебором признаков. Для дерева классификации информативность выбора признаков оценим вычисляя критерий джини и энтропийный критерий. Качество дерева оценим по доле верных ответов. Для дерева регрессии будем оценивать MSE и MAE. Качество оценим по коэффициенту детерминации.

0:00 Краткое содержание
1:07 Начало. Генерация наблюдений.
3:16 Пишем вспомогательный класс Node
5:48 Выдыхаем и начинаем писать черновик класса Decision Tree
8:17 Заполняем черновик класса
28:54 Закончили. Проверяем работу алгоритма для классификации
31:01 Побыстрому переделываем алгоритм для регрессии
35:27 Переобучились. Накидаем больше наблюдений.
36:44 Ну вот, деревья не используются. Что тогда нужно делать?

Рекомендации по теме
Комментарии
Автор

Это очень круто) и полезно
Спасибо!
Надо тоже попрактиковаться

bogdanns
Автор

Блин, это же надо так сходу писать код рабочий, круто реально)

billyalen_ttr
Автор

Классное видео! Спасибо! От себя скажу, что вроде бы данную реализацию можно сделать эффективнее. При построении дерева регрессии, перебирая пороги и признаки, мы каждый раз пересчитываем среднее по всем значениям. Среднее можно пересчитывать за o(1), а не за o(n), запоминая прошлые значения среднего. Просто для регрессии даже для небольшой выборки ваша реализация отрабатывала весьма долго, если сравнивать со скоростью работы реализации из sklearn.

sanpavlovich
Автор

За видео, конечно, спасибо, но уже видел один в один такой алгоритм на разных каналах и кэггл. У данной реализации есть 2 недостатка: 1) нужно сделать функцию чтобы определять непрерывные и категориальные переменные т.к. у них порог берется по-разному, 2) обычно порог берется не по всем уникальным значениям признака, а по среднему арифметическому между уникальными соседними значениями признака.
Также вы сказали, что реализуете коэффициент Джини, но сделали информационный прирост. Хоть у них и схожие результаты, но все же это разные вещи.

hopelesssuprem
Автор

Хотелось бы высказать небольшое замечание, что когда считают R^2 коэффициент для задачи регрессии, среднее значение считают именно по обучающей выборке, но это мелочи)

billyalen_ttr
Автор

Информативное видео! Спасибо за урок. А можно с вами как то связаться? Хотелось бы попросить совет, как использовать свой набор данных для этого алгоритма. Я новичок в этом деле. Как не пробую подключить свои данные - либо ошибки, либо в предикте все 0 0 0 0... Хотя на данных из урока все работает 😞

zzzzzz