Дерево решений (ID3)
Вопросы по приросту информации: дерево само выбирает, что спросить.
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 = 08 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 = features17 .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}Проблема
Вопросы по приросту информации: дерево само выбирает, что спросить.
Что вы видите
Энтропия до/после разбиения; максимум прироста — следующий узел.
Как это работает
Интерпретируемость — главное преимущество: путь в дереве = правило. Переобучение лечится ограничением глубины; леса — ансамбли таких деревьев.
Пошаговый разбор
- 01
Энтропия
Неопределённость метки.
- 02
Прирост
Что问 снимает больше.
- 03
Лист
Чистый класс.
Complexity и ограничения
Сложность см. в шапке страницы.
Edge cases
- Пустой вход
Корректная тривиальная обработка.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Скоринг
Кредиты (правила!).
Медицина
Диагностические деревья.
Random forest
Тысячи таких деревьев.
Связанные алгоритмы
«Почему модель решила именно так»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.