← Вернуться к неделе 13

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Умное саммари · три взгляда

Один прогноз — три разных способа смотреть на данные.

На этой неделе модели разошлись по характерам. kNN спрашивает похожих, дерево задаёт полезные вопросы, а временной ряд смотрит назад и уважает порядок наблюдений.

Похожесть
→
kNN
·
Вопросы
→
Tree
·
История
→
Time Series

◎ Соседи

Новый объект получает ответ от похожих объектов: голосование для класса, среднее — для числа.

🌳 Дерево

Решение строится как последовательность вопросов: от корня к листу.

〽 Время

Во временном ряду порядок — часть данных. Перемешали строки — могли уничтожить историю.

Главная мысль. Алгоритм — не магическая кнопка. Сначала поймите, какую структуру вы хотите использовать: близость, правила или время.

Что делает kNN?

Измеряет расстояния, выбирает k ближайших объектов и использует их ответы.

Что делает дерево?

Последовательно задаёт вопросы о признаках и приходит в лист с итоговым прогнозом.
У соседей можно спросить совет. У дерева — пройти собеседование. А у временного ряда лучше не спрашивать завтра до того, как наступило завтра. 🙂
Лист 1 / 6 · Неделя 13

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

kNN · похожие объекты

«Скажи мне, кто твои соседи, и я скажу, кто ты».

Классификация

Соседи голосуют. Если 4 из 5 ближайших — синий класс, прогноз обычно синий.

Регрессия

Соседи дают числа. Берём среднее или, при необходимости, сильнее взвешиваем более близких.

Чтобы выбрать соседей, нужна метрика расстояния. На уроке основная геометрическая интуиция — евклидово расстояние: строка таблицы становится точкой, признак — координатой.

Малое kСлышит детали, но легко слышит и шум. k=1 особенно чувствителен к одной случайной точке.
Большое kСлышит толпу: устойчивее, но может растворить локальную структуру в общем среднем.
Если модель считает расстояние — проверьте масштаб. Признак в тысячах может «перекричать» признак в единицах. Поэтому нормализация для kNN часто критична.

Как выбирать k?

Не угадывать. Сравнивать несколько значений на validation / cross-validation и смотреть качество.

Проклятие размерности: когда признаков очень много, даже ближайшие объекты могут оказаться не такими уж близкими. Лишние признаки вредят понятию «сосед».

Почему доход может захватить расстояние у возраста?

Если доход измеряется тысячами, а возраст десятками, без нормализации числовая шкала дохода может доминировать.

Как выбирать k?

Экспериментом на validation / cross-validation, а не потому, что число красиво выглядит.
Лист 2 / 6 · Неделя 13

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Decision Tree · Random Forest

Дерево не ищет похожих. Оно ищет хороший вопрос.

Интуиция начиналась с «Угадай кто?»: хороший вопрос быстро уменьшает число вариантов. В данных персонажи заменяются строками таблицы, а вопросы — условиями по признакам.

Кореньпервый вопрос
Узелследующий вопрос
Ветвьответ
Листрешение
Путьобъяснение

Хороший split

После вопроса группы становятся более однородными. Gini и entropy измеряют эту «путаницу»; формулы на этой неделе не главное.

Порог для числа

Дерево само может искать вопрос вроде «возраст ≤ 35?» или «площадь ≤ 70?».

Почему дереву обычно не нужна нормализация? Оно сравнивает значения с порогами, а не измеряет расстояния. Масштаб меняет число в пороге, но не порядок объектов.

Слишком мелкое

Мало вопросов → грубая картина → underfitting.

Слишком глубокое

Запоминает детали train → overfitting. Глубину и другие ограничения проверяем на новых данных.

А если одно дерево нестабильно?

Random Forest строит много немного разных деревьев. Для классификации они голосуют, для регрессии усредняют ответы. Обычно устойчивее, но объяснять целый лес труднее.

Что важнее: красивый вопрос или полезный split?

Полезный split: после него неопределённость и смешанность классов должны уменьшиться.

Почему train может обмануть?

Очень глубокое дерево может почти запомнить обучающие объекты и выглядеть великолепно только на тех данных, которые уже видело.
Лист 3 / 6 · Неделя 13

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Time Series · увидеть историю

Во временном ряду порядок — часть данных.

Первое действие — не запускать модель, а построить график. Иначе тренд, сезонность, шум, выбросы и смены режима легко спрятать в таблице чисел.

Тренд

Долгосрочный рост, спад или другое постепенное изменение уровня.

Сезонность

Повторяющийся рисунок через сутки, неделю, месяц, год…

Шум

Случайные колебания без устойчивой структуры.

Выброс

Пик ≠ ошибка автоматически. Это может быть событие или новый режим.

Cumulative и daily отвечают на разные вопросы. Накопленная сумма может продолжать расти, даже если процесс уже замедляется.
cumulativet
−
cumulativet−1
=
значение за период

Difference

Делает видимыми пики, падения, волны и изменения скорости процесса.

Moving Average

Сглаживает шум. Малое окно сохраняет детали; слишком большое может спрятать важный скачок.

Periodogram

Помогает искать выраженные ритмы. Но найденный период должен иметь предметный смысл — это не кнопка «объяснить всё».

1050 сегодня, 1000 вчера. Что показывает Difference?

50 новых единиц за период.

Большое окно сглаживания всегда лучше?

Нет. Оно сильнее убирает шум, но может скрыть резкий важный скачок и детали.
Лист 4 / 6 · Неделя 13

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Временные ряды · честная проверка

Прошлое → train. Будущее → test.

Нельзя подсматривать завтра. Random split может смешать прошлое и будущее. Тогда модель получает информацию из времени, которого ещё не существовало в момент прогноза.

Даже при правильной границе train/test утечка может прийти через признаки. Все features должны быть доступны в момент прогноза.

lag1

вчера

lag2

позавчера

lag7

тот же день недели неделю назад — полезно при недельном ритме

Лаги превращают прошлое временного ряда в обычные признаки. После этого с ними могут работать Tree, kNN, Regression и другие табличные модели.

SARIMAX — только идея

Прошлые значения + сезонность + прошлые ошибки + внешние факторы → прогноз. На уроке не выводили формулы и не требовали подбирать p,d,q.

Prophet — только идея

Тренд + сезонности + праздники/события. Это ещё один способ разложить бизнес-ряд на понятные компоненты.

Можно ли использовать завтрашнюю температуру, чтобы предсказать сегодняшнее потребление?

Нет, если завтра ещё не известно в момент прогноза. Это leakage из будущего.

Зачем lag7?

При недельном ритме значение того же дня недели семь дней назад может содержать полезный сигнал.
Лист 5 / 6 · Неделя 13

Прокрутите лист вниз: примеры и самопроверка продолжаются ниже.

Orange · ловушки · финал

Не кнопки, а маршрут мышления.

kNN в Orange

Data / File → Preprocess → Neighbors → Test & Score

Меняем k, сравниваем качество, помним про масштаб.

Decision Tree в Orange

File / Data → Tree → Test & Score → Tree Viewer

Сравниваем сложность и читаем один путь от корня к листу.

COVID → Time Series

File → Data Table → Transpose → As Timeseries → Line Chart → Difference → Moving Transform → Periodogram

Сначала понимаем форму таблицы, потом превращаем её во временной ряд — не наоборот.

Ловушки недели. kNN без нормализации; k «на глаз»; слишком глубокое дерево; оценка только на train; cumulative вместо daily; чрезмерное сглаживание; random split во времени; leakage из будущего; период без предметного объяснения.

kNN

Ищет похожих.

Tree

Задаёт вопросы.

Time Series

Учитывает историю.

Финальная мысль: у разных моделей разный способ смотреть на данные. А человек должен понять, проверить и объяснить, почему результату можно доверять.

Нужно ли выбирать одну «лучшую модель для всего»?

Нет. Выбор зависит от структуры задачи, данных, цели и честной проверки на новых наблюдениях.

Что проверять первым?

Постановку задачи и форму данных. Только потом модель и метрики.
Если kNN, дерево и временной ряд одновременно требуют быть «лучшей моделью», посадите их в Test & Score. Но временной ряд — по времени, без жеребьёвки. 🙂
Лист 6 / 6 · Неделя 13