DEV//UNIT

Дерево решений (ID3)

Вопросы по приросту информации: дерево само выбирает, что спросить.

время O(n · признаки · глубина)память O(дерево)уровень: начальный
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function entropy(p: number): number {
2 return p === 0 || p === 1 ? 0 : -p * Math.log2(p) - (1 - p) * Math.log2(1 - p)
3}
4
5function infoGain(rows: Row[], feature: number): number {
6 const total = entropy(avg(rows.map((r) => r.target)))
7 let weighted = 0
8 for (const v of [0, 1]) {
9 const subset = rows.filter((r) => r[feature] === v)
10 weighted += (subset.length / rows.length) * entropy(avg(subset.map((r) => r.target)))
11 }
12 return total - weighted // сколько неопределённости сняло разбиение
13}
14
15function id3(rows: Row[], features: number[]): Tree {
16 const best = features
17 .map((f) => ({ f, gain: infoGain(rows, f) }))
18 .sort((a, b) => b.gain - a.gain)[0]!
19 if (best.gain === 0) return { leaf: majority(rows) }
20
21 const yes = rows.filter((r) => r[best.f] === 1)
22 const no = rows.filter((r) => r[best.f] === 0)
23 return {
24 feature: best.f,
25 yes: id3(yes, features.filter((f) => f !== best.f)),
26 no: id3(no, features.filter((f) => f !== best.f)),
27 }
28}

Проблема

Вопросы по приросту информации: дерево само выбирает, что спросить.

Что вы видите

Энтропия до/после разбиения; максимум прироста — следующий узел.

Как это работает

Интерпретируемость — главное преимущество: путь в дереве = правило. Переобучение лечится ограничением глубины; леса — ансамбли таких деревьев.

Пошаговый разбор

  1. 01

    Энтропия

    Неопределённость метки.

  2. 02

    Прирост

    Что问 снимает больше.

  3. 03

    Лист

    Чистый класс.

Complexity и ограничения

time
O(n · признаки · глубина)
space
O(дерево)

Сложность см. в шапке страницы.

Edge cases

  • Пустой вход

    Корректная тривиальная обработка.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

Скоринг

Кредиты (правила!).

Медицина

Диагностические деревья.

Random forest

Тысячи таких деревьев.

Связанные алгоритмы

Shorts

«Почему модель решила именно так»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Почему модель решила именно так
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/decision-tree