🔴 Сложный ⏱️ 25 минут

Деревья решений: как ИИ принимает решения

Деревья решений: как ИИ принимает решения

🎯 Зачем это нужно?

Представь, что ты создаёшь ботa для игры, который должен решить: атаковать противника или отступить? 🎮 Или алгоритм для банка, определяющий - выдавать кредит клиенту или нет? 💳 А может систему рекомендаций Netflix, решающую какой фильм предложить? 🍿

Все эти задачи решают деревья решений - один из самых понятных и популярных алгоритмов машинного обучения! Они работают как твой мозг когда ты принимаешь решения: задаёшь себе вопросы и идёшь по веткам “если да, то…, если нет, то…”.

🏆 Где используется прямо сейчас:

  • Медицина: диагностика заболеваний по симптомам
  • Банки: автоматическое одобрение кредитов
  • Игры: поведение NPC и противников
  • Маркетинг: персонализация рекламы

📚 История вопроса

В 1960-х психолог Эрл Хант изучал, как люди решают логические задачи. Он заметил, что мы естественным образом строим “деревья вопросов”! 🧠

В 1975 году математик Уинстон разработал алгоритм, который мог автоматически строить такие деревья. А в 1986 году Росс Квинлан создал знаменитый алгоритм ID3, который используется до сих пор!

Крутой факт: Random Forest (случайный лес) - это просто много деревьев решений, которые “голосуют” вместе. Работает в Amazon, Google, везде! 🌲🌲🌲

💡 Интуиция

Дерево решений работает как игра “20 вопросов” или диагност в больнице:

🤔 Врач думает: “У пациента температура > 38°C?”

  • Да → “Есть кашель?” → Да → “Грипп” / Нет → “Другая инфекция”
  • Нет → “Болит горло?” → Да → “Ангина” / Нет → “Здоров”

Каждый узел дерева задаёт вопрос о признаке. Каждая ветка - это ответ “да/нет”. Листья - финальные решения.

[МЕДИА: image_01] Описание: Простое дерево решений для диагностики болезни по симптомам Промпт: “educational decision tree diagram showing medical diagnosis, nodes with questions about symptoms like temperature and cough, branches with yes/no answers, leaf nodes with diagnoses, clean medical illustration style, blue and green colors”

📐 Формальное определение

Дерево решений - это алгоритм машинного обучения, который строит модель в виде древовидной структуры правил “если-то”.

Ключевые компоненты:

  • Корень - начальный узел с самым важным признаком
  • Внутренние узлы - вопросы о признаках
  • Ветви - возможные ответы на вопросы
  • Листья - финальные предсказания

Алгоритм построения (ID3):

  1. Выбор лучшего признака для разбиения:

    • Вычисляем Information Gain для каждого признака
    • IG(S,A) = H(S) - Σ(|Sᵥ|/|S|)·H(Sᵥ)
  2. Энтропия (мера “хаоса” в данных):

    • H(S) = -Σ pᵢ·log₂(pᵢ)
    • где pᵢ - доля класса i
  3. Рекурсивное построение поддеревьев

  4. Остановка когда все примеры одного класса или исчерпаны признаки

[МЕДИА: image_02] Описание: Математические формулы энтропии и information gain с визуальным объяснением Промпт: “mathematical formulas for entropy and information gain in decision trees, with visual examples showing high entropy (mixed colors) vs low entropy (uniform color), educational style, mathematical notation, clean design”

🔍 Примеры с разбором

Пример 1: Играть в футбол или нет?

У нас есть данные о погоде и решениях играть в футбол:

Погода Температура Влажность Ветер Играть?
Солнце Жарко Высокая Нет Нет
Солнце Жарко Высокая Да Нет
Облачно Жарко Высокая Нет Да
Дождь Мягко Высокая Нет Да
Дождь Прохладно Нормальная Нет Да
Дождь Прохладно Нормальная Да Нет

Шаг 1: Вычисляем начальную энтропию

  • 9 примеров “Да”, 5 примеров “Нет”
  • H(S) = -(9/14)·log₂(9/14) - (5/14)·log₂(5/14) = 0.94

Шаг 2: Вычисляем Information Gain для “Погода”

Разбиение по погоде:

  • Солнце: 2 “Нет”, 3 “Да” → H = 0.97
  • Облачно: 0 “Нет”, 4 “Да” → H = 0
  • Дождь: 3 “Нет”, 2 “Да” → H = 0.97

IG(Погода) = 0.94 - (5/14)·0.97 - (4/14)·0 - (5/14)·0.97 = 0.25

Результат: Выбираем “Погода” как корень дерева!

Пример 2: Кредитный скоринг

Банк хочет автоматически решать - одобрять кредит или нет:

                  Зарплата > 50000?
                 /                 \
              ДА /                   \ НЕТ
                /                     \
        Возраст > 25?              Есть поручитель?
          /        \                  /            \
       ДА/          \НЕТ           ДА/              \НЕТ  
        /            \             /                \
   ОДОБРИТЬ    Кредитная история?  ОДОБРИТЬ      ОТКАЗАТЬ
               /              \
            Хорошая        Плохая
              |              |
          ОДОБРИТЬ       ОТКАЗАТЬ

Такое дерево банк может построить на миллионах примеров и использовать для мгновенных решений! ⚡

🎮 Практика

Базовый уровень 🟢

Задание 1: По дереву из примера про футбол, определи решение для: Солнце, Жарко, Нормальная влажность, Есть ветер

💡 Подсказка Иди по ветвям дерева, отвечая на вопросы

Задание 2: Вычисли энтропию для набора из 8 положительных и 6 отрицательных примеров

✅ Ответ H = -(8/14)·log₂(8/14) - (6/14)·log₂(6/14) ≈ 0.985

Задание 3: Объясни, почему лист дерева с примерами только одного класса имеет энтропию = 0

Продвинутый уровень 🟡

Задание 4: Реализуй функцию подсчёта энтропии на Python:

def entropy(labels):
    # твой код здесь
    pass

Задание 5: У тебя есть данные о студентах и их успеваемости. Какой признак лучше выбрать для корня дерева: “Посещаемость” или “Время учёбы”?

Задание 6: Построй дерево решений для задачи: идти на вечеринку или готовиться к экзамену?

Челлендж 🔴

Задание 7: Что произойдёт с деревом, если добавить признак “ID студента”? Почему это плохо?

Задание 8: Предложи способ борьбы с переобучением деревьев решений

Задание 9: Реализуй алгоритм построения дерева решений с нуля (ID3)

⚠️ Частые ошибки

Ошибка: Строить очень глубокие деревья “для точности” ✅ Правильно: Ограничивать глубину и применять pruning
💡 Почему: Глубокие деревья переобучаются и плохо работают на новых данных

Ошибка: Использовать признаки с уникальными значениями (ID, номера телефонов) ✅ Правильно: Группировать или исключать такие признаки 💡 Почему: Алгоритм “запомнит” каждый пример, но не научится обобщать

Ошибка: Игнорировать дисбаланс классов ✅ Правильно: Применять взвешивание или балансировку выборки 💡 Почему: Дерево будет предсказывать только мажоритарный класс

🎓 Главное запомнить

✅ Дерево решений = серия вопросов “если-то” для предсказаний ✅ Information Gain = критерий выбора лучшего признака для разбиения
✅ Применяется везде: от медицины до игр, легко интерпретируется

🔗 Связь с другими темами

Назад: Опирается на энтропию и теорию информации из урока 315 Вперёд: Основа для Random Forest, Gradient Boosting и других ансамблевых методов Связано с: Логистической регрессией (другой способ классификации), кластеризацией (тоже разбивает данные на группы)

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!