Перейти до змісту
Увійти

Теорія

Моделі та прогнозування

Що таке модель, як проста модель прогнозування продовжує тренд і як зрозуміти, чи прогноз чогось вартий.

~9 хв читання · 11 вправ · 250 балів

Перед початком

Перш ніж щось прогнозувати

Останній модуль у продуктовій команді Котокорму починається зі слова, яке всі вживають абияк: модель. Перш ніж команда щось прогнозуватиме для магазину, Alex, аналітик команди, хоче, щоб це слово означало щось конкретне.

У цьому уроці ти побачиш, що таке модель і якою вона буває, побудуєш простий прогноз, що продовжує тренд, і перевіриш, чи він кращий за наївне припущення.

Моделі: функціональні та структурні

Математична модель — спрощений формальний опис чогось реального. Вона лишає тільки те, що важливо для питання, тож можна досліджувати «а що, якщо» без експерименту на справжніх клієнтах: а що, якщо доставка пришвидшиться на день, а що, якщо ціна зросте на 10%.

Кіт на столі поруч із маленьким картонним макетом крамниці корму, а позаду стоїть справжня будівля крамниці.
Модель залишає лише важливе, щоб можна було перевіряти ідеї, не чіпаючи справжню крамницю.

Моделі відрізняються тим, що вони пов'язують.

  • Функціональна модель пов'язує вхідні чинники з одним результатом. «Відтік наступного місяця залежить від ціни, швидкості доставки й звернень у підтримку», записане рівнянням, — функціональна модель: подаєш вхідні дані й отримуєш прогноз. Регресійні моделі функціональні.
  • Структурна модель розкладає одне поняття на складові. «Лояльність клієнта = довіра + звичка + готовність рекомендувати» не прогнозує лояльність за чимось іншим, а описує, з чого вона складається. Такі моделі будує факторний аналіз, про який далі в модулі.

Перед будь-яким рівнянням іде змістова модель: простий перелік того, що може впливати і чому. Вона визначає, які дані збирати. Пропусти її — і отримаєш гарну формулу для тих колонок, що випадково були в базі, а важливі чинники лишаться поза нею.

  • Так
    відтік = f(ціна, швидкість доставки, звернення): функціональна модель.
  • Не так
    «Лояльність = довіра + звичка + рекомендації» як прогноз відтоку на наступний місяць.

    Структурний розклад описує поняття, а не прогнозує результат.

Неперервні та дискретні змінні

Моделі відрізняються ще й тим, яких значень набувають їхні змінні, і від цього залежить, які інструменти підходять.

  • Неперервна змінна може набувати будь-якого значення в діапазоні: сума замовлення (412,37 грн), вага посилки (2,41 кг), час доставки (26,5 години). Між будь-якими двома значеннями завжди є ще одне можливе. Їй пасують середні, стандартні відхилення й лінії регресії.
  • Дискретна змінна набуває обмеженого набору окремих значень: розмір боксу (малий, середній, великий), тарифний план, кількість товарів у замовленні. Її рахують або позначають, а не вимірюють.

На практиці межу іноді проводять за зручністю, а не за суворою теорією. Гроші формально рахуються в копійках, але з тисячами можливих сум поводяться як неперервна змінна. Оцінка від 1 до 5 дискретна й упорядкована.

Чому це важливо: розмір боксу, закодований як 1, 2, 3, лишається міткою. Якщо його усереднити («середній бокс — 1,8») чи підібрати до нього нахил, ніби «великий» рівно втричі більший за «малий», вийдуть числа, що виглядають точними, але мало що означають. Дискретні мітки входять у модель як змінні-індикатори 0/1.

  • Так
    Розмір боксу → три категорії 0/1 у моделі.
  • Не так
    «Середній розмір боксу цього тижня — 1,8.»

    Усереднює мітку, ніби це вимірювання.

Чотири мітки для однієї моделі

Щоб описати модель, досить двох незалежних запитань, і на кожне є дві відповіді.

Що вона пов'язує?

  • функціональна: вхідні чинники → один результат через рівняння (відтік за ціною і швидкістю підтримки);
  • структурна: одне поняття → його частини (лояльність як довіра, звичка й готовність рекомендувати).

Чи є в ній час?

  • статична: один момент, знімок (склад сегментів клієнтів цього тижня);
  • динамічна: зміна в часі (замовлення зростають на 15 щотижня, база передплатників щомісяця тане через відтік).

Запитання вільно поєднуються. Прогноз тижневих замовлень за рекламними витратами — функціональний і динамічний. Розклад чинників NPS цього кварталу — структурний і статичний. Більшість реальних бізнес-моделей змішані: динамічний прогноз виручки може містити неперервну виручку поруч із дискретними тарифними планами.

Ці мітки не дрібниця: вони кажуть, на які запитання модель здатна відповісти. Статичний знімок не спрогнозує наступний місяць, хай який гарний. Структурний розклад не скаже, що станеться, якщо змінити ціну. Перш ніж довіряти відповіді моделі, перевір, чи її тип пасує до запитання.

  • Так
    Прогноз тижневих замовлень за рекламними витратами → функціональна, динамічна.
  • Не так
    Використовувати знімок сегментів цього тижня для прогнозу зростання наступного кварталу.

    У статичній моделі немає часу, який можна продовжити.

Прогноз через продовження тренду

Найпростіший прогноз підбирає пряму до часового ряду — метрики, записаної через рівні проміжки часу, — і продовжує її.

Тижневі замовлення Котокорму за тижні 1–4: 200, 215, 230 і 245. Вони зростають рівно на 15 щотижня, тож підібрана пряма

y = 185 + 15 × тиждень

y=b0+b1⋅week,b0=185, b1=15y = b_0 + b_1 \cdot \text{week}, \quad b_0 = 185,\ b_1 = 15
Тренд, підібраний за тижнями 1–4: щотижня на 15 замовлень більше, починаючи з бази 185.

(185 — вільний член: значення прямої в уявному «тижні 0»). Щоб спрогнозувати, підстав номер тижня:

  • 5-й тиждень: 185 + 15 × 5 = 260;
  • 6-й тиждень: 185 + 15 × 6 = 185 + 90 = 275.
Тижневі замовлення: факт і прогнозТренд, підібраний за тижнями 1–4, прогнозував 260 замовлень на 5-й тиждень; фактично вийшло 258. На 6-й тиждень прогноз — 275.

Дані графіка

ТижденьФактПрогноз
W1200
W2215
W3230
W4245
W5258260
Показати ще 1 рядок
W6275

Дві звички тримають арифметику правильною: спершу множ, потім додавай (185 + 15 = 200, а тоді × 6 = 1 200 — класична помилка в таблицях), і підставляй номер тижня, а не кількість тижнів наперед.

Важливіше питання — наскільки цьому вірити. Пряма знає лише тижні, на яких її підібрано. На крок-два вперед це розумна оцінка. Далі реальні тренди згинаються: сезонність (святкові піки, літні спади), насичення ринку, акція конкурента. Чотири тижні даних не витримають п'ятирічного плану, хай які прямі вони на вигляд.

  • Так
    6-й тиждень: 185 + 15 × 6 = 275 замовлень
  • Не так
    6-й тиждень: (185 + 15) × 6 = 1 200 замовлень

    Додає перед множенням.

Залишки й наївна модель

Коли надходить реальне число, перевір прогноз. Залишок — це промах за один період:

залишок = факт − прогноз

На 5-му тижні вийшло 258 проти прогнозу 260, тож залишок — 258 − 260 = −2. Мінус означає, що модель завищила прогноз; плюс — що занизила. Тримай порядок сталим: якщо його перевернути, зміняться всі знаки й висновок про те, які тижні перевершили план.

Промах у 2 звучить мало, але мало порівняно з чим? Завжди порівнюй модель із наївною моделлю: найлінивішим прогнозом, якому не потрібна жодна модель. Для тижневих даних це зазвичай «як минулого тижня». Тут вона сказала б 245 на 5-й тиждень і промахнулася б на 258 − 245 = 13, більш ніж ушестеро гірше за трендову модель.

Модель, яка не перемагає наївну, нічого не додає, хай яка складна на вигляд. І один вдалий тиждень мало що доводить: оцінюй модель за промахами на кількох періодах, яких вона не бачила.

  • Так
    258 − 260 = −2: модель завищила прогноз на 2 замовлення.
  • Не так
    260 − 258 = +2: «ми перевершили прогноз».

    Прогноз мінус факт перевертає зміст.

Перенавчання і перевірка на тестовій вибірці

У кожному наборі даних є закономірність і трохи шуму: одноразові події, випадкові коливання. Досить гнучка модель (десять змінних, звивиста крива) може точно пройти через кожну минулу точку. Це не майстерність: вона вивчила й шум, а шум не повторюється. Це перенавчання: чудово на минулому, погано на майбутньому.

Захист — поділ на навчальну і тестову вибірки. Для даних у часі:

  1. Сховай найсвіжіші тижні, скажімо останню чверть даних.
  2. Підбери модель лише на раніших тижнях.
  3. Спрогнозуй сховані тижні й виміряй промахи.
Кіт вивчає велику стопку синіх карток, а меншу помаранчеву тримає під лапою сорочкою догори.
Сховай частину тижнів, поки будуєш модель, а потім перевір, як добре вона їх передбачає.

Похибка на схованих тижнях — чесна оцінка якості прогнозу. Якщо модель ідеально описує навчальні тижні, але сильно промахується на схованих, вона перенавчена; простіша модель, яка краще впоралася зі схованими тижнями, перемагає.

Саме тому високий R² на історичних даних — не привід хвалитися на стендапі. Він вимірює, наскільки модель описує дані, з яких її побудовано, а не наскільки добре вона прогнозуватиме.

  • Так
    Підібрати на тижнях 1–12, перевірити на тижнях 13–16, порівнювати моделі за тестовою похибкою.
  • Не так
    «Наша модель точно повторює кожен минулий тиждень, тож її прогнози надійні.»

    Ідеальне прилягання до минулого може бути чистим запам'ятовуванням.

Прогноз як діапазон

Прогноз — це оцінка, а будь-яка оцінка має невизначеність. Одне число її ховає: «275 замовлень» читається як обіцянка, і коли 6-й тиждень приносить 268, прогноз здається «хибним», хоча він свою роботу виконав.

Подавай прогноз як центральне значення плюс діапазон: «приблизно 275, найімовірніше від 260 до 290» або «275 ± 15». Звідки діапазон? Найпростіше чесне джерело — власні минулі промахи моделі на даних, яких вона не бачила. Якщо трендова модель зазвичай помилялася на 5–10 замовлень на відкладених тижнях, діапазон ±15 — розумний запас; ±1 був би самообманом.

Помаранчева стріла кота-лучника влучає в підсвічене кільце навколо центру мішені, але не точно в середину.
Прогноз чесніший як діапазон: точно в центр влучаєш рідко, але можна сказати, наскільки близько чекати.

Діапазон має ширшати, що далі прогнозуєш: наступний тиждень менш невизначений, ніж 12-й, бо дрібні похибки нахилу накопичуються.

Діапазон змінює рішення. Склад планує запаси на верхню межу, фінанси — гроші на нижню, і ніхто не дивується, коли фактичне число опиняється будь-де всередині. А ще він тримає розмову чесною, коли реальність трохи хитається.

  • Так
    «6-й тиждень: приблизно 275 замовлень, імовірно 260–290.»
  • Не так
    «6-й тиждень: 275 замовлень.»

    Ховає, наскільки число може зрушити.

Звички надійного прогнозу

Чотири звички відрізняють прогноз, на який можна спертися, від гарного графіка.

  1. Перевіряй на нових даних. Оцінюй модель за промахами на відкладеному періоді, а не за тим, як добре вона описує тижні, на яких її побудовано.
  2. Тримай модель простою, поки дані не вимагають більшого. Кожна додаткова змінна має заслужити місце на тестовій вибірці, а не лише покращити прилягання до минулого. Додати всі доступні колонки — найшвидший шлях до перенавчання.
  3. Подавай діапазон. Центральне значення з діапазоном каже, наскільки йому довіряти, і захищає тебе, коли реальність трохи відхиляється.
  4. Перевіряй заново, коли змінюється контекст. Модель вивчає світ таким, яким він був: старі ціни, торішні сезони, тодішніх конкурентів. Нова цінова схема, новий канал продажу чи новий конкурент можуть непомітно її зламати, тож перевіряй після кожного такого зсуву.

Двох спокус варто уникати: обирати модель із найменшою похибкою на її власних навчальних даних і ігнорувати нові дані, бо стара модель «раніше працювала». Обидва кроки здаються строгими, і обидва ведуть до застарілих і самовпевнених прогнозів.

  • Так
    Запустили нові ціни → перевірити прогноз на перших тижнях після запуску.
  • Не так
    «У моделі B найменша похибка на навчальних даних, тож прогнозуємо нею.»

    Похибка на навчальних даних винагороджує запам'ятовування, а не прогнозування.

Оцінка прогнозу: середня абсолютна похибка

Один залишок мало що каже; потрібна оцінка за кілька періодів, яких модель не бачила. Найпростіша — середня абсолютна похибка (MAE): бери кожен промах, відкидай знак і усереднюй.

Для трендової моделі y = 185 + 15 × тиждень, перевіреної на тижнях 5–7:

  • прогнози 260, 275, 290; факт 258, 268, 284;
  • промахи |−2| = 2, |−7| = 7, |−6| = 6;
  • MAE = (2 + 7 + 6) / 3 = 15 / 3 = 5 замовлень.

Навіщо відкидати знак? Без цього промахи в різні боки скорочуються: модель, що одного тижня на 50 вища, а наступного на 50 нижча, дала б у середньому 0 — «ідеальний» бал для жахливого прогнозу.

MAE вимірюється в одиницях самої метрики, тож читається природно: «зазвичай помиляємося приблизно на 5 замовлень на тиждень». Найкорисніша вона для порівняння. Наївна модель «як минулого тижня» на тих самих тижнях прогнозує 245, 258, 268 і промахується на 13, 10 і 16 — MAE 13. Трендова модель явно краща.

Зверни увагу: усі залишки тут від'ємні, тренд трохи випереджає реальність. Сталий знак — рання підказка, що зростання сповільнюється.

  • Так
    (2 + 7 + 6) / 3 = 5 замовлень
  • Не так
    (−2 − 7 − 6) / 3 = −5 або модель, що промахується на +50 і −50, «у середньому 0».

    Зі знаками промахи скорочуються.

Готові потренуватися?

Виконайте вправи уроку й отримайте 250 балів, коли пройдете його вперше.

Розпочати вправи