Art of DS

Вигляд

Палітра
Тема
Доступ $20 одноразово
Увійти або створити акаунт

Вхід до Art of DSСтворіть акаунт Art of DS

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

  • Ви повернетеся на цю сторінку, туди, де зупинилися.
  • Уже маєте акаунт? З тією самою адресою ви просто ввійдете.

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

Ваш акаунт

Безкоштовний акаунтДоступ назавжди

складність 2/5 Безкоштовно

Machine learning workflow

Визначення

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

Інтуїція

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

Найкраще прогнозує розвиток подій рамка не «проєкту», а боргу. Побудувати систему прогнозування швидко; тримати її коректною — ні. Стандартна праця на цю тему стверджує, що «небезпечно вважати ці швидкі перемоги безкоштовними» і що «поширеною є ситуація, коли реальні ML-системи спричиняють величезні поточні витрати на підтримку» [2, abstract].

Робочий процес існує, щоб зробити ці витрати видимими, поки їх ще дешево змінити, — а це переважно означає рано.

Формальне визначення

Теореми тут немає: робочий процес — це інженерна дисципліна, і найкориснішим формальним твердженням про нього є той порядок фаз, до якого сходиться досвідчена практика. Версія Google має три фази й передумову, і саме передумова вражає: правило 1 — «не бійтеся запустити продукт без машинного навчання», бо «машинне навчання — це круто, але воно потребує даних» [1, Rule 1].

Далі фази йдуть так: Ваш перший конвеєр, Інженерія ознак, а потім Сповільнене зростання, доопрацювання оптимізації та складні моделі [1, ML Phase I–III]. Зверніть увагу, що стверджує цей порядок: складна модель — це остання фаза, після того, як інфраструктура й колонки вже правильні. Фаза I відкривається словами «тримайте першу модель простою і зробіть інфраструктуру правильно» [1, Rule 4].

Як це працює

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

Формулювання. Вирішіть, що прогнозується і що робитимуть із прогнозом. Настанова — «спроєктувати й реалізувати метрики» ще до того, як з’явиться модель [1, Rule 2], і взяти «просту, спостережну й атрибутовну метрику для першої цілі» [1, Rule 13].

Дані й поділи. Усе нижче за течією успадковує це. Відкладіть тестовий набір і тримайте його закритим, бо налаштування під нього призводить до просочування: «знання про тестовий набір може “просочитися” в модель, і метрики оцінювання більше не звітують про якість узагальнення» [3, §3.1].

Ознаки. Щойно є робочий конвеєр, саме тут «багато легкої здобичі», тому Google і робить це другою фазою [1, ML Phase II].

Навчання. Той крок, який усі й уявляють, і той, що найменше змінюється від проєкту до проєкту.

Оцінювання. За метрикою з першого кроку, на даних із другого, з крос-валідацією там, де один поділ надто шумний, щоб щось вирішувати [3, §3.1].

Експлуатація і ребро назад. Пунктирний зворотний шлях — це і є робочий процес, а не додаток до нього. Продакшен змінює дані: через контури зворотного зв’язку, через зміни в зовнішньому світі, через споживачів, про яких ви не знали. Аналіз технічного боргу називає це точно: «розмивання меж, заплутаність, приховані контури зворотного зв’язку, незадекларовані споживачі, залежності від даних, проблеми конфігурації, зміни в зовнішньому світі й різноманітні системні антипатерни» [2, abstract].

Два правила існують суто для того, щоб дві половини цього циклу лишалися узгодженими: зберігайте набір ознак, використаний під час обслуговування, і навчайтеся з нього [1, Rule 29], а розбіжність між навчанням і обслуговуванням вимірюйте як повноцінну метрику [1, Rule 37].

Де застосовується

  • Будь-яка модель, що виходить у світ. Моделі в блокноті потрібна ліва половина; моделі, яка ухвалює рішення, потрібен цикл.
  • Регульовані сфери — кредитування, страхування, медицина, — де питання аудиту стосується походження й версіонування, а не точності.
  • Рекомендації та ранжування, де ребро зворотного зв’язку не метафора: вихід моделі стає завтрашніми навчальними даними, і це і є прихований контур зворотного зв’язку [2, abstract].
  • Передавання роботи в команді. Робочий процес — це ще й контракт інтерфейсу: він визначає, за що відповідають аналітики, інженери й рецензенти.
  • Розбори інцидентів. Коли розгорнута модель деградує, робочий процес — це впорядкований перелік місць, куди дивитися.

Чому і коли

Дотримуйтесь порядку фаз, особливо коли він видається повільним. Спокуса — почати з моделі, бо ця частина цікава й наочна. Правило 4 пояснює чому: перша модель «дає продуктові найбільший приріст, тож їй не треба бути вишуканою», але «ви натрапите на значно більше проблем з інфраструктурою, ніж очікуєте» [1, Rule 4].

Обирайте просту спостережну ціль на початку. Легше покращувати метрику, яку можна атрибутувати, ніж сперечатися про метрику, яку не можна [1, Rule 13].

Тестуйте інфраструктуру окремо від навчання [1, Rule 5]. Більшість збоїв — це сантехніка, а сантехнічні збої, діагностовані як проблеми моделювання, коштують тижнів.

Знайте, коли не робити нічого з цього. Якщо задачу розв’язує евристика — викочуйте евристику [1, Rule 1]. Робочий процес дорогий і окуповується лише за певного масштабу наслідків.

Практичний приклад

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

Python 25 рядків Показати код Сховати код
import numpy as np

rng = np.random.default_rng(3)
n_cust, per_cust = 300, 6

home = rng.normal(0, 1, (n_cust, 2))                    # де розташований кожен клієнт
quirk = rng.random(n_cust) < 0.25                       # чверть поводиться нетипово
label = (home[:, 0] + home[:, 1] > 0) ^ quirk           # узагальнювана частина + примха

customer = np.repeat(np.arange(n_cust), per_cust)
X = home[customer] + rng.normal(0, 0.05, (n_cust * per_cust, 2))
y = label[customer].astype(int)

def nearest_neighbour(train, test):
    d = ((X[test][:, None, :] - X[train][None, :, :]) ** 2).sum(-1)
    return np.mean(y[train][d.argmin(1)] == y[test])

rows = rng.permutation(len(customer))
random_split = np.zeros(len(customer), bool)
random_split[rows[:360]] = True                         # 20% рядків, урозкид

held_out = np.isin(customer, np.arange(240, 300))       # 20% клієнтів, цілком

print(f"random row split      accuracy {nearest_neighbour(~random_split, random_split):.3f}")
print(f"grouped by customer   accuracy {nearest_neighbour(~held_out, held_out):.3f}")

Вивід

random row split      accuracy 0.808
grouped by customer   accuracy 0.631

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

Вісімнадцять пунктів — на рішенні, ухваленому до того, як почалося будь-яке моделювання.

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

Типові помилки

Оптимізація метрики, яку ніхто не обирав свідомо. Класика — точність на незбалансованій задачі: модель може бути чудовою за цією мірою й непридатною. Обирайте метрику на етапі формулювання [1, Rule 2].

Розбіжність навчання й обслуговування. Ознака, обчислена в блокноті, і ознака, обчислена в сервісі, тихо розходяться, і модель деградує без жодної помилки [1, Rule 37].

Незадекларовані споживачі. Хтось будує на виході вашої моделі, не сказавши вам, — і тепер ви не можете її змінити. Названо прямо серед механізмів боргу [2, abstract].

Сприймати розгортання як фініш. Світ, який описували навчальні дані, рухається далі; «зміни в зовнішньому світі» стоять у переліку ризиків саме тому [2, abstract]. Модель без моніторингу — це модель, про збій якої ви дізнаєтесь від користувача.

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

Ще не прочитаноДочитайте сторінку до кінця — і вона вважатиметься прочитаною.

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

Відкрити доступ

Перевірте себе

3 запитання

Кожну відповідь пояснено: який розділ вона перевіряє і з якого джерела.

Джерела

  1. Zinkevich. Rules of Machine Learning: Best Practices for ML Engineering (Google)docs · звірено 2026-09-05https://developers.google.com/machine-learning/guides/rules-of-ml
  2. Sculley, Holt, Golovin, Davydov, Phillips, Ebner, Chaudhary, Young, Crespo, Dennison. Hidden Technical Debt in Machine Learning Systems (2015)paperhttps://proceedings.neurips.cc/paper_files/paper/2015/hash/86df7dcfd896fcaf2674f757a2463eba-Abstract.html
  3. scikit-learn User Guide — Cross-validation: evaluating estimator performancedocs · звірено 2026-09-05https://scikit-learn.org/stable/modules/cross_validation.html

Маєте промокод?

Код зі знижкою 100% одразу відкриває все. Менша знижка віднімається від ціни у вікні оплати: введіть там той самий код.

Написати в підтримку

Питання, проблема з доступом, повернення коштів? Напишіть нам, і ми відповімо листом.

Про що це?

Адресу використаємо лише для відповіді вам.

Повідомлення надіслано

Дякуємо. Відповімо листом на адресу, яку ви вказали.

Або напишіть нам напряму

support@artofds.com

Повідомлення надіслано Дякуємо. Відповімо листом на адресу, яку ви вказали.

Перевірте адресу пошти: вона потрібна, щоб відповісти.

Це наша адреса. Вкажіть свою, щоб відповідь дійшла до вас.

На цю адресу не можна надіслати лист. Перевірте, чи немає помилки.

Напишіть трохи більше: щонайменше 10 символів.

Забагато повідомлень за короткий час. Спробуйте за кілька хвилин.

Не вдалося надіслати повідомлення. Напишіть нам напряму: support@artofds.com