Краткое описание работы
Основная идея данной работы заключается в разработке и программной реализации эффективного алгоритма построения дерева принятия решений, предназначенного для задач классификации и регрессии. В основе алгоритма лежит итеративный процесс рекурсивного разбиения обучающего набора данных на подмножества на основе наиболее информативных признаков, что позволяет построить интерпретируемую модель, способную предсказывать целевые значения для новых объектов.
Актуальность темы обусловлена стремительным ростом объемов данных и необходимостью в быстрых, точных и, что особенно важно, интерпретируемых методах машинного обучения. Деревья решений являются фундаментом для более сложных ансамблевых методов (Random Forest, Gradient Boosting) и широко применяются в медицине, финансах, промышленности и маркетинге, где требуется прозрачность принимаемых решений.
Цель работы – разработать и протестировать собственный алгоритм построения дерева решений, оптимизированный по критериям точности и производительности.
Для достижения поставленной цели были решены следующие задачи:
1. Анализ существующих алгоритмов (ID3, C4.5, CART) и критериев разбиения (энтропия, индекс Джини).
2. Выбор архитектуры и критериев для реализации.
3. Разработка алгоритма с поддержкой обработки как числовых, так и категориальных признаков, а также механизма прунинга (стрижки ветвей) для предотвращения переобучения.
4. Программная реализация алгоритма на языке Python.
5. Экспериментальная оценка качества разработанного алгоритма на тестовых датасетах и сравнение с эталонными реализациями (например, sklearn.tree.DecisionTreeClassifier).
Объектом исследования является процесс машинного обучения и интеллектуального анализа данных.
Предметом исследования выступает алгоритм дерева принятия решений, а также методы его построения, оптимизации и оценки качества.
Выводы. В ходе работы был успешно разработан и реализован алгоритм дерева решений. Экспериментальные исследования показали, что предложенный алгоритм демонстрирует конкурентоспособную точность классификации, сопоставимую с известными библиотечными реализациями, при этом сохраняет полную прозрачность логики принятия решений. Применение механизма прунинга позволило существенно снизить эффект переобучения, повысив обобщающую способность модели на новых данных. Разработанный алгоритм может быть рекомендован для использования в качестве базового классификатора в прикладных задачах, где важна интерпретируемость результата.
Название университета
КУРСОВАЯ РАБОТА НА ТЕМУ:
РАЗРАБОТКА АЛГОРИТМА ДЕРЕВА ПРИНЯТИЯ РЕШЕНИЙ
г. Москва, 2025 год.
Содержание
Введение
1⠄Теоретические основы алгоритмов дерева принятия решений
1⠄1⠄Понятие, история и область применения деревьев принятия решений
1⠄2⠄Математические и статистические основы построения деревьев решений
1⠄3⠄Классические алгоритмы построения деревьев: ID3, C4.5, CART
2⠄Разработка и реализация алгоритма дерева принятия решений
2⠄1⠄Постановка задачи и выбор критериев для построения дерева решений
2⠄2⠄Проектирование структуры и разработка программного модуля алгоритма
2⠄3⠄Тестирование разработанного алгоритма на контрольных наборах данных и анализ результатов
Заключение
Список использованных источников
Введение
В эпоху стремительного роста объёмов данных и повсеместной цифровизации всех сфер человеческой деятельности способность извлекать из информации скрытые закономерности и принимать на их основе обоснованные решения становится критически важным конкурентным преимуществом. Технологии машинного обучения, и в частности методы интеллектуального анализа данных, занимают центральное место в этом процессе, позволяя автоматизировать поиск знаний в сложных, многомерных наборах данных. Среди множества алгоритмов классификации и прогнозирования особое место занимают деревья принятия решений, которые сочетают в себе высокую точность прогнозов с уникальной для методов машинного обучения интерпретируемостью. Данная работа посвящена разработке алгоритма дерева принятия решений, что является актуальной задачей как с теоретической, так и с практической точек зрения, поскольку позволяет создавать прозрачные и эффективные модели для решения широкого круга прикладных задач.
Актуальность темы обусловлена несколькими ключевыми факторами. Во-первых, в условиях лавинообразного роста данных традиционные статистические методы часто оказываются неэффективными или слишком ресурсоёмкими, тогда как деревья решений демонстрируют хорошую масштабируемость и устойчивость к зашумленным данным. Во-вторых, во многих областях, таких как медицина, финансы и юриспруденция, требуется не только получить точный прогноз, но и понять логику, на основе которой этот прогноз был сделан. Деревья решений, в отличие от «чёрных ящиков» нейронных сетей, предоставляют наглядное древовидное представление правил, что делает их незаменимым инструментом для принятия ответственных решений. В-третьих, несмотря на кажущуюся простоту, разработка эффективного алгоритма построения дерева решений требует решения ряда нетривиальных задач, связанных с выбором критериев расщепления, обработкой пропущенных значений и борьбой с переобучением, что делает данную область активных исследований.
Проблематика исследования заключается в необходимости преодоления существующих ограничений классических алгоритмов построения деревьев решений, таких как ID3, C4.5 и CART. Основные проблемы включают в себя склонность к переобучению на зашумленных данных, нестабильность (небольшие изменения в данных могут приводить к существенно $$$$$$ $$$$$$$$), $ $$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ и $$$$$$$$$$$ $$$$$$$$. $$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$ $$$$$$$$$$$$$$ $$$ $$$$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$ $$$$$$$$ и $$$$$$$$$$$$$$$$$$, $$$$$$$$$$$$ $$$$$ $$$$$$$$$$ $$$$$$$ $$$$$$.
$$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$$$$$ $$$$$$$ $$$$$$, $ $$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$. $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$, $$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$, $ $$$$$ $$$$$$ $$$$$$$$$ $$ $$$$$$$$$$$$$ $ $$$$$$$$.
$$$$$ $$$$$$ $$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$, $$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$$ $ $$$$$$$$$$$$.
$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$:
- $$$$$$$ $$$$$$$$$$$$$ $$$$$$, $$$$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$;
- $$$$$$$$$$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$ ($$$, $$.$, $$$$), $$$$$$ $$ $$$$$$$ $ $$$$$$ $$$$$$$;
- $$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$, $$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$, $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$ $$$$$$ ($$$$$$$);
- $$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $ $$$$ $$$$$$$$$$$$ $$$$$$ $$ $$$$$ $$$$$$$$ $$$$$$;
- $$$$$$$$ $$$$$$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$ $$$$$$$$$ $$$$$$$ $$$$$$ $ $$$$$$$ $$$ $$$$$$$$ $ $$$$$$$$$$$$$$$$$$ $ $$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$.
$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$$$: $$$$$$$$$$$$$ $$$$$$ $ $$$$$$ $$$$$$$ $$$$$$$$$$ $$ $$$$ $$$$$$$$$ $$$$$$$$, $$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$, $$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$ ($$$$$$ $$$$$$$$, $$$$$$$ $$$$$), $$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$, $ $$$$$ $$$$$$$$$$$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$$$$.
$$$$$$$$$$$$$$ $$$$ $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$ $ $$$$$$$$$$ $$$$$$$ $$$$$$ $ $$$$$$$ $$$$$$$$$ $$$$$$$$ ($. $$$$$$$, $$. $$$$$$$), $$$$$$$$$$$ $$$$$$$ $$$$$$$ $ $$$$$$ $$ $$$$$$$$$$$$$ $$$$$$$ $$$$$$$$, $ $$$$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$ ($$$$$$-$$$$$). $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$ $ $$$$-$ $$$$$ $$ $$$$$$$$$$ $$$$$$$, $$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $ $$$$$$ $$$$$$$$$ $$$$$$$$$$ $ $$$$$$ $$$$$$$.
Понятие, история и область применения деревьев принятия решений
Деревья принятия решений представляют собой один из наиболее интуитивно понятных и широко используемых методов машинного обучения, относящихся к классу алгоритмов контролируемого обучения (supervised learning). В основе данного подхода лежит принцип рекурсивного разбиения пространства признаков на более однородные подобласти, что визуально представляется в виде иерархической древовидной структуры. Каждый внутренний узел такого дерева соответствует проверке некоторого условия по одному из признаков, каждая ветвь представляет собой исход данной проверки, а каждый листовой узел содержит результирующее значение целевой переменной (метку класса или числовое значение). Такая наглядная и интерпретируемая структура позволяет не только получать прогнозы для новых объектов, но и понимать логику, по которой эти прогнозы были сделаны, что выгодно отличает деревья решений от многих других алгоритмов, работающих по принципу «черного ящика» [12].
Исторически развитие деревьев принятия решений прошло несколько ключевых этапов, каждый из которых был связан с преодолением определённых ограничений и расширением области применения метода. Первые теоретические работы, заложившие фундамент данного направления, относятся к 1960-м годам, когда исследователи из области психологии и статистики начали изучать модели последовательного принятия решений. Однако подлинный прорыв произошёл в 1980-х годах с появлением алгоритма ID3 (Iterative Dichotomiser 3), предложенного австралийским учёным Джоном Россом Куинланом. Этот алгоритм использовал теоретико-информационную меру энтропии для оценки информативности признаков и выбора оптимального атрибута для расщепления узла. Дальнейшее развитие привело к созданию более совершенного алгоритма C4.5, который, в отличие от своего предшественника, мог обрабатывать как дискретные, так и непрерывные признаки, а также содержал механизмы отсечения ветвей для борьбы с переобучением. Параллельно развивался алгоритм CART (Classification and Regression Trees), предложенный Лео Брейманом и его коллегами, который использовал в качестве критерия расщепления индекс Джини и был применим как для задач классификации, так и для регрессии. В последующие десятилетия исследования были направлены на повышение устойчивости и точности деревьев решений, что привело к появлению ансамблевых методов, таких как случайный лес (Random Forest) и градиентный бустинг (Gradient Boosting), которые комбинируют множество слабых деревьев для получения более мощной и стабильной модели. Как отмечает в своём исследовании А.В. Смирнов, современные модификации деревьев решений $$$$$$$$$ $$$$$$$$$$ $$$$$$ $$$$$$ с $$$$$$$ $$$$$$$$$$$ признаков и $$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$ [$$].
$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$ $$$ $$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$, $$$ $$$$$$$$$ $$$$$$ $$$$$$ $ $$$$$$$$$ $$$$$$$$ $$$$$$$. $ $$$$$$$$$$ $$$$$ $$$$$$$ $$$$$$$ $$$$$$$$$$$$ $$$ $$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$$ $$$$. $$$$$$$$ $$$$$$$ $$$$$$$$$ $$$$$$ $$$$$ $$$ $$$$$$$$$$$ $$$$$$$$$$$ $$ $$$$$$ $$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$, $$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$ $ $$$$$$$$$ $$$$$ $$$$$. $ $$$$$$$$$$$$$$ $ $$$$$$$$$ $$$$$$$ $$$$$$$ $$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$, $$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$. $$$$$$ $$$$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$ $ $$$$$$$ $$$$$$$$$$$$$$$$ $ $$$$$$$$$$, $$$ $$$ $$$$$$$$$$$$ $$$ $$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$, $$$$$$$$$$$$$$$ $$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$$$. $$$$$ $$$$, $$$$$$ $$$$$ $$$$$ $$$$$$$$$$ $ $$$$$ $$$$$$$$$$$$$ $$$$$$$$, $$$ $$$$$$$$$$$$$$ ($$$$$$$$$$$$$ $$$$$), $$$$$$$$$$$$$$$$$ $$$$$$$ ($$$$$$ $$$$$$$$$$$ $$$$$$$) $ $$$$ $ $$$$$$$$$$$$$ ($$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$). $.$. $$$$$$$ $$$$$$$$$$$$, $$$ $$$$$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$ $$ $$$$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$$, $$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$$ [$$].
$$$$$$$$ $$ $$$$$$$$$ $$$$$$$$, $$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$$ $$$$$$$$$$$, $$$$$$$ $ $$$$$$$$$$$$$ $$ $$$$$$$ $$$$$$$$$$$$$$$. $$-$$$$$$, $$$ $$ $$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$, $$$$$ $$$ $$$$$$$$$$$$ $$$ $$$$$$$$$$$$$$ $$$$$$$$$, $$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$. $$-$$$$$$, $$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$ $$$ $$$$$$$$, $$$ $ $$$$$$$$$$$$$$ $$$$$$$$ $$$ $$$$$$$$$$$$$ $$ $$$$$$$$$$$$$$. $-$$$$$$$, $$$ $$$$$$$$$ $ $$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$, $$$ $$$$$$$$ $$$$$$$$$$ $$$$$$ $$$ $$$$$$ $ $$$$$$$$$, $$$$$ $$$$$$$$$$$$ $$$$$$$. $$$$$$ $$$$$$$ $$$$$$$ $$$$$ $ $$$$ $$$$$$$$$$, $$$$$$$$ $$ $$$$$$$ $$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$$ ($$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$) $ $$$$$$$$$$$$$$, $$$$$$$$$$$$ $ $$$, $$$ $$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$ $$$$$$$ $$$$$ $$$$$$$$$ $ $$$$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$. $$$ $$$$$$$$$$$ $$$$ $$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$$$$, $$$$$ $$$ $$$$$$$$$$$ $$$$$$$ $$$$$$, $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $ $$$$$ $, $$$ $$$ $$$$$$$$$$$, $$$$$$$$$ $$$$$$. $ $$$$$, $$$$$$$$$ $$$$$$$ $ $$$$$$ $$$$$$ $$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$ $$$ $$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$$$$$$$$$.
Рассмотрим более подробно фундаментальные принципы, лежащие в основе построения деревьев принятия решений, а также современные тенденции развития данного метода. Ключевым элементом любого алгоритма построения дерева является критерий выбора атрибута для расщепления узла. Этот критерий определяет, какой признак и какое пороговое значение обеспечат максимальную однородность результирующих подмножеств данных. Наиболее распространёнными критериями являются энтропия, используемая в алгоритмах семейства ID3 и C4.5, и индекс Джини, применяемый в алгоритме CART. Энтропия, заимствованная из теории информации, измеряет степень неопределённости или хаоса в данных. Чем меньше энтропия в подмножестве, тем более оно однородно с точки зрения целевой переменной. Выигрыш в информации (information gain) рассчитывается как разность между энтропией родительского узла и средневзвешенной энтропией дочерних узлов. Алгоритм выбирает тот признак, который даёт наибольший выигрыш в информации. Индекс Джини, в свою очередь, измеряет вероятность неправильной классификации случайно выбранного объекта, если его метка класса будет назначаться случайным образом в соответствии с распределением классов в данном узле. Чем меньше значение индекса Джини, тем чище узел. Оба критерия в целом дают схожие результаты, однако индекс Джини часто оказывается более вычислительно эффективным, так как не требует вычисления логарифмов. Важно отметить, что выбор критерия может влиять на структуру получаемого дерева, особенно в случаях, когда признаки имеют разное количество возможных значений. Как подчёркивает в своей работе Д.С. Петров, для задач с большим количеством категориальных признаков с неравномерным распределением значений предпочтительнее использовать нормализованный выигрыш в информации (gain ratio), который устраняет смещение в пользу признаков с большим числом значений [27].
Современные исследования в области деревьев принятия решений направлены на преодоление их фундаментальных ограничений, в первую очередь склонности к переобучению и нестабильности. Переобучение возникает, когда дерево становится слишком глубоким и начинает запоминать шумовые выбросы и частные закономерности обучающей выборки, теряя способность к обобщению на новых данных. Для борьбы с этим явлением разработаны два основных подхода: ограничение роста дерева (pre-pruning) и отсечение ветвей после полного построения (post-pruning). Ограничение роста предполагает остановку разбиения узла на основе некоторых критериев, таких как минимальное количество объектов в узле, максимальная глубина дерева или минимальное улучшение критерия расщепления. Отсечение ветвей, напротив, позволяет сначала построить полное дерево, а затем удалить те поддеревья, которые не дают статистически значимого улучшения точности на валидационной выборке. Наиболее распространённым методом отсечения является cost-complexity pruning (отсечение по стоимости сложности), который балансирует между точностью дерева на обучающих данных и его сложностью (количеством листовых узлов). Этот метод находит оптимальное поддерево, минимизирующее сумму ошибки классификации и штрафа за сложность, умноженного на параметр регуляризации. Выбор правильной стратегии отсечения является критически важным для получения модели, которая будет хорошо обобщать на новые данные. Современные библиотеки машинного обучения, такие как scikit-learn, предоставляют удобные инструменты для реализации обоих подходов, позволяя настраивать гиперпараметры дерева для достижения оптимального баланса между смещением и дисперсией.
Ещё одним важным направлением развития является повышение устойчивости деревьев решений к небольшим изменениям во входных данных. Как уже отмечалось, классические деревья решений обладают высокой дисперсией, то есть их структура может существенно меняться при незначительном изменении обучающей выборки. Это связано с жадной природой алгоритма построения: решение о расщеплении на верхних уровнях дерева принимается локально оптимальным образом, и любое изменение на ранних этапах может кардинально изменить всю последующую структуру. Для решения этой проблемы были разработаны ансамблевые методы, такие как случайный лес (Random Forest) и градиентный бустинг (Gradient Boosting). Случайный лес строит множество деревьев решений на случайных подвыборках исходных данных и случайных подмножествах признаков, а затем усредняет их прогнозы. Это позволяет значительно снизить дисперсию и повысить устойчивость модели, сохраняя при этом интерпретируемость на уровне отдельных деревьев (хотя ансамбль в целом уже сложнее для интерпретации). Градиентный бустинг, в свою очередь, строит деревья последовательно, каждое новое дерево корректирует ошибки предыдущих, что позволяет добиться очень высокой точности, но требует более тщательной настройки гиперпараметров для предотвращения переобучения. Оба метода широко используются на практике и являются стандартом в современных соревнованиях по машинному обучению. В контексте данной работы важно понимать, что разработка собственного алгоритма дерева решений должна учитывать необходимость интеграции механизмов регуляризации и, возможно, ансамблирования для достижения конкурентоспособных результатов.
Отдельного $$$$$$$$ $$$$$$$$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$ $$$$$ $$$$$$, $$$$$$$ $$$$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$$$$$. $$$$$$$$$$$$ $$$$$$$$$, $$$$$ $$$ $$.$, $$$$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$ $$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$: $$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$$$, $ $$$$$, $$$$$$$$$$$$$$$$ $$$$ $$$$$$$$, $$$ $$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$. $$$ $$$$$$$$$$$$$ $$$$$$ $$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$ $$ $$$$$$$$$$$$ $$ $$$$ $$$$$$ $$$$ $ $$$$$$$$$$$$$$$$ $$$$$$, $ $$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$ $$$$$$ $$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$. $$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ ($$$$$$$$$$) $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ ($$$$$$$$, $$$$$$$, $$$$$$$$ $$$ $$$$$) $$$ $$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$ ($$$$$$$$$ $$$$$$), $$$$$$$ $$$$$$$ $$$$$$$$$$$$$$ $$$$$$$, $$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$, $ $$$$$$$$$$ $$$ $$$ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$. $$$$$ $$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$ $$ $$$$$$$$ $$$$$$, $$$$$$$$ $$$$ $$$$ $$$$$$$$$ $$$$$$. $ $$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$ [$].
$ $$$$$$$$$ $$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$ $ $$$$$$$ $$$$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$ ($$$$$$$$$$$ $$, $$$), $ $$$$$$$ $$$$$$$ $$$$$$ $ $$$$ $$$$$$$$$$$ $$$$$$$$ $$$$. $$$$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$ $ $$$$$$$$$$ $$$$ $$$$$$$$ $$$$$$$ $$$ $$$$$$$$$$$ $$$$$$$ $$$$$$ $$ $$$$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$$, $$$ $$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$, $$$$$ $$$ $$$$$$$$, $$$$$$$ $ $$$$$. $$$$$ $$$$, $$$$$$$ $$$$$$$ $$$$$ $$$$$$$ $$$$$ $$$ $$$$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$, $$$$$$$$, $ $$$$$$$ $$$$$$ $$$$$$ $$$$$$$ $ $$$$$$ $$$$$$$$$$$$ ($$$$ $$$$$$$$ $$$$), $$$ $ $$$$$$ $$$$ $$$$$$ $$$$$$$$$$$$ $$ $$$$$ $$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$$$, $$$ $$$$$$$$$ $$$$$$$$ $$$$$ $$$$$$$ $ $$$$$$$$$$ $$$$$$$ $$$$$$$. $$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$ $ $$$$$$$$$$$$$ $$ $$$$$$$ $$$ $$$$$$$$$$ $$$$$$$, $$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $ $$$$$ $$$$$$$$$$$$$$$$ $$$$$$, $$$$$$$ $$$$$ $$$$ $$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$. $$$$$ $$$$$$$, $$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$$$$, $$$$$$$ $ $$$$ $$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$ $$$$$$$, $$$ $ $$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$$$ $$ $$$$$$$$$ $$ $$$$$$$$, $$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$$$.
$$$$$ $$$$$$$, $$$$$$$$$$$ $$$$$$ $$$$$$$$$$, $$$ $$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$, $$$$$$$$$ $$$$$$$$$$ $$$$ $$$$$$$$ $$ $$$$$$$ $$$$$$$$$$$$$$ $$$$$$$ $$ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$. $$$$$$$$$ $$$$$$$$$, $$$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$ $$$$$$, $$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$$$$$, $$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$$, $$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$. $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$ $ $$$$ $ $$$$$$$$$ $$$$$$, $ $$$$$ $$ $$$$$$$$$$ $$ $ $$$$$ $$$$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$. $$$$$$$$$ $$$$ $$$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$, $$$$$$$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$ $$$$$$.
Математические и статистические основы построения деревьев решений
Фундаментом любого алгоритма построения дерева принятия решений является математический аппарат, позволяющий количественно оценивать качество разбиения данных на каждом узле и выбирать оптимальные признаки для этого разбиения. Основная задача на этапе построения дерева заключается в том, чтобы рекурсивно разделить обучающую выборку на подмножества, каждое из которых будет максимально однородным с точки зрения целевой переменной. Для формализации понятия однородности используются различные меры неопределённости, заимствованные из теории информации и статистики. Наиболее широкое распространение получили две меры: энтропия Шеннона и индекс Джини. Энтропия, обозначаемая как H(S) для множества S, вычисляется по формуле H(S) = -Σ p_i * log₂(p_i), где p_i представляет собой долю объектов i-го класса в данном множестве. Значение энтропии варьируется от 0 (когда все объекты принадлежат одному классу) до log₂(k) (когда классы распределены равномерно, где k — количество классов). Индекс Джини, в свою очередь, рассчитывается как G(S) = 1 - Σ p_i² и также принимает значения от 0 до (k-1)/k. Обе меры достигают минимума при полной однородности множества и максимума при равномерном распределении классов. Выбор между энтропией и индексом Джини часто обусловлен вычислительными соображениями и спецификой задачи, однако на практике оба критерия демонстрируют сопоставимые результаты. Как отмечает И.В. Кузнецов, в задачах с большим количеством классов индекс Джини может быть предпочтительнее из-за более низкой вычислительной сложности [6].
На основе выбранной меры неопределённости строится критерий качества расщепления, который позволяет оценить, насколько эффективно данный признак разделяет данные на однородные подгруппы. Для алгоритмов семейства ID3 и C4.5 таким критерием является выигрыш в информации (information gain), который вычисляется как разность между энтропией родительского узла и средневзвешенной энтропией дочерних узлов. Чем больше выигрыш в информации, тем лучше признак разделяет данные. Однако этот критерий имеет существенный недостаток: он систематически отдаёт предпочтение признакам с большим количеством возможных значений. Для устранения этого смещения был предложен нормализованный выигрыш в информации (gain ratio), который делит выигрыш в информации на внутреннюю информацию (intrinsic information) признака, измеряющую энтропию распределения объектов по значениям этого признака. В алгоритме CART используется иной подход: качество расщепления оценивается через уменьшение индекса Джини или суммы квадратов ошибок (для регрессионных задач). При этом для каждого возможного разбиения по непрерывному признаку вычисляется значение критерия, и выбирается то разбиение, которое даёт максимальное улучшение. Важно подчеркнуть, что выбор критерия расщепления является критическим решением, определяющим структуру всего дерева и, в конечном счёте, его прогностическую способность.
Математические основы деревьев решений не ограничиваются только критериями расщепления; они также включают методы оценки значимости признаков и механизмы регуляризации. Значимость признака в дереве решений может быть оценена как суммарное уменьшение неопределённости (например, суммы индексов Джини или энтропии) во всех узлах, где этот признак использовался для расщепления, взвешенное на количество объектов, проходящих через эти узлы. Это позволяет не только построить модель, но и получить ранжированный список признаков по степени их влияния на целевую переменную, что является важным инструментом для анализа данных и отбора признаков. Механизмы регуляризации, $$$$$ как $$$$$$$$$$$ $$$$$$$ $$$$$$, $$$$$$$$$$$$ $$$$$$$$$$ объектов в $$$$$ и $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ расщепления, также $$$$$ $$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$$. $$$ $$$$$$$$$$ на $$$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$$$$$ на $$$$$$$$$ $$$$$$. $ $$$$$ $$$$$$ $$$$$$ $$$$$$$$$$$$$$$ $$$$$$$$, эти методы $$$$$ $$$$$$$$$$$$$ как $$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$ ($$$$) и $$$$$$$$$$ ($$$$$$$$): $$$$$ $$$$$$$$ и $$$$$$$ $$$$$$$ $$$$$ $$$$$$ $$$$$$$$, но $$$$$$$ $$$$$$$$$, в $$ $$$$$ как $$$$$$$ $$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$$$$.
$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$ $$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$. $$$ $$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$: $$$$$$$$ ($$$$$$$$), $$$$$$$ ($$$$$$), $$-$$$$ $$$ $$$$$ $$$$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$$$$ $$$$$$ ($$$), $$$$$$$ $$$$$$$$$$ $$$$$$ ($$$) $$$ $$$$$$$$$. $$$$$$ $$$$$$$ $$$$$$ $$$$$$$$ $$ $$$$$$$$$ $$$$$$$ $$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$. $$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$-$$$$$$$$$, $$$$$ $$$ $-$$$$$$$ $$$$$-$$$$$$$$$ ($-$$$$ $$$$$-$$$$$$$$$$), $$$$$ $$$$$$ $$$$$$$$$$$ $$ $ $$$$$$, $ $$$$$$ $$$$$$$$$ $$ $-$ $$$$$$, $ $$$$$$$$$$$ $$ $$$$$$$$$$, $ $$$ $$$$$$$$$ $$$$$$$$$$$ $ $$$. $$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$ $ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$$. $$$$$ $$$$, $$$ $$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$ $$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$, $$$$$ $$$ $-$$$$ $$$$$$$$$ $$$ $$$$ $$$$$$$$$. $$$$$$ $$$$$$$$ $$$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$ $$$$$$ ($$$$$$$), $$$ $$$$$$$$$$ $$$$$$$$$$, $$$$$$$$ $$ $$$$$$$$$ $$$$$$$$ $$ $$$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $$$ $$$ $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$. $ $$$$$$$$$ $$.$ $$$ $$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$$$ $$$$$$$$$ ($$$$$$$$$$$ $$$$$$$), $$$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$ $$ $$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$ [$$].
$$$$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$ $$ $$$$$$$$$$ $$$$$ $$$$$$ $$$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$ $ $$$$ $ $$$$$$$$, $ $$$$$ $$ $$$$$$$$ $$$$$$$, $$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$$$$$$$ $$$$$$$. $$$$$ $$ $$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$, $$$ $$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$$$, $$$ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$ $ $$$$$$$ $$$$$$$, $$$$$ $$$$$$$$$$$$$$ $ $$$$$$, $$ $$$$$$ $$$$$$$$. $$$$$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$ $$ $$$$$ $$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$ $$$$$$$, $$$$$ $$$ $$$$$$$$$$$ $$$$$$$$-$$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$$. $$$ $$$$$$$$ $$$$$ $$$$ $$$$$ $$$$$$$$$$$ $ $$$$$$$$ $ $$$$ $$ $$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$. $$$$$ $$$$, $$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$, $$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $ $$$$$$ $ $$$$$$$$ $$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$$$$$. $$$$$ $$$$$$$, $$$$$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$, $$$$$$$ $ $$$$$$ $$$$$$$$ $$$$$$$, $$$$$$$$$$ $$$$$$$$$$$, $$$$$$$$$ $$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$, $$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$$$ $$$$$$$.
$$$$$$$$$$$$$ $$$$$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$ $ $$$ $$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$. $$$$$$ $$$$$$$$$ $$$$$$$$$$$, $$$$$$$ $$$$$$ $$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$. $$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$, $$$$$ $$$ $$$, $$.$ $ $$$$, $$$$$$$$ $$$$$$$, $$$ $$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$ $$$$$$$$.
Продолжая рассмотрение математических и статистических основ, необходимо уделить особое внимание методам обработки непрерывных признаков, которые являются неотъемлемой частью большинства реальных наборов данных. В отличие от дискретных признаков, имеющих конечное множество значений, непрерывные признаки требуют специальной процедуры поиска оптимального порога разбиения. Для каждого непрерывного признака все его значения в обучающей выборке сортируются в порядке возрастания, после чего рассматриваются все возможные пороги, расположенные между соседними значениями. Для каждого такого порога вычисляется значение критерия расщепления (выигрыш в информации, уменьшение индекса Джини или суммы квадратов ошибок), и выбирается тот порог, который даёт наилучший результат. Вычислительная сложность этой процедуры составляет O(m * n * log n), где m — количество признаков, а n — количество объектов в выборке, что может быть существенным для больших наборов данных. Для ускорения процесса иногда используется стратегия рассмотрения только квантилей распределения значений признака, а не всех возможных порогов. В алгоритме C4.5 применяется дополнительная оптимизация: порог выбирается таким образом, чтобы максимизировать выигрыш в информации, при этом учитывается, что разбиение должно быть сбалансированным, то есть в каждую ветвь должно попадать достаточное количество объектов для дальнейшего построения дерева. Важно отметить, что выбор порога для непрерывного признака может быть чувствителен к выбросам, поэтому перед построением дерева рекомендуется проводить предварительную обработку данных, включая удаление или корректировку аномальных значений [14].
Существенное значение для практического применения деревьев решений имеет также обработка пропущенных значений, которые часто встречаются в реальных данных. Пропуски могут возникать по разным причинам: ошибки при сборе данных, отказ респондентов отвечать на определённые вопросы, технические сбои в работе датчиков. Игнорирование объектов с пропущенными значениями может привести к потере значительного объёма информации и смещению оценок. Классические алгоритмы деревьев решений предлагают несколько подходов к решению этой проблемы. В алгоритме C4.5 применяется метод, основанный на взвешивании: при вычислении критерия расщепления объекты с пропущенным значением рассматриваются частично, с весом, пропорциональным доле объектов, для которых значение признака известно. При классификации нового объекта с пропущенным значением он направляется по всем ветвям узла с соответствующими весами, и окончательное решение принимается на основе взвешенного голосования листовых узлов. Альтернативный подход, используемый в алгоритме CART, заключается в применении суррогатных расщеплений (surrogate splits): для каждого узла строится несколько альтернативных правил разбиения, использующих другие признаки, которые наиболее сильно коррелируют с исходным признаком. Если для объекта значение основного признака отсутствует, то используется суррогатное правило. Этот метод позволяет более эффективно использовать информацию из других признаков и часто даёт лучшие результаты, чем простое взвешивание. В современных реализациях деревьев решений часто комбинируются различные подходы: сначала предпринимается попытка заполнить пропущенные значения с помощью методов импутации (например, средним, медианой или модой), а затем строится дерево с использованием стандартных алгоритмов. Выбор конкретного метода зависит от природы данных, доли пропусков и специфики решаемой задачи.
Отдельного рассмотрения заслуживают регрессионные деревья, которые являются обобщением деревьев классификации на случай непрерывной целевой переменной. В регрессионных деревьях каждый листовой узел содержит не метку класса, а числовое значение, которое обычно является средним значением целевой переменной для всех объектов, попавших в данный лист. Критерий расщепления в регрессионных деревьях также отличается от классификационных: вместо энтропии или индекса Джини используется уменьшение суммы квадратов ошибок (sum of squares error) или средней абсолютной ошибки (mean absolute error). Для каждого возможного разбиения вычисляется сумма квадратов отклонений значений целевой переменной от среднего в каждом дочернем узле, и выбирается то разбиение, которое даёт максимальное уменьшение этой суммы. Регрессионные деревья обладают теми же преимуществами, что и классификационные: они интерпретируемы, не требуют масштабирования признаков и устойчивы к выбросам. Однако они также подвержены переобучению и могут давать ступенчатые прогнозы, что не всегда желательно. Для сглаживания прогнозов используются ансамблевые методы, такие как случайный лес регрессии или градиентный бустинг, которые усредняют прогнозы множества деревьев, получая более гладкую и точную аппроксимацию. В контексте данной работы важно понимать, что разрабатываемый алгоритм должен быть универсальным и поддерживать как задачи классификации, так и регрессии, что потребует реализации различных критериев расщепления и стратегий формирования листовых узлов [30].
Важным аспектом математических основ деревьев решений является также оценка сложности модели и её влияние на обобщающую $$$$$$$$$$$. $$$$$$$$$ $$$$$$ $$$$$ $$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$: $$$$$$$$$$$ $$$$$, $$$$$$$$ $$$$$$, $$$$$$$$$$$ $$$$$$$ $$$ $$$$$ $$$$$$$$$$$ $$$$$$. $$$ $$$$$$$, $$$$$ $$$$$$$ $$$$$$$ $$$$$ $$$$$$$ $$$$$$$$, $$ $$$$$$$ $$$$$$$$$, $$$ $$$$$ $$$$$$$$$ $ $$$$$$$$$$$$. $$$ $$$$$$ $$$$$$$$$$$ сложности модели $$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$ $ $$$$$$$$$$$$$$, $$$$$$$ $$$$$$$$$$$$$ $ $$$$ $$$$$$$ $$$$$$$$$: $$$$($) = $$$$$($) + $ * $$$$$$$$$$($), $$$ $$$$$($) — $$$$$$ $$$$$$ на $$$$$$$$$ $$$$$$$, $$$$$$$$$$($) — $$$$ сложности $$$$$$ ($$$$$$$$, $$$$$$$$$$ $$$$$$$), $ $ — $$$$$$$$ $$$$$$$$$$$$$, $$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$ $$$$$$$$$ и $$$$$$$$$$. $$$$ $$$$$$$ $$$$$ $ $$$$$$ $$$$$$ $$$$-$$$$$$$$$$ $$$$$$$, $$$$$$$$$$$$$ $ $$$$$$$$$ $$$$. $$$$$$$$ $ $$$$$$$$$$ $ $$$$$$$ $$$$$-$$$$$$$$$: $$$ $$$$$$$ $$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$, и $$$$$$$$$$ $$, $$$$$$$ $$$$ $$$$$$$$$$ $$$$$$ на $$$$$$$$$$$$$ $$$$$$$. $$$$$ $$$$$$$$, $$$ $$$$$ $$$$$$$$$$$ $$$$$$$$ $ является $$$$$$$$$$$ $$$ $$$$$$$$$ модели $ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$. $$$$$$$ $$$$$ $$$$$$$$ $ $$$$$$$$ $ $$$$$$$$$$$$, $ $$$$$$$ $$$$$$$ — $ $$$$$$$$$$$$. $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$$$$$ $, $$$$$ $$$ $$$$ $$$$$$ $$$ $$$$$$ $$$$$$, $$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$ и $$$$$$$ $$$$$$$$$.
$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$ $ $$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$ $$$ $$ $$$$$$$$$$. $$$$$$$$ $$$$$ $$$$$$$$: $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$ $$$$$$$ $$$$$$$$ $ $$$$$$$ $$$$$$$$$$ $$$$$$, $$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$ $$$$$$$$$$$$, $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$ $$$$$$. $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$$$$ $$$$$$$$$$ $ $$$$$$ $$$$$$ $($ * $$ * $), $$$ $ — $$$$$$$$$$ $$$$$$$$$, $ — $$$$$$$$$$ $$$$$$$$, $ $ — $$$$$$$ $$$$$$. $$$ $$$$$$$ $$$$$$$ $$$$$$ $$$ $$$$$ $$$$ $$$$$$$$$$$, $$$$$$$ $$ $$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$: $$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$, $$$$$$$$$$$$$ $$$$$$$$ $$$$$$ $$$$ $-$ $$$$$$ $$$ $$$$$$$$ $$$$$$ $$$$$$$, $$$$$$$$$$$ $$$$$$$ $$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $ $$$$$. $$$$$ $$$$, $$$ $$$$$$$$$ $$$$$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$, $$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$ $$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$ $$$$$$$$$$ $$$$$ $$$$$$$$$$. $$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$: $$$$$$$$ $$$$$$ $ $$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$, $$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$ $$$$$$ $ $$$$$$$ $$$$$$$$$$$ $$$$$$$ $$$$$$$$ [$].
$$$$$ $$$$$$$, $$$$$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $ $$$$$$$$, $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$, $$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$, $$$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$ $$$$$$$$$ $$$$$$, $ $$$$$ $$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$$$$. $$$$$$$$ $$$$$$$$$ $$$$ $$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$ $$$$$$. $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$, $$$$$ $$$ $$$, $$.$ $ $$$$, $$$$$$$$ $$$$$$$, $$$ $$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$, $ $$$$$$$ $$ $$$$$$$ $ $$$$$$ $$$$$$$.
Классические алгоритмы построения деревьев: ID3, C4.5, CART
Классические алгоритмы построения деревьев принятия решений, разработанные в 1980-1990-х годах, до сих пор остаются фундаментальной основой для понимания принципов работы данного метода машинного обучения. Несмотря на появление более совершенных ансамблевых подходов, изучение алгоритмов ID3, C4.5 и CART является необходимым этапом для любого исследователя, стремящегося к глубокому пониманию предметной области. Каждый из этих алгоритмов внес свой уникальный вклад в развитие теории и практики деревьев решений, предложив оригинальные решения ключевых проблем, таких как выбор критерия расщепления, обработка непрерывных признаков и борьба с переобучением. Анализ сильных и слабых сторон этих алгоритмов позволяет выявить направления для дальнейшего совершенствования и разработки собственных модификаций.
Алгоритм ID3 (Iterative Dichotomiser 3), предложенный Джоном Россом Куинланом в 1986 году, является одним из первых и наиболее известных алгоритмов построения деревьев решений. Основная идея ID3 заключается в рекурсивном разбиении обучающей выборки на подмножества на основе выбора признака, который обеспечивает максимальный выигрыш в информации (information gain). Критерием выбора признака служит энтропия Шеннона: алгоритм вычисляет энтропию текущего множества, затем для каждого признака рассчитывает средневзвешенную энтропию дочерних узлов после разбиения, и выбирает тот признак, который даёт наибольшее уменьшение энтропии. Процесс продолжается рекурсивно для каждого дочернего узла до тех пор, пока не будет выполнено одно из условий остановки: все объекты в узле принадлежат одному классу, не осталось признаков для разбиения или в узле не осталось объектов. ID3 обладает рядом существенных ограничений: он может обрабатывать только дискретные признаки, не поддерживает работу с пропущенными значениями, склонен к переобучению и отдаёт предпочтение признакам с большим количеством возможных значений. Как отмечает А.Б. Соколов, несмотря на свою историческую значимость, ID3 редко используется на практике в чистом виде из-за этих ограничений, однако он является отличной отправной точкой для изучения принципов построения деревьев решений [5].
Алгоритм C4.5, разработанный тем же автором в 1993 году, является существенным усовершенствованием ID3 и устраняет большинство его недостатков. Главным нововведением C4.5 стало использование нормализованного выигрыша в информации (gain ratio), который делит выигрыш в информации на внутреннюю информацию (intrinsic information) признака, измеряющую энтропию распределения объектов по значениям этого признака. Это позволяет устранить смещение в пользу признаков с большим количеством значений. Кроме того, C4.5 приобрёл способность обрабатывать непрерывные признаки путём поиска оптимального порога разбиения, как было описано в предыдущем разделе. Алгоритм также реализует механизм обработки пропущенных значений, основанный на взвешивании объектов, и метод пессимистического отсечения ветвей (pessimistic pruning) для борьбы с переобучением. Пессимистическое отсечение оценивает ошибку на обучающей выборке с корректировкой на основе биномиального распределения и удаляет те поддеревья, которые не дают статистически значимого улучшения точности. Ещё одним важным усовершенствованием стало преобразование обученного дерева в набор правил (rule post-pruning), что часто повышает интерпретируемость модели и позволяет дополнительно упростить дерево. C4.5 долгое время оставался стандартом де-факто в области деревьев решений и был включён во многие коммерческие и открытые программные пакеты. В российской научной литературе C4.5 часто рассматривается как эталонный алгоритм для сравнения при разработке новых методов построения деревьев решений [$$].
$$$$$$$$ $$$$ ($$$$$$$$$$$$$$ $$$ $$$$$$$$$$ $$$$$), $$$$$$$$$$$$ $$$ $$$$$$$$$, $$$$$$$$ $$$$$$$$$, $$$$$$$$ $$$$$$$ $ $$$$$$$$ $$$$$$$ $ $$$$ $$$$, $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$ $$$$$$ $ $$$$$$$$$$ $$$$$$$$ $$$$$$$, $$$$$$$ $$$$$$$$$$ $$ $$$ $ $$.$ $$$ $$ $$$$$$$$$$$$ $$$$$$$$$, $$$ $ $$ $$$$$ $$$$$$$$$$$. $ $$$$$$$ $$ $$$$$$$$$$ $$$$$$$$$ $$$, $$$$ $$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$, $$ $$$$ $$$$$$ $$$$$$$$$$ $$$$ $$$$$ $$$$$ $$$ $$$$$$$$ $$$$$. $$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$ $ $$$$$$$ $$$$$$, $ $$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$. $ $$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$ $$$$$$$$$$ $$$$$$ $$$$$ $$$ $$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$ $$$$$ $$$$$$$$$ $$$$$$ $$$ $$$$$ $$$$$$$$$. $$$ $$$ $$$$$$$$$$, $$$$$$ $$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$, $$$ $$$$$$$$, $$$ $$$$$$$$ $$$$$ $$$ $$$$$$$ $$$$$$$ $$$$$$. $$$ $$$$$$ $ $$$$$$$$$$$$$ $$$$ $$$$$$$$$$ $$$$$ $$$$-$$$$$$$$$$ $$$$$$$, $$$$$$$ $$$$$$$$$$$$ $$$$$$$ $$$$$$$$$, $$$$$$$$$$ $$$$$$ $$ $$$$$$$$$ $$$$$$$ $ $$$$$ $$ $$$$$$$$$ $$$$$$. $$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$ $ $$$$$$$ $$$$$-$$$$$$$$$, $$$ $$$$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$ $ $$$$$$$$$$ $$$$$$. $$$$ $$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$, $$$ $$$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$$$ $$ $$$$$$$$$ $ $$$$$$$ $$$$$$$$$$$$, $$$$$$$$$$$$ $ $$.$. $$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$ $ $$$$$$$$$$$$$, $$$$ $$$ $ $$$$$$ $$$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$, $$$$$$$ $$$$$$-$$$$$, $ $$$$$$ $$$$$$$$$$$$ $$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$$$, $$$ $ $ $$$$$$$$$$$$ $$$$$$$$$$$ [$$].
$$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$ $$ $$$$$$$ $ $$$$$$ $$$$$$$, $ $$$$$ $$$$$$$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$. $$$, $$$$$$$$ $$ $$$$ $$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$, $$$$$ $$$$$$$ $$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$. $$.$ $$$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$$$$$, $$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$ $ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$ $$$$$$. $$$$$$ $$.$ $$$$$ $$$$$$$ $$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$ $$$$$$ $ $$$$$, $$$ $$$$$$$$$ $$ $$$$$$ $ $$$$$$$$$$. $$$$, $ $$$$ $$$$$$$, $$$$$$$$$$ $$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$, $$$$$$$$$$ $$ $$$$$$$$ $$$$$$$$ $ $$$$$$$ $$$$$. $$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$ $$$ $$$$$ $$$$$$$$$$$$$, $$$ $ $$$ $$$$$$$$$, $ $$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$ $$$$$$. $$$$$$$$ $$$$$$$$$$$ $$$$ $$$$$$$$ $$$ $$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$, $$$$$ $$$$ $$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$, $$$ $$$$$$, $$$ $$$$$ $$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$.
$$$$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$ $$$$$$$$ $$$$$$$ $$$$$ $$$$$$$$$$ $$ $$$$$$$$$$$$$$ $$$$$$ $$$$ $$$$$$$$$$$$$ $$$$$$$$$$. $$$$$$$$, $$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$ $$ $$.$ $$$$$$ $ $$$$$$$$ $$$$$$$$$$ $ $$$$-$$$$$$$$$$ $$$$$$$ $$ $$$$. $$$$$ $$$$, $$$$$$$ $$$$$$$$$$$$$$$ $$$$$$, $$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$ $$$$$$$$ $ $$$$ $ $$$$$$$$, $ $$$$$ $$$$$$$$ $$ $$$$$$$$$$$$$$$$$$ $$ $$$$ $$$$$$$$$$ $$$$$ $$$$$$$$$$ $$$$$$$$. $ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$$$ $$$, $$.$ $ $$$$ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$$$$$$ $$$$$$$$$: $$ $$$$$$ $$$$$$$$$$$$ $$$ $$$$$$$$$$, $$$ $ $$$$$$$$$$$ $$$$$$$$, $$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$, $$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$ $ $$$$$$$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$. $$$$$ $$$$$$$$$$ $$$$$$$ $ $$$$$$$$$ $$$$$ $$$$$$$$$$$ $$ $$$$$$ $$$$$$$$$$$$$$ $$$$$$$ $$ $$$$$$$$$$$$$ $$ $$$$$$$$$ $$$$$$$ $$$$$$.
Продолжая сравнительный анализ классических алгоритмов, необходимо более детально рассмотреть особенности их программной реализации и вычислительной эффективности. Алгоритм ID3, будучи наиболее простым, реализуется достаточно тривиально: рекурсивная функция на каждом шаге вычисляет энтропию для всех признаков, выбирает наилучший и разбивает данные на подмножества. Однако его практическая ценность ограничена, поскольку он не может работать с непрерывными данными и не имеет механизмов предотвращения переобучения. Алгоритм C4.5, напротив, требует более сложной реализации, включающей сортировку значений непрерывных признаков, вычисление gain ratio, обработку пропущенных значений и процедуру отсечения ветвей. Вычислительная сложность C4.5 составляет O(m * n²) в худшем случае, что может быть проблематично для больших наборов данных. Реализация CART также нетривиальна, но она более унифицирована благодаря использованию бинарных разбиений и единого подхода к обработке различных типов данных. Важно отметить, что все три алгоритма могут быть существенно ускорены за счёт предварительной сортировки данных и использования эффективных структур данных. В современных библиотеках, таких как scikit-learn, реализована оптимизированная версия CART, которая использует технику кэширования результатов вычислений и параллельной обработки для достижения высокой производительности. При разработке собственного алгоритма следует учитывать эти аспекты и стремиться к реализации, обеспечивающей приемлемое время обучения на наборах данных средней размерности [1].
Отдельного внимания заслуживает вопрос интерпретируемости результатов, получаемых с помощью рассмотренных алгоритмов. Все три алгоритма позволяют визуализировать построенное дерево в виде графа, что является одним из главных преимуществ деревьев решений перед другими методами машинного обучения. Однако интерпретируемость может существенно снижаться при увеличении глубины и сложности дерева. Алгоритм C4.5 предлагает дополнительный механизм преобразования дерева в набор правил, который часто оказывается более компактным и понятным для человека. Каждое правило представляет собой конъюнкцию условий, ведущих к определённому листу, и может быть легко проверено и интерпретировано экспертом в предметной области. CART, в свою очередь, предоставляет возможность оценить важность признаков на основе суммарного уменьшения индекса Джини, что позволяет выделить наиболее значимые факторы, влияющие на целевую переменную. Эти возможности делают деревья решений незаменимым инструментом в тех областях, где требуется не только точный прогноз, но и понимание причин, по которым этот прогноз был сделан. В контексте данной работы интерпретируемость разрабатываемого алгоритма будет рассматриваться как одно из ключевых требований, и будут предусмотрены средства для визуализации дерева и оценки важности признаков.
Важным аспектом, который необходимо учитывать при разработке собственного алгоритма, является проблема несбалансированных данных. Классические алгоритмы ID3, C4.5 и CART чувствительны к дисбалансу классов: если один класс значительно преобладает над другими, дерево будет стремиться к построению правил, которые хорошо классифицируют доминирующий класс, но игнорируют редкие классы. Это происходит потому, что критерии расщепления, такие как энтропия и индекс Джини, оптимизируют общую точность, которая может быть высокой даже при плохом распознавании редких классов. Для борьбы с этим явлением используются различные подходы: взвешивание объектов разных классов, использование специализированных критериев расщепления (например, основанных на F-мере или AUC-ROC), применение методов семплирования (oversampling редкого класса или undersampling доминирующего класса) и построение ансамблей деревьев на сбалансированных подвыборках. В алгоритме C4.5 и CART нет встроенных механизмов для работы с дисбалансом, поэтому при разработке собственного алгоритма необходимо предусмотреть возможность использования взвешенных критериев или интеграции с методами предобработки данных. Это особенно важно, поскольку многие реальные задачи, такие как выявление мошеннических транзакций или диагностика редких заболеваний, характеризуются сильным дисбалансом классов [24].
Ещё одним направлением совершенствования классических алгоритмов является повышение их устойчивости к шуму в данных. Шум может проявляться в виде ошибочных меток классов, выбросов в значениях признаков или случайных флуктуаций. Классические алгоритмы, особенно ID3, склонны к переобучению на шумовых выбросах, что приводит к построению чрезмерно сложных деревьев с низкой обобщающей способностью. C4.5 частично решает эту проблему с помощью отсечения ветвей, но этого может быть недостаточно при высоком уровне шума. CART, $$$$$$$$$ $$$$$$$$$$$$$ $$$$-$$$$$$$$$$ $$$$$$$, $$$$$ $$$$$$$$ к шуму, $$$$$$ $ $$ может $$$$$$$$ $$ $$$$$$$$$$$$$$. $$$ $$$$$$$$$ устойчивости к шуму в $$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$: $$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$ на $$$$$$$ или $$$$$$ $$$$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$, $$$$$ $$$ $$ или $$ $$$$$$$$$$$$$ $$$$$ признаков, $ $$$$$$$$$$ $$$$$$$$$ деревьев, $$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$, $$$$$$ $$$$$$$ $$$$$$$$$ шумовых выбросов. $ $$$$$$ $$$$$$ $$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ устойчивости к шуму в $$$$$$$$$$$$$$$ $$$$$$$$, что $$$$$$$$ $$$$$$$$ $$$ $$$$$$$$$$$$ $$$$$$$$.
$ $$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$ $$$$ $ $$$$$$$$ $$$$$ $$$$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$$. $$$$$$$ $$$$$$$, $$$$$$$$$$$ $ $$$$$$$ $$$, $$.$ $$$ $$$$, $$$$$$$$ $$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$ $$$$$$$$$$$ $$$$$$$, $$$ $$$$$$$$$ $$$ ($$$$$$ $$$$$$) $ $$$$$$$$$$$ $$$$$$$ ($$$$$$$$ $$$$$$$$). $$$$$$$$$ $$$ $$$$$$ $$$$$$$$$ $$$$$$$$ $$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$ $ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$, $ $$$$$ $$$$$$$$$ $$ $$$$$$$$, $$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$ $$$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$$ $$$$$$. $$$$$$$$$$$ $$$$$$$, $ $$$$ $$$$$$$, $$$$$$ $$$$$$$ $$$$$$$$$$$$$$$, $$$$$$ $$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$$$, $$$ $$$$$$$$$ $$$$$$$$ $$$$$ $$$$$$$ $$$$$$$$, $$ $$$$$$$ $$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$. $$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$ $$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$ $ $$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$. $ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$ $$$$$$$$$$$$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$ $$$$$$$, $$$$$ $$$ $$$$$ $$$$ $$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$, $$$ $$$$$$$$ $$$ $$$$$$$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$.
$$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$, $$.$ $ $$$$ $$$$$$$$$ $$$$$$$ $$$$$ $ $$$, $$$ $$$$$$ $$ $$$ $$$$$ $$$$ $$$$$$$ $ $$$$$$ $$$$$$$, $ $$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$. $$$, $$$$$$$$ $$ $$$$ $$$$$$$$$$$$ $$$$$$$$$$, $$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$, $$$ $$$$$$$$$$$$ $$$$$$$$$$$$. $$.$ $$$$$$$$$$$$ $$$$$ $$$$$ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$ $$$$$$, $$ $$$ $$$$$$$$$$ $$$$$$$, $ $$ $$$$$ $$$$ $$$$$ $$$$$$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$. $$$$, $$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$, $$$$$$$$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$ $$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$$, $$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$. $$$ $$$$ $$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$$$$: $$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$ $ $$$$-$$$$$$$$$$ $$$$$$$ $$ $$$$, $$$$$$$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$ $$ $$.$ $$$ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$ $$$$$$ $$$$$$$$, $ $$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$$$$$$$$ $$$$$$$ $ $$$$$. $$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$, $$$$$$$ $$$$$ $$$$$$$$ $ $$$$ $$$$$$$ $$$$$$$$, $$$$$$$$$$$$$$$$$$ $ $$$$$$$$$$$$ $ $$$$$$$$$ $$$$$ $$$$$$, $$$ $$$$$$$$ $$$$$$$$ $$$$$ $$$$$$ $$$$$$$$ $$$$$$.
Постановка задачи и выбор критериев для построения дерева решений
Разработка собственного алгоритма дерева принятия решений начинается с чёткой формализации решаемой задачи и обоснованного выбора ключевых компонентов, определяющих его работу. Прежде всего, необходимо определить тип решаемой задачи: классификация, регрессия или обе одновременно. В рамках данной курсовой работы разрабатываемый алгоритм будет ориентирован на решение задач классификации, поскольку именно этот тип задач наиболее востребован на практике и позволяет наглядно продемонстрировать эффективность деревьев решений. Однако архитектура алгоритма будет спроектирована таким образом, чтобы его можно было легко адаптировать для решения регрессионных задач путём замены критерия расщепления и способа формирования листовых узлов. Формальная постановка задачи классификации выглядит следующим образом: имеется обучающая выборка D = {(x_i, y_i)}, где i = 1, ..., n, x_i ∈ R^m — вектор признаков, описывающий i-й объект, а y_i ∈ {C_1, C_2, ..., C_k} — метка класса, к которому принадлежит данный объект. Необходимо построить модель f: R^m → {C_1, C_2, ..., C_k}, которая для любого нового объекта x_new позволяет предсказать его метку класса с минимальной ошибкой. Дерево решений представляет собой частный случай такой модели, где функция f задаётся в виде иерархической структуры правил.
Вторым важным этапом является выбор критерия расщепления, который будет использоваться для оценки качества разбиения узлов. Как было показано в теоретической части, наиболее распространёнными критериями являются энтропия Шеннона и индекс Джини. Для разрабатываемого алгоритма в качестве основного критерия был выбран индекс Джини, что обусловлено рядом причин. Во-первых, индекс Джини является более вычислительно эффективным, поскольку не требует вычисления логарифмов, что особенно важно при работе с большими наборами данных. Во-вторых, индекс Джини даёт сопоставимые результаты с энтропией на большинстве задач классификации. В-третьих, индекс Джини менее чувствителен к изменениям в распределении классов, что делает его более устойчивым к шуму. Однако для обеспечения гибкости алгоритма будет также реализована поддержка энтропии как альтернативного критерия, который пользователь сможет выбрать при необходимости. Кроме того, для работы с несбалансированными данными будет реализован взвешенный вариант индекса Джини, где веса объектов разных классов могут быть заданы пользователем. Это позволит компенсировать дисбаланс классов и повысить качество классификации редких событий. Как отмечает в своём исследовании П.М. Захаров, выбор критерия расщепления должен быть обоснован спецификой решаемой задачи и характеристиками данных [16].
Третьим ключевым аспектом является определение стратегии обработки непрерывных признаков. Как было показано ранее, для каждого непрерывного признака необходимо найти оптимальный порог разбиения, который максимизирует выбранный критерий. В разрабатываемом алгоритме будет реализован стандартный подход, основанный на сортировке значений признака и переборе всех возможных порогов, расположенных между соседними значениями. Для ускорения этой процедуры будет использована предварительная сортировка данных по каждому признаку, что позволит избежать повторной сортировки на каждом уровне дерева. Кроме того, для предотвращения переобучения будет введено ограничение на минимальное количество объектов в дочерних узлах после разбиения. Это означает, что порог будет считаться допустимым только в том случае, если каждая из двух результирующих групп содержит не менее заданного пользователем минимального количества объектов. Такой подход позволяет избежать построения слишком мелких узлов, которые могут быть обусловлены случайными флуктуациями в данных. Для категориальных признаков будет реализовано разбиение по каждому возможному значению, то есть для каждого значения признака будет создана отдельная ветвь. Однако, если категориальный признак имеет слишком много значений, это может привести к переобучению, поэтому будет предусмотрена возможность ограничения максимального количества категорий или использования бинарного разбиения на $$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ значений.
$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$, $$$$$$$ $$$$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$$$$$. $ $$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$, $$$$$$$$$$ $$ $$$$$$$, $$$$$$$$$$$$ $ $$.$ $ $$$$. $$ $$$$$ $$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$$$$$ $$ $$$$$$$, $ $$ $$$ $$$$$ $$$$$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$ $$$$$$$$$ $$$$$$. $$ $$$$$ $$$$$$$$$$$$$ $$$ $$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$$$$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$$$$$$: $$$$ $$$ $$$$$$$ $$$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$, $$$$$$$$$$ $$ $$$$$$ $$$$$$$$, $$ $$$$$$ $$$$$ $$$$$$$$$ $$ $$$$$$$$$$$$$$$ $$$$$. $$$$ $$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$, $$$$$$ $$$$$ $$$$$$$$$ $ $$ $$$$$, $$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$. $$$$$ $$$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$ $$$$$$ $$-$$ $$$$$$$$$. $$$$$ $$$$, $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$, $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$ $$$$$ $$ $$$$$$$$$ $$$$$$$ $$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$. $$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$$ $$$ $ $$$$$$$$$ $$$$$ $$$$$$ [$].
$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$ $ $$$$$$$$$ $$$$$$$$$ $$$$$$. $$$ $$$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$ $$$ $$$$$$$$$: $$$$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$ ($$$-$$$$$$$) $ $$$$$$$$$$$ $$$$$$$$$ $$$$$$ ($$$$-$$$$$$$). $$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$: $$$$$$$$$$$$ $$$$$$$ $$$$$$, $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $ $$$$ $$$ $$$$$$$$$$$ $$$ $$$$$$$$$, $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $ $$$$$$$$ $$$$ $ $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$. $$$ $$$$$$$$$ $$$$$ $$$$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$ $$$$$ $$ $$$$$$$$$$. $$$$$ $$$$$$$$$$ $$$$$$$ $$$$$$ $$$$$ $$$$$$$$$$$ $$$$$ $$$$-$$$$$$$$$$ $$$$$$$, $$$$$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$ $$$$. $$$$ $$$$$ $$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$ $$$$$$$$$: $$$$($) = $$$$$($) + $ * |$$$$$$($)|, $$$ $$$$$($) — $$$$$$ $$$$$$ $$ $$$$$$$$$ $$$$$$$, |$$$$$$($)| — $$$$$$$$$$ $$$$$$$$ $$$$$, $ $ — $$$$$$$$ $$$$$$$$$$$$$, $$$$$$$ $$$$$$$$$$ $ $$$$$$$ $$$$$-$$$$$$$$$. $$$ $$$$$$$ $$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$, $ $$$$$$$$$$ $$, $$$$$$$ $$$$ $$$$$$$$$$ $$$$$$ $$ $$$$$$$$$$$$$ $$$$$$$. $$$$$$$$$$ $$$$$ $$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$.
$$$$$$$, $$$$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$$$$$$ $$$$$$, $$$$$$$ $$$$$ $$$$$$$$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$ $$$$$$$$$$$ $$$$$$$$$$. $$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$: $$$$$$$$ ($$$$$$$$), $$$$$$$ ($$$$$$), $$$$$$$$ ($$$$$$$$$), $$-$$$$ $ $$$$$$$ $$$ $$$-$$$$$$ ($$$-$$$). $$$ $$$$$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$$$$$$ $-$$$$$$$ $$$$$-$$$$$$$$$, $$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$$ $$$ $$$$$$ $$$$$$$$$$$$$$$. $$$$$ $$$$, $$$ $$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$, $$$$$$$$$$ $$$$$$$$$$$ $$$$$ $ $$$$$$$$. $$$$$$$$$$$ $$$$$$$$$ $$$$$$, $$$$$$$ $$$$$$$$$$$$ $$$$$$$ $$$$$$$$ $$$ $$$$$$$$$$$ $$$$$$$$$. $ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$ $$$$$$ $$ $$$$$$$$$ $$$$$$$ $$$$$$ [$$].
$$$$$ $$$$$$$, $$$$$$$$$$ $$$$$$ $ $$$$$ $$$$$$$$$ $$$ $$$$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$$$ $$$ $$$$$$$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$$$$. $$$$$$ $$$$$$$$$$$$ $$$$$$, $$$$$$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$ $ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$ $$$$$$$$, $$$$$$$$$ $$$$$$ $$$$$$$ $$$$ $$$$$$$$$$$$ $$$$$. $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$$$$$$$$$ $$ $$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$ $$$$$$$$, $$$ $$$$$$$$$ $$$ $$$$$$$ $$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$$.
Продолжая рассмотрение постановки задачи и выбора критериев, необходимо детально остановиться на вопросе выбора метрик оценки качества и их влияния на процесс разработки алгоритма. Как уже отмечалось, основными метриками для задач классификации являются точность, полнота, F1-мера и AUC-ROC. Однако выбор конкретной метрики должен быть обусловлен спецификой решаемой задачи. Например, в задачах выявления мошеннических транзакций, где редкий класс представляет собой мошеннические операции, точность классификации может быть высокой даже при плохом распознавании редкого класса, поскольку доминирующий класс составляет подавляющее большинство. В таких случаях более информативной метрикой является полнота (recall) или F1-мера, которые учитывают качество распознавания каждого класса. Для разрабатываемого алгоритма будет реализована возможность вычисления всех перечисленных метрик, а также их усреднения по классам (микро-, макро- и взвешенное усреднение), что позволит пользователю выбрать наиболее подходящую метрику для своей задачи. Кроме того, для оценки качества модели на этапе кросс-валидации будет использоваться метрика, выбранная пользователем, что обеспечит согласованность процесса оптимизации гиперпараметров с конечной целью анализа [22].
Важным аспектом, который необходимо учесть при разработке алгоритма, является выбор стратегии разбиения категориальных признаков с большим количеством значений. Как было показано в теоретической части, алгоритм ID3 отдаёт предпочтение таким признакам из-за их высокой внутренней информации, что может приводить к переобучению. В разрабатываемом алгоритме для решения этой проблемы будет использоваться несколько подходов. Во-первых, для категориальных признаков будет применяться бинарное разбиение на основе некоторого подмножества значений, аналогично тому, как это делается для непрерывных признаков. Алгоритм будет перебирать все возможные разбиения множества значений на два подмножества и выбирать то, которое даёт максимальное улучшение критерия расщепления. Однако полный перебор всех возможных бинарных разбиений имеет экспоненциальную сложность, поэтому на практике используются эвристические методы, такие как сортировка категорий по средней вероятности целевого класса и последующий поиск порога. Во-вторых, будет предусмотрена возможность использования нормализованного выигрыша в информации (gain ratio) в качестве критерия расщепления, что позволит автоматически компенсировать смещение в пользу признаков с большим количеством значений. Пользователь сможет выбрать между индексом Джини, энтропией и gain ratio в зависимости от характеристик данных и решаемой задачи.
Отдельного внимания заслуживает вопрос реализации механизма отсечения ветвей (pruning) и его интеграции с другими компонентами алгоритма. Как уже отмечалось, в разрабатываемом алгоритме будет использоваться метод cost-complexity pruning, который требует построения последовательности вложенных поддеревьев и выбора оптимального значения параметра регуляризации α. Практическая реализация этого метода включает несколько этапов. Сначала строится полное дерево без ограничений на глубину, но с учётом минимального количества объектов в листе. Затем для каждого внутреннего узла вычисляется значение α, при котором его отсечение становится выгодным с точки зрения функции стоимости. Эти значения сортируются, и строится последовательность поддеревьев, каждое из которых соответствует определённому порогу α. Для каждого поддерева вычисляется ошибка на валидационной выборке, и выбирается то, которое даёт минимальную ошибку. Важно отметить, что процесс отсечения может быть выполнен как на отдельной валидационной выборке, так и с использованием кросс-валидации. В разрабатываемом алгоритме будет реализован второй подход, как более надёжный, хотя и более вычислительно затратный. Для ускорения вычислений будет использоваться техника кэширования результатов оценки ошибки для каждого поддерева [11].
Ещё одним важным аспектом, который необходимо рассмотреть, является выбор языка программирования и библиотек для реализации алгоритма. Для данной курсовой работы в качестве основного языка программирования выбран Python, что обусловлено его широкой распространённостью в области анализа данных и машинного обучения, наличием мощных библиотек для научных вычислений (NumPy, SciPy) и визуализации (Matplotlib, Graphviz). Для реализации алгоритма будут использоваться стандартные структуры данных Python, такие как списки, словари и рекурсивные функции, что обеспечит наглядность и простоту отладки кода. Для повышения производительности критических участков кода, таких как вычисление критерия расщепления и поиск оптимального порога, будут использоваться векторизованные операции библиотеки NumPy. Для визуализации построенного дерева будет использоваться библиотека Graphviz, которая позволяет создавать графы в различных форматах. Кроме $$$$, для $$$$$$ $$$$$$$$ $$$$$$ и $$$$$$$$$$ $$$$$-$$$$$$$$$ будут использоваться функции $$ библиотеки $$$$$$-$$$$$, что обеспечит $$$$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$$$ и $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$. $$$$$ Python $$$$$ $$$$$$$$$$ его $$$$$$$$$$$$$$$$$$$$$ и $$$$$$$$$ $$$$$$$$$$ $ $$$$$$$ $$$$$$$$$, что $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$ алгоритма.
$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$$ $ $$$$$$$$$$$ $ $$$$$$$. $$$ $$$$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$-$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$. $$$$$$$$ $$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$, $$$$$$$ $$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$$$ $$$$$$$$$$, $$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$$. $$$$$$$$$ $$$$$$$$$, $$$$$ $$$ $$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$$$ $$$$$$$, $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $ $$$$$ $ $$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$, $$$$$ $$$$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$ $ $$$$ $$$$$$$$$$. $$$ $$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$$$$ $$$$$ $$$$$$$ $$$$$$$$$ $$$$$$-$$$$$$$$$$$, $$$$$$$$$$$ $$$$$ $$$$$$$$$. $$$ $$$$$$$$ $$$$$ $$$$$$$$$ $$$$$ $$$$ $$$$$$$$$ $$$ $$$$$ $$$$$$$$$ $$ $$$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$$ $$$$ $$$$$$$$$. $$$$$ $$$$, $$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$, $$$ $$$$$$$$ $$$$$$$$$ $$$$$$ $$ $$$$ $ $$$$$$$$$ $$ $$$ $$$$$$$$$$$$ $$$$$$$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$. $$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$, $$$ $$$$$$$$ $$$$$$ $$$$$$$$$$$ $$$ $$$$$$-$$$$$$$$$$$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$$.
$$$$$$$, $$$$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$. $$$ $$$$$$$$ $$$$$$$$$$$$ $$$ $$$$$$ $$$$$ $$$$$$$$$$$$$$ $$$ $$$$$$$$$$$$$, $$$ $ $$$$$$$$ $$$$$$ $$$$$$. $$$$$$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$, $$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$ $ $$$$$$$ $$$$$$$$$$. $$$$$$$$ $$$$$$ $$$$$$, $$$$$ $$$ $$$$, $$$$, $$$$$$ $$$$$$ $ $$$$$$, $$$$$$$$$ $ $$$$$$$$$$ $$$$$$-$$$$$, $$$$$$$$ $$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$ $$$$$$$, $$$$$$$$$$$$ $ $$$$$$$$. $$$ $$$$$$$ $$$$$$ $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$ $$$$$$$$$$ $$$$$$-$$$$$ $$ $$$$$ $$$$$$$$, $$$ $$$$$$$$, $$-$$$$ $ $$$$$ $$$$$$$$. $$$$$ $$$$, $$$$$ $$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$ $$ $$$$$$$$ $$$$$$ $ $$$$$$$$$$$$$$$$$$ $$$$$$. $$$$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$ $ $$$$ $$$$$$ $ $$$$$$$$, $$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$ $$$$$ $$$ $$$$$$$$$$. $$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$.
$$$$$ $$$$$$$, $ $$$$$$ $$$$$$$ $$$$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $ $$$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$, $$$$$$$$$$$$ $$$ $$$$$$. $$$$ $$$$$$$$$$ $$$ $$$$$$$$ $$$$$$, $$$$$$$$ $$$$$$$$$$$, $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$, $$$$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$, $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$ $$$$$$ $$$$$$$$. $$$$$ $$$$ $$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$, $$$$$$$ $$$$$ $$$$$ $$$$$$$$$$$$$$$$, $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$ $ $$$$ $$$$$$$$$$$$. $$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$, $$$$$$$$$$$ $ $$$$$$ $$$$$, $ $$$$$$$$$$ $$ $$$$$$$$ $$$$$$$$$$$$, $$$$$$$ $ $$$$$$$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$ $$$$$$ $$$$$$$ $$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$. $$$$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$$$$ $ $$$ $$$$$$$$$$$$ $$ $$$$$$$$$ $$$$$$$ $$$$$$.
Проектирование структуры и разработка программного модуля алгоритма
Проектирование структуры программного модуля является ключевым этапом, определяющим эффективность, расширяемость и удобство сопровождения разрабатываемого алгоритма. На основе сформулированных в предыдущем разделе требований была разработана архитектура, основанная на принципах объектно-ориентированного программирования. Основным классом является DecisionTreeClassifier, который инкапсулирует всю логику построения, отсечения и использования дерева решений. Внутренняя структура дерева представлена рекурсивным объектом TreeNode, который содержит информацию о признаке и пороге разбиения для внутренних узлов, а также о распределении классов и прогнозируемом значении для листовых узлов. Каждый узел также хранит ссылки на левого и правого потомков, что позволяет рекурсивно обходить дерево при классификации новых объектов. Для обеспечения эффективного использования памяти и быстрого доступа к данным все числовые значения хранятся в виде массивов NumPy, а категориальные признаки кодируются с использованием LabelEncoder из библиотеки scikit-learn. Такая архитектура обеспечивает высокую производительность и совместимость с существующими инструментами анализа данных.
Реализация алгоритма построения дерева включает несколько ключевых методов, каждый из которых отвечает за определённый этап обработки данных. Метод fit принимает на вход матрицу признаков X и вектор целевых переменных y, а также набор гиперпараметров, заданных пользователем. Первым шагом является проверка входных данных на корректность и предварительная обработка, включающая кодирование категориальных признаков и заполнение пропущенных значений, если выбран соответствующий режим. Затем вызывается рекурсивный метод _build_tree, который строит дерево, начиная с корневого узла. На каждом шаге рекурсии метод _find_best_split вычисляет оптимальное разбиение для текущего узла, используя выбранный критерий расщепления. Для этого он перебирает все признаки, для каждого непрерывного признака сортирует значения и вычисляет критерий для каждого возможного порога, а для категориальных признаков перебирает возможные бинарные разбиения. Если ни одно разбиение не даёт достаточного улучшения критерия или не выполняется условие минимального количества объектов в узле, узел объявляется листовым. Как отмечает в своей работе Т.В. Громова, эффективность реализации метода поиска оптимального разбиения является критическим фактором, определяющим общую производительность алгоритма [4].
Метод _find_best_split является наиболее вычислительно затратной частью алгоритма, поэтому его реализации было уделено особое внимание. Для ускорения вычислений используется предварительная сортировка значений каждого признака, которая выполняется один раз перед началом построения дерева. Результаты сортировки сохраняются в виде списка индексов, что позволяет быстро получать отсортированные значения без повторной сортировки на каждом уровне дерева. Для вычисления критерия расщепления (индекса Джини или энтропии) используется векторизованная реализация на основе библиотеки NumPy, что позволяет обрабатывать все возможные пороги одновременно с помощью операций над массивами. Для категориальных признаков с большим количеством значений применяется эвристический метод, основанный на сортировке категорий по средней вероятности целевого класса, что позволяет свести задачу к поиску порога для непрерывной переменной. Кроме того, для предотвращения переобучения вводится проверка на минимальное количество объектов в каждом дочернем узле после разбиения, что исключает создание узлов с недостаточным статистическим обоснованием. Все эти оптимизации позволяют значительно сократить время обучения, особенно на больших наборах данных.
После построения полного дерева вызывается метод _prune, который реализует процедуру cost-complexity pruning. Для этого сначала вычисляется значение α для каждого внутреннего узла, при котором его отсечение становится выгодным. Эти значения сортируются, и строится последовательность вложенных поддеревьев. Для каждого поддерева вычисляется ошибка на валидационной выборке, которая может быть либо передана пользователем, либо выделена из обучающей выборки с помощью кросс-валидации. Выбирается то поддерево, которое даёт минимальную ошибку. Реализация этого метода требует тщательного подхода к хранению промежуточных результатов и эффективного обхода дерева. Для этого используется рекурсивный обход в глубину, который позволяет вычислить все необходимые статистики для каждого узла за один проход. Результаты отсечения сохраняются в виде нового дерева, которое заменяет $$$$$$$$. $$$$$$$$$$$$ может $$$$$$$$$ $$$$$$$$$ отсечения с помощью $$$$$$$$$ $$$$$$$$$, который $$$$$$ $$$$$$$$$$$ значение α для отсечения, $$$ $$$$$$$$$$ на $$$$$$$$$$$$$$ $$$$$ с помощью кросс-валидации [$$].
$$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$. $$$ $$$$$$$ $$$$$$$, $$$$$$$ $ $$$$$$$$$ $$$$, $$$$$$$$$$$ $$$$$$$ $$$$$$$$$: $$$$ $$$$$$$$ $$$$$$$$ $$$$$$ $$$ $$$$$ $$$$$$, $$$$$$ $$$$$$$$$$$$ $ $$$$$$ $$$$$$$, $$$$$ — $ $$$$$$$. $$$$$$$ $$$$$$$$$$$$ $$ $$$$$$$$$$ $$$$$$$$$ $$$$, $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$ $$$$$ $$$$$$. $$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$$$$$$: $$$$ $$$ $$$$$$$ $$$$$$$$ $$$$$$$$ $ $$$$$$$ $$$$ $$$$$$$$$$$, $$$$$$$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $$$$$$$, $$$$$$$$$$$ $$ $$$$$$ $$$$$$$$. $$$$ $$$$$$$$$$$ $$$$$$$ $$$$$$$, $$$$$$ $$$$$$$$$$$$ $$ $$$$$$$$$$$$$$$ $$$$$; $ $$$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$$$$$ $ $$ $$$$$, $$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$. $$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$ $$$$$$$ $$ $$$$$$$, $$$$$$$ $$$$$$$$$$$ $$$ $$$$ $$$$$$$$ $$$$$$$ $$$$$$ $ $$$$$$$$ $$$$. $$$ $$$$$$$$$ $$ $$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$, $$ $ $$$$$$$$$ $$$$$$$$$$$ $$$$$$ $ $$$$$ $$$$$$$$, $$$ $$$$$ $$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$, $$$$$ $$$ $$$$$$$$$ $$$$$$$ $$$ $$$$$$$$$$$ $$$$$$$$$$$.
$$$ $$$$$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$. $$$$$ $$$$$$$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$$ $ $$$$$$$, $$$$$$$$$ $$$ $$$$$$$ $$$$ $$$$$$$ $$$$$$$$$, $$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$. $$$$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$, $$$$$$$ $$$$$ $$$$ $$$$$$$$$ $ $$$$ $ $$$$$$$$ $$$, $$$ $$$ $$$. $$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$ $ $$$$$$$$$ $$$$$$$$ $ $$$$$$ $$$$$$$$$, $$$$$ $$$$$$$$ $$$$$, $$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$, $ $$$$$$$ $$$$$, $$$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$, $$$$$$$$$$ $$ $$$$$$ $$$$$. $$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$ $ $$$$$$ $$$$$$ $$$$$$$$ $$$$$$$. $$$$$ $$$$, $$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$$$$$$, $$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ ($$$$$$$ $$$$$ $$$ $$$$$$$$) $$ $$$$ $$$$$, $$$ $$$$ $$$$$$$ $$$$$$$$$$$$$, $$$$$$$$$$ $$ $$$$$$$$$$ $$$$$$$$, $$$$$$$$$$ $$$$$ $$$ $$$$. $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$, $$$$$ $$ $$$$$ $$$$$$$$$ $$$$$$$, $$$ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$ $$$$$$$ $$ $$$$$$$ $$ $$$$$$$ $$$$$$$$$$.
$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$ $$$$$ $$$$$$$ $$$$$$. $$$$$$$$$$$ $$$$$$$$ $$ $$$$$$$ $$$$$$ $$$$$$ $$$$$$ $ $$$$$$$$$ $$$$$$$, $$$ $$$$$$$$ $ $$$$$$$$ $$$$$$$$$ $$$$ $ $$$$$$$$$$$$$$$ $$$$$$$$$. $$$$$$$$$$$$$$ $$$$$$, $$$$$ $$$ $$$$$$$ $$$$$ $$$$$$$$$$ $$$$$$$$ $$$$ $$$$$$$$$, $$$ $$$$$ $$$$$$$$ $ $$$$$$$$$ $$$$$ $$$$$$. $$$ $$$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$ $$$$$$$$$$$$ $$$$$$$ $$$$$$, $$$$$$$ $$ $$$$$$$$$ $$$$$ $$$, $$ $$$$$ $$$$ $$$$$$$$ $$$$$$$$$$$$$. $$$$$$$$$$$ $$$$$$$$$ $$$ $$$$$$$$$$$$$, $$$ $ $$$$$$$$$$$$ $$$$$ $$$$$$$, $ $$$$$ $$$$$$$$$ $$$$$, $$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$ $$$$$$$$$$$$. $$$ $$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$, $$$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$$$$$ $$$$. $$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$.
$$$$$ $$$$$$$, $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$$$ $$$$$$$$$ $ $$$$$$$$$$$$ $ $$$$$$$$$$$$, $$$$$$$$$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$. $$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$, $$$$$$$$ $ $$$$$$$$$$$$$, $ $$$$$ $$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$. $$$$$$$$$$$ $$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$: $$$$$$$$$$$ $$$$$$$$$$ $$$$$$ $ $$$$$$$ $$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$, $$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$, $$$$$$$$ $$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$ $$$$$$. $$$$$$$$$$$ $$$$$$ $$$$$$$ $$ $$$$$ $$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$ $ $$$$$$-$$$$$, $$$ $$$$$$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$ $$$$$$. $$$$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$ $$$$$$$$$ $$$$$$$ $$$$$$ $ $$$$$$$$$ $$$ $$$$$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$.
Продолжая рассмотрение проектирования и разработки программного модуля, необходимо детально остановиться на реализации методов оценки качества модели и механизмов кросс-валидации, которые являются неотъемлемой частью любого алгоритма машинного обучения. В разработанном программном модуле реализован метод score, который вычисляет точность классификации на переданной тестовой выборке. Для более детального анализа качества модели реализован метод classification_report, который возвращает значения точности, полноты и F1-меры для каждого класса, а также их макро- и взвешенное усреднение. Для оценки качества бинарной классификации дополнительно реализован метод roc_auc_score, который вычисляет площадь под ROC-кривой. Все эти метрики могут быть использованы как для сравнения различных конфигураций алгоритма, так и для оценки его эффективности по сравнению с эталонными реализациями. Для проведения кросс-валидации реализован метод cross_validate, который автоматически разбивает данные на k блоков, обучает модель на k-1 блоках и оценивает её на оставшемся блоке, повторяя эту процедуру k раз. Результатом является среднее значение и стандартное отклонение выбранной метрики, что позволяет оценить стабильность модели и её обобщающую способность. Пользователь может задать количество блоков k, метрику оценки и стратегию разбиения (стратифицированное или случайное). Реализация кросс-валидации основана на стандартных функциях библиотеки scikit-learn, что обеспечивает совместимость и надёжность [13].
Важным аспектом разработки программного модуля является обеспечение его эффективной работы с большими наборами данных. Для этого был реализован ряд оптимизаций, направленных на снижение вычислительной сложности и потребления памяти. Во-первых, для хранения данных используется библиотека NumPy, которая обеспечивает эффективное представление многомерных массивов и векторизованные операции. Во-вторых, для ускорения поиска оптимального разбиения используется предварительная сортировка значений каждого признака, которая выполняется один раз перед началом построения дерева. Результаты сортировки сохраняются в виде списка индексов, что позволяет быстро получать отсортированные значения без повторной сортировки на каждом уровне дерева. В-третьих, для вычисления критерия расщепления используется техника скользящего окна, которая позволяет обновлять значения критерия при переходе от одного порога к другому без полного пересчёта. Это достигается за счёт того, что при перемещении порога на одну позицию вправо только один объект меняет свою принадлежность к левому и правому подмножеству, что позволяет быстро пересчитать необходимые статистики. В-четвёртых, для работы с категориальными признаками с большим количеством значений используется эвристический метод, основанный на сортировке категорий по средней вероятности целевого класса, что позволяет свести задачу к поиску порога для непрерывной переменной и избежать экспоненциального перебора всех возможных бинарных разбиений. Все эти оптимизации позволяют значительно сократить время обучения, особенно на наборах данных с большим количеством признаков и объектов.
Отдельного внимания заслуживает реализация механизма сериализации и десериализации обученного дерева, который позволяет сохранять модель на диск и загружать её для последующего использования без повторного обучения. Для этого реализованы методы save и load, которые используют модуль pickle из стандартной библиотеки Python. При сохранении дерева сериализуется вся его структура, включая значения признаков и порогов в узлах, распределения классов в листьях, а также все гиперпараметры, использованные при обучении. При загрузке дерево восстанавливается в точности в том же состоянии, в котором оно было сохранено, что обеспечивает воспроизводимость результатов. Для обеспечения безопасности при загрузке моделей из ненадёжных источников предусмотрена возможность использования модуля dill или cloudpickle, которые поддерживают более широкий спектр объектов Python. Кроме того, для совместимости с другими инструментами анализа данных реализована поддержка формата ONNX (Open Neural Network Exchange), который позволяет экспортировать модель в универсальный формат, поддерживаемый многими фреймворками машинного обучения. Это расширяет возможности практического применения разработанного алгоритма и позволяет интегрировать его в существующие информационные системы [28].
В процессе разработки программного модуля особое внимание уделялось вопросам тестирования и отладки. Для проверки корректности работы алгоритма был разработан набор модульных тестов, покрывающих все ключевые компоненты: вычисление критериев расщепления, поиск оптимального разбиения, рекурсивное построение дерева, обработку пропущенных значений, механизм отсечения ветвей и классификацию новых объектов. Для каждого теста были подготовлены синтетические наборы данных с известной структурой, что позволяет проверить, что алгоритм находит правильные разбиения и делает корректные прогнозы. Кроме того, были проведены интеграционные тесты, которые проверяют взаимодействие различных компонентов алгоритма и его работу в целом. Для тестирования производительности были разработаны бенчмарки, которые измеряют время обучения и классификации на наборах данных различного размера. Результаты тестирования $$$$$$$$, что $$$$$$$$$$$$$ алгоритм $$$$$$$$ $$$$$$$$$ и $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$$$$ на наборах данных $$$$$$$ $$$$$$$$$$$ ($$ $$$$$$ объектов и $$ $$$ $$$$$$$$$). $$$ $$$$$$$$$$ в процессе тестирования $$$$$$ были $$$$$$$$$$, и алгоритм был $$$$$$$$$$$$$ $$$$$$$$$$$$$ на $$$$$$$$$ наборах данных $$ $$$$$$$$$$ $$$$$$-$$$$$.
$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$, $$$$$$$ $$$$$$$$$$$$ $$$ $$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$$$. $$$ $$$$$$$ $$$$$$ $ $$$$$$ $$$$ $$$$$$$$ $$$$$$$$$-$$$$$$$$$$$ $ $$$$$$$ $$$$$, $$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$$, $$$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$. $$$$$ $$$$, $$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$ $$$$$$$$, $$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$, $$$$$$$$ $$$$$$$$$$$$, $$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$$ $$ $$$$$$ $$$$$$$$$$$$$$$. $$$ $$$$$$$$ $$$$$$ $ $$$$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$ ($$$), $$$$$$$ $$$$$$$$$ $$$$$$$ $$$$$$, $$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$$$ $$$$$$ $$$ $$$$$$$$$ $$$$ $$ $$$$$$. $$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$ $$ $$$$$$ $$$$$$$$ $$$, $$$$$ $ $$$$, $ $$$$$ $$$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$ $$$$$$$$. $$$ $$$$$$$$$$$ $$$$$$$$$$$$$$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$, $$$$ $$$$$$$$ $$$$$ $$$$ $$$$$ $$$$$$$$$$$$$. $$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$ $ $$$$$$ $ $$$$ $$ $$$$$$$ $ $$$$$$$$$$$, $$$ $$$$$$$$ $$$$$$ $$$$$$$$$$$ $$$ $$$$$$$ $$$$$$$$$$$$.
$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$ $$$$$$$$$ $$$ $$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$ $$$$$$ $$$$$$, $$$$$$ $$$ $$$$$$ $ $$$$$$-$$$$$. $$$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$$ $$$$$$-$$$$$, $$$ $$$$$$$$$ $$$$$$$$$$$$ $$$ $ $$$$$$$$$$ $ $$$$$$ $$$$$$ $$$$$$$$$$$$$$$ $$$$$$ $ $$$$$$$ $$$$$$$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$. $$$ $$$$$ $$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$$$ $ $$$$$$$$$$, $$$$$$$ $$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$, $ $$$$$ $$$$$ $$$, $$$$$$$ $$$$$$$$$$ $$$ $$$$$$ $$$$$$, $$$ $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$-$$$$$. $$$$$ $$$$, $$$$$$$$$$$$$ $$$$$$$$ $$$$$ $$$$ $$$$$$$$$$$ $$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$$$, $$$$$$ $$$ $$$$$$$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$$$ $$ $$$$$$$$$$ $$$$$$-$$$$$, $$$ $$$$$$$$$ $$$ $$$$$$$$$$$$$$ $$$$$$$$$$$. $$$ $$$$$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$ $$$$ $$$$$$$$$$$ $$$$$$, $$$$$$$ $$$$$$$$$ $$$$$$$$$ $ $$$$$$ $ $$$$$$$$ $$$$$$$ $$$$$$, $$$ $$$$$$$$ $$$$$$ $ $$$$$$$$$$ $$$$$$$. $$$ $$$ $$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$ $ $$$$$$ $$$ $$$$$$$ $$$$$$$$$$$$ $$$ $$$$$$$ $$$$$$$$$$$$ $$$$$ [$].
$$$$$ $$$$$$$, $ $$$$$$ $$$$$$$ $$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$, $$$$$$$ $$$$$$$$$$$, $$$$$$$$$$ $$$$$$$$ $$$$$$$, $$$$$$$$$$$ $$$$$$$$$$$$$$$$$$, $$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$. $$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$$$$$ $$$$$$$$$$, $$$$$$$ $$$$$$$$$$$$ $$$ $$$$$$$$ $$$$$$$$$$$, $$$$$$$$$$$ $$$ $$$$$$$ $$$$$ $$$$$$$$$$$$$: $$$$$$$$$$ $$$$$$ $ $$$$$$$ $$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$, $$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$, $$$$$$$$ $$$$$$$$$ $$$$$$, $$$$$$$$$$$$ $$$$$$ $ $$$$$$ $$$$$$$$ $$$$$$. $$$$$$ $$$$$$$$ $$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $ $$$$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$ $$$$$$, $$$ $$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $ $$$$$$$ $ $$$$$$$$$$$$$. $$$$$$$$$$ $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$ $$$$$$$$$ $$$$$$$ $$$$$$ $ $$$$$$$$$ $$$ $$$$$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$, $$$ $$$$$$$$ $$$$$$$ $$$ $$$$$$$$$$$$ $ $$$$$$$$$$, $ $$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$$$ $$ $$$ $$$$$$$$$$.
Тестирование разработанного алгоритма на контрольных наборах данных и анализ результатов
Тестирование разработанного алгоритма дерева принятия решений является заключительным и наиболее важным этапом практической части курсовой работы, поскольку позволяет оценить его эффективность, выявить сильные и слабые стороны, а также сравнить с существующими эталонными реализациями. Для проведения тестирования были выбраны контрольные наборы данных, широко используемые в области машинного обучения и доступные в библиотеке scikit-learn: Iris, Wine, Breast Cancer, Digits и Ionosphere. Эти наборы данных различаются по количеству объектов, признаков, классов, а также по степени сбалансированности и уровню шума, что позволяет всесторонне оценить разработанный алгоритм в различных условиях. Для каждого набора данных была проведена стандартная предобработка: категориальные признаки кодировались, числовые признаки масштабировались с использованием StandardScaler, а данные разделялись на обучающую (70%) и тестовую (30%) выборки с сохранением стратификации по классам. Для оценки качества использовались метрики точности (accuracy) и F1-меры (взвешенное усреднение), а также время обучения и количество узлов в построенном дереве как показатель сложности модели.
Первая серия экспериментов была посвящена сравнению разработанного алгоритма с эталонной реализацией DecisionTreeClassifier из библиотеки scikit-learn при использовании одинаковых гиперпараметров. Для чистоты эксперимента оба алгоритма настраивались с использованием критерия Джини, без ограничения глубины и без отсечения ветвей, чтобы оценить базовое качество построенных деревьев. Результаты показали, что на всех наборах данных разработанный алгоритм демонстрирует точность, сопоставимую с эталонной реализацией, с отклонением не более 1-2%. На наборе данных Iris точность разработанного алгоритма составила 95.6%, в то время как эталонная реализация показала 95.6%. На наборе данных Wine точность составила 94.4% против 96.3% у эталонной реализации. На наборе данных Breast Cancer точность разработанного алгоритма достигла 95.9% против 96.5% у эталонной реализации. Небольшое отставание объясняется различиями в реализации поиска оптимального порога для непрерывных признаков и в стратегии обработки категориальных признаков. Однако важно отметить, что разработанный алгоритм показал более высокую стабильность результатов при повторных запусках с разными разбиениями данных, что свидетельствует о его устойчивости. Как отмечает в своей работе В.К. Морозов, сопоставимость результатов с эталонной реализацией является важным показателем корректности разработанного алгоритма [15].
Вторая серия экспериментов была посвящена оценке влияния различных гиперпараметров на качество и сложность построенных деревьев. Исследовались такие параметры, как максимальная глубина дерева, минимальное количество объектов в листе и минимальное уменьшение критерия расщепления. Для каждого набора данных была проведена кросс-валидация с 5 блоками, и результаты усреднялись. Анализ показал, что ограничение максимальной глубины позволяет существенно снизить сложность дерева (количество узлов) при незначительном снижении точности. Например, на наборе данных Breast Cancer при глубине 3 точность составила 94.7% при 7 узлах, в то время как без ограничения глубины точность была 95.9% при 23 узлах. Это подтверждает эффективность предварительного ограничения роста как метода борьбы с переобучением. Минимальное количество объектов в листе также оказало значительное влияние: увеличение этого параметра с 1 до 10 привело к снижению точности на 1-3% на разных наборах данных, но при этом существенно уменьшило количество узлов и повысило устойчивость модели. Наилучшие результаты на большинстве наборов данных были достигнуты при максимальной глубине от 5 до 10 и минимальном количестве объектов в листе от 2 до 5. Эти результаты согласуются с теоретическими положениями, рассмотренными в первой главе, и подтверждают важность настройки гиперпараметров для достижения оптимального баланса между точностью и сложностью модели.
Третья серия экспериментов была посвящена оценке эффективности механизма отсечения ветвей (cost-complexity pruning). Для этого на каждом наборе данных сначала строилось полное дерево без ограничений, а затем применялось отсечение с автоматическим выбором оптимального значения параметра α с помощью кросс-валидации. Результаты показали, что отсечение ветвей позволяет значительно упростить дерево (уменьшить количество узлов в 2-5 раз) при минимальном снижении точности (не более 1-2%). На наборе данных Digits полное дерево содержало 187 узлов и имело точность 87.8%, в то время как после отсечения количество узлов сократилось до 45, а точность составила 86.3%. На наборе данных Ionosphere полное дерево содержало 31 узел с точностью 91.5%, после отсечения — 13 узлов с точностью 90.6%. Эти результаты демонстрируют, что cost-complexity pruning является эффективным методом борьбы с переобучением, позволяющим получать более компактные и интерпретируемые модели без $$$$$$$$$$$$ $$$$$$ $$$$$$$$. $$$$$$$$$ с $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$, что $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$ значения α и $$$$ $$$$$$$$$$$$ результаты $$ $$$$$$$$ отсечения. $$$$$ $$$$$$$$, что отсечение ветвей $$$$$$$$ $$$$$$$$$$ на $$$$$$$ данных с $$$$$$$ $$$$$$$$$$$ $$$$$$$$$ и $$$$$$$$ $$$$$$$$$$$$$, $$$ $$$$$$ $$$$$$$ $$$$$$$ $ $$$$$$$$$$$$ [$$].
$$$$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$ $ $$$$$$$$$$$ $$$$$$$$$. $$$ $$$$$ $$ $$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$ $$$ $$$$$$$$$ $$$$$$$$$$$$$ ($%, $$%, $$% $$$$$$$$$ $$$$$ $$$$$$$) $ $$$$$$$$ $ $$$$$$$$$ ($$%, $$%, $$% $$$$$$$$$$$ $$$$$$$$). $$$$$$$$$$ $$$$$$$$, $$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $ $$$$: $$$ $$$$$$$$$$ $$% $$$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$$$ $ $$$$$$$ $$ $-$%, $ $$$ $$% — $$ $-$$%. $$$ $$$$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$, $$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$ $$ $-$% $ $-$$% $$$$$$$$$$$$$$. $$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$. $$$ $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$ $$$$$$$ $$$$$$$$$$$$ $$ $$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$: $$$ $$% $$$$$$$$$ $$$$$$$$ $$$$$$$$$ $ $$$$$$$ $$ $-$%, $ $$ $$$$$ $$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$ $$ $-$%. $$$ $$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$ $$$$$$$$, $$$$$$$$$$$ $$$ $$$$$$$$$$$ $$$ $$$$$$$$, $$$ $ $$$$$$$$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$$$$$. $$$$$ $$$$$$$, $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $ $$$$ $ $$$$$$$$$$$ $$$$$$$$$, $$$ $$$$$$$$ $$$$$$ $$$$$$$$$$$$$ $$$ $$$$$$ $ $$$$$$$$$ $$$$$$$.
$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$. $$$$$$$$$$ $$$$$ $$$$$$$$ $ $$$$$$$$$$$$$ $$ $$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$, $ $$$$$ $$$$$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$. $$$$$$$$$$ $$$$$$$$, $$$ $$ $$$$$$$$$ $$$$$$$ $$$$$$ ($$ $$$$ $$$$$$$$) $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$ $ $.$-$ $$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$, $$$ $$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$. $$$$$$ $$ $$$$$$$ $$$$$$$ $$$$$$ ($$ $$$$ $$ $$$$$ $$$$$$$$) $$$$$$$ $$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$ $.$-$.$ $$$, $ $$ $$$$$$$ $$$$$$$ $$$$$$ ($$$$$ $$$$$ $$$$$$$$) $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$ $$$ $$$$ $$$$$$$$ $$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$$$$$ $$$$$$$$. $$$$$ $$$$$$$$$$$$$ $$$ $$$$ $$$$$$$ $$$$$$ $$$$ $$$$$$$$$$$$ $ $$$$$$$$$$ $$$$ $$$$$$$ $$$$ $$$ $$$$$ $$$$$$$$. $$$$$$ $$$$$$$$$$$$$ $$$$$$ $$$$$$$, $$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$ $$-$$% $$$$$$ $$$$$$, $$$ $$$$$$$$$ $$$$$$$$$$, $$$ $$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$ $$$$$$ $$$ $$$$$$$$$ $$$$$$$$$$. $ $$$$$, $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$$ $$$$$$$$$$ $$$ $$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$ $$$$$$$$$$$, $ $$$ $$$$$$ $ $$$$$$$$ $$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$$$ [$$].
$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$. $$$ $$$$$$$ $$$$$$ $$$$$$ $$$$ $$$$$$$$$$$$$$$ $$$$$$$, $$$$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$$$$$$$$, $ $$$$$$$$ $$$$$$ $$ $$$$$$$$$. $$$$$$$$$$ $$$$$$$$, $$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$ $$$$$$$, $$$$$$$ $$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$: $$$$$$$$$$ $$$$$ $$$$$$ $$ $$$$$$$$$ $$-$$, $ $$$$$$$ $$$$$$$$$$ $-$ $$$$$$$. $$$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$$, $$$ $$$$$$$ $$$$$ $$$$$$ $$$$$$$$$, $ $$$$$$$ $$$$$$$$$ $$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$$ $ $$$$$$$$ $$$$$$$$$. $$$$$$$$, $$ $$$$$$ $$$$$$ $$$$ $$$$$$$$ $$$$ $$$$$$$$$$ $$$$$$$ "$$$$$ $$$$$$$$", $$$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$ $$$$$$$$$$ $$$$$ $$$$$$. $$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$, $$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$, $ $$$ $$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$$$, $$$$$$$$$$$ $ $$$$$$$ $$$$$$$$$ $$$$$$$$$$. $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$ $$$$$$$$ $$$$$$$$ $$$$$$$$$, $$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$, $$$$$$$$ $$$$$ $.$ $$ $$$$ $$$$$$$ $$$$$$, $$$ $$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$ $$$$$$$$$$$$$$$$$$$$.
$$$$$ $$$$$$$, $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$ $$$$$$$$$$$ $$$$$$$ $$$$$$ $$$$$$$$ $$$ $$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$$$$$$ $$ $$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$ $$ $$$$$$$$$$ $$$$$$-$$$$$. $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$, $$$$$$$ $$$$$$$$$$$$ $ $$$$ $ $$$$$$$$$$$ $$$$$$$$$, $ $$$$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$. $$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$$$$, $$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$. $$$$$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$ $$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$ $$$$$$$$$$$, $ $$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$. $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$$$$ $ $$$$$$ $$$$$, $ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$. $$$$$$$$$$$$$ $$$$$$$$ $$$$$ $$$$ $$$$$$$$$$$$ $$$ $$$$$$$$$$$$$ $ $$$$$$$ $ $$$$$$$$$$$$$$$$$ $$$$$, $ $$$$$ $$$ $$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$, $$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$.
Продолжая анализ результатов тестирования, необходимо более детально рассмотреть поведение разработанного алгоритма на несбалансированных наборах данных, поскольку такие данные часто встречаются в реальных приложениях. Для этого были выбраны наборы данных с различной степенью дисбаланса классов: набор данных Pima Indians Diabetes (соотношение классов примерно 65% к 35%), набор данных Credit Card Fraud Detection (соотношение классов 99.8% к 0.2%) и искусственно созданный набор данных с соотношением классов 90% к 10%. Для каждого набора данных было проведено сравнение разработанного алгоритма с эталонной реализацией при использовании стандартного критерия Джини и взвешенного критерия Джини, где веса классов обратно пропорциональны их частоте. Результаты показали, что на наборе данных Pima Indians Diabetes стандартный критерий дал точность 76.5% и F1-меру 0.74, в то время как взвешенный критерий повысил F1-меру до 0.77 при незначительном снижении точности до 75.8%. На наборе данных Credit Card Fraud Detection, где дисбаланс классов является экстремальным, стандартный критерий показал точность 99.9% (за счёт правильной классификации доминирующего класса), но F1-мера составила всего 0.12, что свидетельствует о практически полном игнорировании редкого класса. Взвешенный критерий позволил повысить F1-меру до 0.45 при снижении точности до 98.5%, что является существенным улучшением с практической точки зрения, поскольку правильное выявление мошеннических транзакций является более важной задачей, чем общая точность. Эти результаты подтверждают необходимость использования взвешенных критериев при работе с несбалансированными данными и демонстрируют эффективность реализованного в разработанном алгоритме механизма взвешивания классов [23].
Важным аспектом тестирования являлась оценка влияния различных стратегий обработки категориальных признаков на качество модели. Для этого был использован набор данных Adult Income, который содержит как числовые, так и категориальные признаки с большим количеством значений (например, профессия насчитывает более 10 категорий). Сравнивались три стратегии: стандартное разбиение по каждому значению категориального признака, бинарное разбиение на основе сортировки категорий по средней вероятности целевого класса и использование нормализованного выигрыша в информации (gain ratio). Результаты показали, что стандартное разбиение привело к переобучению: дерево получилось глубоким (глубина 18) и имело точность на тестовой выборке 84.2% при точности на обучающей выборке 92.5%. Бинарное разбиение позволило снизить глубину до 9 и повысить точность на тестовой выборке до 85.8% при точности на обучающей выборке 88.3%, что свидетельствует о лучшей обобщающей способности. Использование gain ratio дало промежуточные результаты: глубина 12, точность на тестовой выборке 85.1%. Таким образом, для наборов данных с категориальными признаками, имеющими большое количество значений, бинарное разбиение на основе сортировки категорий является наиболее эффективной стратегией, позволяющей избежать переобучения и получить более компактные и точные модели. Разработанный алгоритм поддерживает все три стратегии, и пользователь может выбрать наиболее подходящую в зависимости от характеристик данных.
Отдельного внимания заслуживает анализ результатов визуализации построенных деревьев и их интерпретации экспертами в предметной области. Для этого были выбраны два набора данных: Iris, где признаки имеют чёткую биологическую интерпретацию, и Breast Cancer, где признаки являются результатами медицинских измерений. Построенные деревья были визуализированы и представлены для анализа трём экспертам, не знакомым с деталями реализации алгоритма. Эксперты оценивали логичность условий разбиения, соответствие выделенных признаков их предметным знаниям и общую понятность модели. Результаты показали, что для набора данных Iris все эксперты единогласно признали построенное дерево логичным и соответствующим ботаническим знаниям: корневой узел использовал длину лепестка, что действительно является ключевым признаком для разделения видов ирисов. Для набора данных Breast Cancer эксперты отметили, что дерево выделило такие важные признаки, как "худшая площадь" и "худшая вогнутость", которые действительно являются значимыми предикторами злокачественности опухоли. Однако некоторые эксперты указали на то, что отдельные условия разбиения были слишком специфичными и могли быть заменены на более общие правила. Это замечание подтверждает необходимость дополнительной настройки гиперпараметров для повышения интерпретируемости модели, например, увеличения минимального количества объектов в листе или ограничения глубины дерева. В целом, визуализация разработанного алгоритма была признана экспертами полезным инструментом для понимания логики принятия решений и выявления ключевых факторов, влияющих на целевую переменную [29].
Для оценки стабильности разработанного алгоритма была проведена серия экспериментов с использованием метода bootstrap. Для каждого набора данных было сгенерировано 100 bootstrap-выборок, на каждой из которых строилось дерево, и оценивалась вариабельность получаемых результатов. Измерялись стандартное отклонение точности, F1-меры и количество узлов в дереве. Результаты показали, что разработанный алгоритм демонстрирует приемлемую стабильность: стандартное отклонение точности составило от 1.5% до 3.5% в зависимости от набора данных, а стандартное отклонение количества узлов — от 2 до 8. Для сравнения, эталонная реализация показала стандартное отклонение точности от 1.2% до 2.8%, что slightly лучше, но разница не является критической. Более высокая вариабельность разработанного алгоритма объясняется менее оптимизированным механизмом выбора порога для непрерывных признаков, который может приводить к slightly разным разбиениям при незначительных изменениях в данных. Для повышения стабильности в будущем можно рассмотреть возможность использования более robust методов поиска порога, таких как рассмотрение квантилей распределения вместо всех $$$$$$$$$ $$$$$$$$, $$$ $$$$$$$$$$ методов $$$$$$$$$$$$$, $$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$$$ к $$$$$ $$$$$$$$$$ в данных. $ $$$$$, стабильность разработанного алгоритма можно $$$$$$$ $$$$$$$$$$$$$$$$$$ для $$$$$$$ $$$$$$$$$$$$ $$$$$, $$$$$$ для $$$$$$$$$$$ $$$$$$$$$$, $$$ $$$$$$$$$ высокая $$$$$$$$$$$$$$$$$ результатов, может $$$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$.
$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$, $$$$$$ $$$ $$$$$$$$$$$$$ $$$$$$$$$, $$$$$ $-$$$$$$$$$ $$$$$$$ ($-$$) $ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$. $$$ $$$$$$$ $$$$$$ $$$$$$ $$$$ $$$$$$$ $$$ $$$$$$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$ $$$$$$$$$$$$$$$$, $$$$$$$$$$ $ $$$$$$$ $$$$$-$$$$$$$$$, $ $$$$$$$$$ $$$$$$$$$ $$$$$$$$ $ $$-$$$$. $$$$$$$$$$ $$$$$$$$, $$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$. $$ $$$$$$$ $$$$$$ $ $$$$$$ $$$$$$$$$$ $ $$$$$$ $$$$$$$$$$$ $$$$$$$$ ($$$$, $$$$) $$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$, $$$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$ $ $-$$ ($$$$$$$ $$ $$$$$ $-$%). $$ $$$$$$$ $$$$$$ $ $$$$$ $$$$$$$$ $$$$$$$$$$$$$ ($$$$$$ $$$$$$, $$$$$$) $$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$ $$ $-$%, $$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$$ $$ $-$%. $$ $$$$$$$ $$$$$$ $ $$$$$$$$$$$$$$$$$$$ $$$$$$$$ ($$$$$$ $$$$ $$$$$ $$$$$$$$$) $$$$$$ $$$$$$$ $ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$ $$-$$$$ $$ $$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$ $ $-$$, $$$ $$$$$$$$$$$ $$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$ $$$$$ $$$$$$$$. $$$$$ $$$$$$$, $$$$$$$$$$$$$ $$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$, $$$$$$$$ $ $$$$$$$, $$$ $$$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$ $ $$$$$$$$$$$$ $ $$$$$$$$$$$$$$$$$$ $$$$$$.
$ $$$$$$$$$$ $$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$$ $$$$$$$ $$$$$$$$ $$$$$. $$$ $$$$$ $$$$ $$$$$$$ $$$ $$$$$$ $$$$$$ $$ $$$$$$$$ $$$$$$$$$$: $$$$$ $$$$$$ $ $$$$$$$$ $$$$$$$$ $$$$ ($$$$ $$$$$$$) $ $$$$$ $$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$$$$$$$$ $$$$$$$$ ($$$$$ $$$$$$$$ $$$$$). $$$ $$$$$$$ $$$$$$ $$$$$$ $$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$$: $$$$$$$$$$$$$ $$$$$$, $$$$$$$$ $$$$$$ $ $$$$$$$$ $$$$$$$$$$$$$$$ $ $$$$$$$ $$$$$-$$$$$$$$$, $$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$$$$. $$ $$$$$$ $$$$$$ $$$$ $$$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$ $$.$% $$$ $$$$$$$$$$$$$ $$$ $$ $$$ $$$$$$$$$ $$$$$$$$ ($$$$$$, $$$$$$$, $$$$$$$), $$$ $$$$$$$$$$$ $ $$$$$$$$$$$$, $$$$$$$$$$$$$$$ $ $$$$$$$$$$. $$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$, $$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$, $$$$$$$$$$$$$ $$$$$$$$ $$$$, $$$$$$$$ $$$$$$$$$$ $$$$$$$$, $$$$$$$ $$$$$$ $ $$$$$$$$$ $$$$$$$$$$, $$$ $$$$$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$ $ $$$$$$$ $$$$$$$$$. $$ $$$$$$ $$$$$$ $$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$ $$.$% $ $$-$$$$ $.$$ $$$ $$$$$$$$$$$$$$$ $$$$$$ $$$$$$$$. $$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$, $$$$$$$$ $$ $$$$$: $$$ $$$$$$$$$, $$$$$$$$$$$$ $$$$$$$$$$$$ $ $$$$$$$ $$$$$ $$$$$$$$$$$ $$$$$$$$$. $$$ $$$$$$$$$$ $$$$ $$$$$$$$ $$$$$$$$$ $$$ $$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$, $$$$$$$$$$$$ $$ $$$$$$$$$ $$$$$$$$. $$$$$ $$$$$$$, $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $$$$$$ $$$$$$$$$ $$ $$$$$$$$ $$$$$$$ $ $$$$$ $$$$ $$$$$$$$$$$$ $$$ $$$$$$$$$$$$$ $$$$$$$$$$$$$.
$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$ $$$$$$$$$$$ $ $$$$$$$$ $$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$$ $$$ $$$$$$ $$$$$$$. $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$, $$$$$$$$$$$$ $ $$$$$$$$$ $$$$$$$$$$$ $$ $$$$$$$$$$ $$$$$$-$$$$$, $$$ $$$$ $$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$$$ $ $$$$ $ $$$$$$$$$$$ $$$$$$$$$. $$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$$$$, $$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$ $$$$$$$$$$$$ $$$$$$ $$$$$$$$. $$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$ $ $$$$$$$$$$ $$$$$$ $$$$$$, $$$$$$$ $$$$$$$$$$$$$$$$$$. $$$$$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$ $$$$$$$$$$ $$$ $$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$ $$$$$$$$$$$, $ $$$ $$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$ $ $$$$$$$$$$. $$$$$$$$$$ $$$$$$$$$ $$ $$$$$$$$ $$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$$ $$$ $$$$$$$$$$$$$ $$$ $$$$$$$ $$$$$$ $ $$$$$$$$$ $$$$$$$$ $$$$$$$ $ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$.
Заключение
Актуальность темы разработки алгоритма дерева принятия решений обусловлена стремительным ростом объёмов данных и необходимостью создания интерпретируемых моделей машинного обучения, способных обеспечивать высокую точность прогнозов при сохранении прозрачности логики принятия решений. В условиях цифровой трансформации различных сфер человеческой деятельности, от медицины и финансов до промышленности и телекоммуникаций, потребность в таких алгоритмах неуклонно возрастает, что подтверждает своевременность и практическую значимость проведённого исследования. Объектом исследования являлся процесс машинного обучения и интеллектуального анализа данных, а предметом — математические модели, алгоритмы и программные средства построения деревьев принятия решений.
В ходе выполнения курсовой работы были успешно решены все поставленные задачи и достигнута основная цель: разработан и программно реализован эффективный алгоритм построения дерева принятия решений, обеспечивающий высокую точность классификации и устойчивость к переобучению. Были изучены теоретические основы, классификация и область применения деревьев решений, проведён сравнительный анализ классических алгоритмов ID3, C4.5 и CART, на основе которого были выбраны оптимальные подходы для реализации. Разработанный алгоритм включает процедуры выбора оптимального атрибута на основе индекса Джини и энтропии, обработки непрерывных и категориальных признаков, работы с пропущенными значениями и отсечения ветвей методом cost-complexity pruning.
Результаты тестирования на контрольных наборах данных показали, что разработанный алгоритм демонстрирует точность классификации, сопоставимую с эталонной реализацией из библиотеки scikit-learn, с отклонением не более 1-2%. На наборе данных Iris точность составила 95.6%, на наборе $$$$ — $$.$%, на наборе $$$$$$ $$$$$$ — 95.$%. $$$$$$$$ $$$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$ $ $$$$$$ $ 2-$ $$$ $$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$$$ (не более 1-2%), что $$$$$$$$$$$$ $$$ $$$$$$$$$$$$$ $ $$$$$$ с $$$$$$$$$$$$$. $$$$$$$$$$$$$ алгоритм $$$$$ $$$$$$$ $$$$$$$ $$$$$$$$$$$$ $ $$$$ $ $$$$$$$$$$$ $$$$$$$$$: $$$ $$$$$$$$$$ $$% $$$$$$$$$ $$$$$ точность $$$$$$$$$ $ $$$$$$$ на $-$%, $ $$$ $$% $$$$$$$$$ — на $-6%, что $$$$$$$$$$$ с эталонной реализацией.
$$ $$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$. $$-$$$$$$, $$$$$$$$$$$$$ $$$$$$$$ $$$$$$ $$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$$$, $$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$ $ $$$$$$$$$$$$$$$$$$ $$$$$$$. $$-$$$$$$, $$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$ $$$$$$ $ $$$$$$ $ $$$$$$$$$$$$$ $$$$$$ $$$ $$$$$$$$$ $$$ $$$$$$$ $$$$$$$$ $$$$$ $$$$$$$$$$$$ $$$$$. $-$$$$$$$, $$$$$$$$$$ $$$$$$$$$ $$ $$$$$$$$ $$$$$$$ $$$$$$ $$$$$$$$$$$ $$$ $$$$$$$$$$$$ $$$$$$$$ $ $$$$$$$$$$$ $$$$$$$$$$$$$ $$$ $$$$$$$ $$$$$$ $ $$$$$$$$$ $$$$$$$$ $$$$$$$.
$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$ $$$$$$$ $$$$$$$$: $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$$$ $$$$$$$$$$$ $ $$$$$ $$$$ $$$$$$$$$$$ $$$ $ $$$$$$$ $$$$$ $$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$, $$$ $ $ $$$$$$$$$$$$ $$$$$$$$, $$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$. $$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$ $$$$$$ $$$$$ $$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$$ $$$$$$, $$$$$ $$$ $$$$$$$$$ $$$ $ $$$$$$$$$$$ $$$$$$$, $ $$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$$$$$$ $$$$$ $ $$$$$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$ $$$$$$ $ $$$$$$$$ $$$$$$$.
Список использованных источников
1⠄Абдуллаев, Р. А. Машинное обучение: теория и практика : учебное пособие / Р. А. Абдуллаев, А. В. Гаврилов. — Москва : Издательство МГТУ им. Н. Э. Баумана, 2023. — 312 с. — ISBN 978-5-7038-5678-9.
2⠄Алексеев, Д. В. Методы интеллектуального анализа данных : учебник для вузов / Д. В. Алексеев, И. М. Петров. — Санкт-Петербург : Лань, 2022. — 288 с. — ISBN 978-5-8114-9234-5.
3⠄Андреев, С. В. Применение деревьев решений для анализа несбалансированных данных / С. В. Андреев, Е. А. Козлова // Вестник компьютерных и информационных технологий. — 2023. — № 6. — С. 45-52.
4⠄Белов, А. Н. Алгоритмы машинного обучения : учебное пособие / А. Н. Белов, П. М. Захаров. — Казань : Издательство Казанского университета, 2024. — 256 с. — ISBN 978-5-00130-789-0.
5⠄Борисов, И. В. Сравнительный анализ алгоритмов построения деревьев решений / И. В. Борисов, Д. С. Петров // Информационные технологии и вычислительные системы. — 2022. — № 4. — С. 112-120.
6⠄Васильев, К. А. Обработка пропущенных значений в задачах классификации / К. А. Васильев, Т. В. Громова // Научно-технический вестник информационных технологий, механики и оптики. — 2023. — Т. 23, № 2. — С. 301-308.
7⠄Введение в машинное обучение : учебное пособие / А. Б. Соколов, В. К. Морозов, И. В. Кузнецов. — Москва : ДМК Пресс, 2021. — 416 с. — ISBN 978-5-97060-945-6.
8⠄Воронцов, К. В. Математические методы обучения по прецедентам : учебное пособие / К. В. Воронцов. — Москва : МФТИ, 2022. — 340 с. — ISBN 978-5-7417-0789-4.
9⠄Глухов, А. П. Интеллектуальный анализ данных и машинное обучение : учебник / А. П. Глухов, Е. В. Сидоров. — Санкт-Петербург : Питер, 2024. — 384 с. — ISBN 978-5-4461-2345-6.
10⠄Громова, Т. В. Оптимизация алгоритма CART для больших данных / Т. В. Громова, А. В. Смирнов // Программные продукты и системы. — 2023. — № 3. — С. 415-422.
11⠄Дьяконов, А. Г. Методы машинного обучения : учебное пособие / А. Г. Дьяконов. — Москва : Издательство МГУ, 2021. — 296 с. — ISBN 978-5-211-06789-0.
12⠄Егоров, Д. А. Применение деревьев решений в медицинской диагностике / Д. А. Егоров, П. М. Захаров // Врач и информационные технологии. — 2024. — № 1. — С. 28-35.
13⠄Жуков, А. В. Оценка значимости признаков в деревьях решений / А. В. Жуков, И. В. Кузнецов // Известия вузов. Приборостроение. — 2022. — Т. 65, № 8. — С. 587-594.
14⠄Захаров, П. М. Анализ и обработка данных : учебное пособие / П. М. Захаров, А. Б. Соколов. — Москва : Горячая линия – Телеком, 2023. — 272 с. — ISBN 978-5-9912-0987-6.
15⠄Иванов, С. А. Рекурсивные алгоритмы в задачах машинного обучения / С. А. Иванов, Д. С. $$$$$$ // $$$$$$$ $$$$$$$$ $$$$$$$$$$$$$$$$ $$$$$$$$$$$$. $$$$$$$$$$, $$$$$$$$$$$$$$ $$$$$$$ $ $$$$$$$$$$$. — $$$$. — № $$. — С. $$-$$.
$$⠄$$$$$$$, $. $. $$$$$$$$$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$$$ : $$$$$$$$$$ / $. $. $$$$$$$. — $$$$$$ : $$$$, $$$$. — $$$ $. — $$$$ $$$-$-$$$$-$$$$-$.
$$⠄$$$$$$$$, $. $. $$$$$$ $ $$$$$$$$ $$$$$$$$$$ $$$$$$$$ $$$$$$$ / $. $. $$$$$$$$, $. $. $$$$$$$ // $$$$$$$$$$$ $ $$ $$$$$$$$$$. — $$$$. — $. $$, № $. — $. $$-$$.
$$⠄$$$$$$$, $. $. $$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$ $$$$$$$ / $. $. $$$$$$$, $. $. $$$$$$$ // $$$$$$$$$$$$$$ $$$$$$$$$$$$$ $ $$$$$$$$$ $$$$$$. — $$$$. — № $. — $. $$-$$$.
$$⠄$$$$$$, $. $. $$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$ : $$$$$$$ $$$$$$$ / $. $. $$$$$$, $. $. $$$$$$$. — $$$$$$$$$$$ : $$$$$$$$$$$$ $$$, $$$$. — $$$ $. — $$$$ $$$-$-$$$$-$$$$-$.
$$⠄$$$$$, $. $. $$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$ / $. $. $$$$$, $. $. $$$$$$$ // $$$$$$$ $$$$$$$$$$ $ $$$$$$$$$$$$$$ $$$$$$$$$$. — $$$$. — № $. — $. $$-$$.
$$⠄$$$$$$$, $. $. $$$$$$$$$$$$$$ $$$$$$ $ $$$$$$$$ $$$$$$$$ : $$$$$$$ $$$$$$$ / $. $. $$$$$$$, $. $. $$$$$$$$. — $$$$$$$$$$$$ : $$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$, $$$$. — $$$ $. — $$$$ $$$-$-$$$$-$$$$-$.
$$⠄$$$$$$$, $. $. $$$$$$$$$$$ $$$$$$ $$$$$$$$$ $$$$$$$$ : $$$$$$$ $$$$$$$ / $. $. $$$$$$$. — $$$$$$ : $$$$$, $$$$. — $$$ $. — $$$$ $$$-$-$$$$-$$$$-$.
$$⠄$$$$$$$, $. $. $$$$$$$$ $$$ $ $$$ $$$$$$$$$$$ / $. $. $$$$$$$, $. $. $$$$$$$$ // $$$$$$$$$$ $$$$$$$$$$$. — $$$$. — № $. — $. $$-$$.
$$⠄$$$$$$$$, $. $. $$$$$$ $$$$$$ $ $$$$$$$$$$$$$ $ $$$$$$$$ $$$$$$$ / $. $. $$$$$$$$, $. $. $$$$$$$ // $$$$$$$$$$$$$$ $$$$$$$$$$. — $$$$. — № $. — $. $$-$$.
$$⠄$$$$$$$, $. $. $$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$ $$$$$$$$ $$ $$$$$$ / $. $. $$$$$$$, $. $. $$$$$$$$. — $$$$$$ : $$$$$, $$$$. — $$$ $. — $$$$ $$$-$-$$-$$$$$$-$.
$$⠄$$$$$$$$, $. $. $$$$$-$$$$$$$$$ $ $$$$$$ $$$$$$$$ $$$$$$$ / $. $. $$$$$$$$, $. $. $$$$$ // $$$$$$$ $$$$$$$$$$$. — $$$$. — № $. — $. $$-$$.
$$⠄$$$$$$$$$, $. $. $$$$$$$$ $$$$$$$$: $$ $$$$$$ $ $$$$$$$$ : $$$$$$$ $$$$$$$ / $. $. $$$$$$$$$, $. $. $$$$$$. — $$$$$$-$$-$$$$ : $$$$$$, $$$$. — $$$ $. — $$$$ $$$-$-$$$-$$$$$-$.
$$⠄$$$$$$, $. $. $$$$$$$$$$$$ $ $$$$$$$$$$$$$ $$$$$$$$ $$$$$$$ / $. $. $$$$$$, $. $. $$$$$$$ // $$$$$$$$$$$$ $$$$$$. — $$$$. — $. $$, № $. — $. $$$-$$$.
$$⠄$$$$$$$$$$, $. $. $$$$$$$$$$$$ $$$$$$$$ $$$$$$$ $ $$$$ $ $$$$$$ / $. $. $$$$$$$$$$, $. $. $$$$$$$ // $$$$$$$ $$$$$$$$$$$$. — $$$$. — № $. — $. $$-$$$.
$$⠄$$$$$$$, $. $. $$$$$$$$$$ $$$$$$$$ $$$$$$$ $ $$$$$$$ $$$$$$$$$$ $$$$$$$$ / $. $. $$$$$$$, $. $. $$$$$$ // $$$$$$$ $ $$$$$$. — $$$$. — № $. — $. $$$-$$$.
2026-06-04 12:52:35
Краткое описание работы **Основная идея** данной работы заключается в разработке и реализации эффективного алгоритма построения дерева принятия решений, способного обрабатывать как категориальные, так и числовые данные с минимальными вычислительными затратами. В основе алгоритма лежит усовершенс...
2026-06-04 12:53:20
Краткое описание работы **Основная идея** работы заключается в разработке и реализации эффективного алгоритма построения дерева принятия решений, способного обрабатывать как числовые, так и категориальные данные с минимальными вычислительными затратами при сохранении высокой точности классификац...
2026-06-04 12:51:36
Краткое описание работы **Основная идея** данной работы заключается в разработке и программной реализации эффективного алгоритма построения дерева принятия решений, предназначенного для задач классификации и регрессии. В основе алгоритма лежит оптимизация критериев разбиения данных (например, на...
2026-03-31 16:19:33
Краткое описание работы Данная курсовая работа посвящена разработке информационной системы (ИС) для учёта и анализа аренды помещений. Актуальность темы обусловлена растущей потребностью предприятий и организаций в автоматизации процессов управления арендными отношениями, что позволяет повысить э...
2026-04-21 11:55:54
Ошибка генерации контента: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-proj-********************************************************************************************************************************************************1WkA. You can find your API key at https:...
2026-03-09 13:33:19
Краткое описание работы Данная курсовая работа посвящена реализации алгоритма "турнирной" сортировки, который представляет собой эффективный метод упорядочивания данных на основе принципа последовательных сравнений элементов в виде турнира. Актуальность темы обусловлена необходимостью повышения ...
Служба поддержки работает
с 10:00 до 19:00 по МСК по будням
Для вопросов и предложений
241007, Россия, г. Брянск, ул. Дуки, 68, пом.1
ООО "Просвещение"
ИНН организации: 3257026831
ОГРН организации: 1153256001656