Вступ до машинного навчання для розробників

Теоретична лекція

Лекції
Машинне навчання
Author

Юрій Клебан

Published

20 жовтня 2025 р.

Презентація

🧠 1) Що таке ML і чим воно відрізняється від “звичайного” програмування

Машинне навчання (ML) — це спосіб проєктувати системи, які виводять правила з даних, а не отримують їх вручну від розробника.

У класичному (rule-based) підході ви прописуєте логіку, яка на вході отримує дані і повертає рішення.

У ML ми замінюємо ручні правила моделлю \(f_\theta(x)\), параметри \(\theta\) якої налаштовуються на основі прикладів \(\{(x_i, y_i)\}_{i=1}^n\).

Формально ми мінімізуємо емпіричний ризик \(\hat R(\theta) = \frac{1}{n}\sum_{i=1}^n \ell\!\big(f_\theta(x_i), y_i\big)\), а прагнемо зменшити істинний ризик \(R(\theta) = \mathbb{E}_{(x,y)\sim\mathcal{D}}\, \ell\!\big(f_\theta(x), y\big)\).

Важливо усвідомлювати різницю між доступним нам \(\hat R\) і недосяжним напряму \(R\): саме вона породжує проблему узагальнення — здатність системи добре працювати на нових, невидимих даних із того ж розподілу.

Практично ML — це інженерія рішень на даних. Розробник керує не гілками if-else, а якістю даних, вибором моделі/метрики та процедурами валідації. Це змінює життєвий цикл розробки: поряд із етапами “специфікація → реалізація → тестування → деплой” з’являються “збір/маркування даних → підготовка/фічерінг → навчання/відбір → моніторинг у проді”. Ще одна відмінність — ймовірнісний характер рішень: замість детермінованого правила ми часто отримуємо імовірність події й далі приймаємо порогове або байєсівське рішення з урахуванням вартості помилок.

Для розробника це означає інші типи ризиків. Якщо у класичному ПЗ помилка — це баг у коді, то тут найкритичніші дані: зміщені, зашумлені, нерепрезентативні або такі, що “підглядають” у майбутнє, підривають здатність моделі узагальнювати. Відповідно, процес побудови ML-системи включає контроль зміщень, аудит джерел, відокремлення навчальних і тестових наборів у часі, фіксацію версій даних і артефактів. У продакшені ML живе в середовищі, яке змінюється: розподіли даних дрейфують, бізнес-правила коригуються, тому потрібні SLO/SLI саме для ML-функцій (метрики якості, затримка, стабільність) і регламенти пере-навчання.

Приклади, де ML природно “вростає” у розробку: рекомендателі у продуктах контенту (персоналізація плейлистів чи стрічки новин), виявлення шахрайства у платіжних системах (аномалії транзакцій), тріаж заявок у службі підтримки (класифікація наміру), контроль якості на виробництві (комп’ютерний зір), прогноз попиту/відтоку (тайм-серіси). У всіх випадках ключ — дані + валідовані метрики, а не лише алгоритм.


🧭 2) Карта типів навчання: supervised / unsupervised / semi-supervised / RL

Класифікація видів навчання допомагає правильно поставити задачу. У supervised learning маємо приклади з мітками: \(\{(x_i, y_i)\}\). Мета — наблизити функцію \(f_\theta\) до цільового відображення між ознаками \(x\) і мішенню \(y\). Типові задачі: регресія (неперервна \(y\)) та класифікація (дискретна \(y\)). У unsupervised learning міток немає: шукаємо структуру в \(x\) (кластеризація, зниження розмірності, щільність). Це корисно для сегментації клієнтів, виявлення аномалій без явних “правильних” відповідей, попереднього структурування простору ознак. Semi-supervised комбінує невелику кількість позначених прикладів із великою масою непозначених — корисно, коли маркування дороге. Нарешті, reinforcement learning вчить агента послідовно діяти у середовищі, максимізуючи зважену суму винагород.

Вибір типу залежить від ресурсів і мети. Якщо є чіткий бізнес-лейбл (дефолт/недефолт, відтік/утримання), краще починати із supervised — він дає керований прогрес через явні метрики. Якщо мети — розвиток інсайту (розуміти “які в нас типи користувачів”), то початковий unsupervised допоможе виявити латентну структуру (кластеризація), яку згодом можна підкріпити supervised-кроком (побудувати класифікатор для нових об’єктів). Semi-supervised доречний, коли еталонні мітки можна зібрати лише частково (наприклад, модератор перевіряє 5% контенту). RL — інструмент, коли послідовність і контекст важать більше за статичний прогноз: рекомендаційні системи з довгостроковою залученістю, динамічне ціноутворення, робототехніка.

Слабкі місця кожної парадигми теж важливі. У supervised — якість міток (шум, зсуви у розмітці), ризик витоку (feature розкриває майбутнє), дисбаланс класів та зміни в базових частках. В unsupervised — неоднозначність: “правильних” кластерів не існує, потрібні зовнішні критерії корисності. У semi-supervised — загроза самопосилення помилок (псевдомітки). У RL — винагорода і безпека: погано визначена функція винагороди призводить до небажаної поведінки, а збір досвіду може бути дорогим або ризикованим.

З точки зору інженерії ПЗ, карта типів навчання підказує і архітектуру системи: pipeline збору міток (форми, модерація, активне навчання), сховище фіч, версіонування датасетів, моніторинг дрейфів (\(p(x)\), \(p(y)\), \(p(y|x)\)). Вибираючи тип навчання, ви фактично визначаєте тип артефактів (моделі, трансформери, марковані набори), ритм оновлення (онлайн/офлайн) і метрики успіху (від ROC-AUC до кумулятивної винагороди в RL).


🧱 3) Дані та їх представлення: ознаки, шкали, якість і фічерінг

Якість моделі обмежена якістю уявлення даних. Формально кожен об’єкт описується вектором ознак \(x\in\mathbb{R}^d\) (або у змішаному просторі з категоріальними компонентами). Шкали вимірювання визначають допустимі перетворення та дистанції: номінальна (категорії без порядку), порядкова (ранги), інтервальна (різниця має сенс, нуль — умовний), шкала відношень (нуль абсолютний, операції множення мають сенс). Неправильне поводження зі шкалами (наприклад, трактування ідентифікаторів як чисел із метрикою відстані) створює псевдозалежності й заважає узагальненню.

Кодування категорій (one-hot, target encoding, ordinal) і масштабування числових ознак (нормалізація/стандартизація) потрібні для алгоритмів, чутливих до масштабів і геометрії (лінійні моделі, SVM, k-сусідів). Принципово: усі статистики перетворень (середні, дисперсії, параметри імпутації) мають обчислюватися виключно на train і застосовуватися до validation/test, інакше виникає leakage. Пропуски можуть бути MCAR (випадкові), MAR (залежні від інших змінних) або MNAR (залежні від незаміряного механізму). Від цього залежить стратегія (проста імпутація, індикатор пропуску, модельна імпутація) і очікуване упередження.

Аномалії збурюють оцінки: робастні міри (медіана, MAD) і відсіювання за \(z\)-скором чи IQR корисні до побудови моделі. У часових рядах потрібні ковзні вікна і тест на сезонність/тренд. Фічерінг — це не “накрутити якнайбільше”, а вбудувати доменне знання: агрегування транзакцій за вікнами, взаємодії ознак (перехресні терми), логарифмування зі стисненням шкал, “географічні” фічі (відстані, щільність). Усе це має бути детерміновано й повторювано: у продакшені перетворення повинні працювати так само, як і під час тренування.

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


⚖️ 4) Емпіричний ризик, функції втрат і регуляризація

У ML ми оптимізуємо цільову функцію — найчастіше емпіричний ризик \(\hat R(\theta)\) із регуляризацією:
\(\min_{\theta}\; \hat R(\theta) + \lambda\,\Omega(\theta)\),
де \(\Omega(\theta)\) — штраф за складність (наприклад, \(\|\theta\|_2^2\) або \(\|\theta\|_1\)). Вибір втрат \(\ell\) — це вибір того, що таке “помилка”: у регресії часто беруть MSE (штрафує великі промахи квадратично) або MAE (робастна до викидів). У класифікації природна втрата — крос-ентропія, яка відповідає максимізації правдоподібності за Бернуллі/Категоріальним розподілом; для SVM — hinge-loss (маржинальний критерій).

Чому потрібна регуляризація? Без неї модель може “вивчити” шум у даних. L2 робить параметри “малими”, зменшуючи дисперсію оцінок; L1 сприяє розрідженню — непрямому відбору ознак. На рівні компромісів це відбиває класичний bias–variance trade-off: збільшуючи складність, ми зменшуємо зміщення (bias), але зростає варіативність (variance). Правильний баланс — той, що мінімізує очікувану помилку на нових даних.

Оптимізація залежить від гладкості/опуклості. Для лінійних моделей із опуклими втратами маємо єдиний мінімум і добре працюють градієнтні методи. Для нейромереж з не-опуклим ландшафтом гарантій немає, але на практиці SGD/Adam із правильною швидкістю навчання, нормалізацією та ранньою зупинкою дають хороші рішення. Не забувайте про критерії зупинки (стабілізація валідаційної помилки) і контроль шуму міток (регуляризація, робастні втрати, навчання з рано зупиненими епохами).

Приклади впливу вибору втрат і регуляризації: у кредитному скорингу потрібна стабільність і інтерпретованість, тому L1/L2-регуляризовані лінійні моделі — сильна база; у медичній діагностиці з нерівними вартостями помилок потрібна вагова або асиметрична втрата; у маркетингу для оцінки uplift моделі часто переглядають регуляризацію, щоб контролювати коливання оцінок на малих підвибірках.


📉 5) Регресія: від лінійної до регуляризованих моделей

Регресія моделює неперервну ціль. Лінійна регресія припускає, що \(\mathbb{E}[y|x] \approx x^\top\beta\); оцінка \(\hat\beta\) через метод найменших квадратів мінімізує суму квадратів залишків. Така модель проста, інтерпретована й служить базовим рівнем у більшості задач прогнозування. Але важливо пам’ятати про припущення: лінійність зв’язку, гомоскедастичність, відсутність мультиколінеарності та автокореляції похибок. Порушення ведуть до неефективності чи зміщення оцінок.

Регуляризація рятує від нестабільності. Ridge (L2) зменшує дисперсію, Lasso (L1) може занулити коефіцієнти, вибираючи суттєві ознаки, Elastic Net поєднує обидві ідеї. У практиці прогнозу попиту/бюджетування чи оцінки часу виконання задач (SLA) часто починають саме з цих регуляризованих форм. Ще одна важлива річ — екстраполяція: лінійна модель часто добре інтерполює, але за межами спостережених \(x\) може давати абсурдні значення; контроль діапазонів і сценарний аналіз — обов’язкові.

Метрики помилки в регресії — MAE, MSE, RMSE, \(R^2\) — мають різний сенс. RMSE підкреслює великі відхилення, MAE робастніший. \(R^2\) зручний як відносна міра, але його легко “накрутити” додаванням ознак; крос-валідація або інформаційні критерії (AIC/BIC) дають чесніший контроль складності. У практичних кейсах (прогноз середнього чека, навантаження інфраструктури, деградації обладнання) корисні періодичні ревалідації на свіжих даних — світ змінюється, і модель має наздоганяти.


🧩 6) Класифікація та логістична регресія

Класифікація повертає ймовірність класу, наприклад \(\hat p(y=1\mid x) = \sigma(w^\top x + b)\) у логістичній регресії, де \(\sigma(z)=\frac{1}{1+e^{-z}}\). Логістична модель — сильна база: інтерпретована (знаки/величини коефіцієнтів), швидко навчається, добре працює з лінійно роздільними даними після правильного фічерінгу. Ключове — вибір порога \(t\) для рішення: якщо \(\hat p \ge t\), відносимо до позитивного класу. \(t\) підбирають за бізнес-вартістю помилок (false positive vs false negative), а не за “красивим” 0.5.

Оцінювання ґрунтується на матриці помилок та похідних метриках: Precision, Recall, F1, ROC-AUC (чутливість до порядку, а не до вибору \(t\)), PR-AUC (особливо корисна за сильного дисбалансу). Для інтерпретованої підтримки рішень важливе калібрування імовірностей: щоб 0.8 означало приблизно 80% частоти подій. У задачах із рідкісним позитивом (шахрайство, медичний скринінг) краще оцінювати модель за PR-кривою, налаштовувати класові ваги або робити resampling.

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


🌳 7) Дерева рішень і ансамблі (Random Forest, градієнтні методи)

Дерева рішень будують ієрархію правил “якщо-то”, автоматично обираючи ознаки і пороги. Для класифікації чистоту вузлів вимірюють ентропією або індексом Gini, для регресії — дисперсією. Перевага дерев — інтерпретованість і здатність моделювати нелінійності та взаємодії без явного фічерінгу. Недолік — нестабільність: невеликі зміни в даних можуть сильно змінити дерево; без контролю складності (max depth, min samples, pruning) дерева переобучуються.

Ансамблі компенсують слабкості окремих дерев. Random Forest зменшує дисперсію через бэггінг: тренує багато дерев на підвибірках ознак і прикладів, усереднює прогнози. Градієнтний бустинг (XGBoost/LightGBM/GBDT) послідовно додає слабкі моделі, які виправляють помилки попередніх, оптимізуючи диференційовну функцію втрат. На практиці бустинг часто дає state-of-the-art на табличних даних, якщо приділено увагу гіперпараметрам, регуляризації (learning rate, depth, subsampling) та валідації (time-split для часових сигналів).

Де це працює найкраще? Табличні фінансові та операційні дані (скори дефолту, propensity-моделі, прогноз дефектів), де зв’язки складні, але обсяг фіч помірний. Ансамблі добре тримаються на “грязних” даних із пропусками/нелінійностями і дають адекватні важливості ознак (не як абсолютну істину, а як орієнтир). Водночас у доменах CV/NLP сьогодні лідирують глибокі мережі з попереднім навчанням — ансамблі можуть виконувати роль базової лінії або компонента стекінгу.


➖ 8) SVM і поняття “межі рішення”

SVM шукає гіперплощину з максимальним відступом (margin) між класами. Ідея: чим ширший відступ, тим стійкіше рішення до шуму. У soft-margin варіанті дозволяються помилки з штрафом, керованим \(C\) (чим більше \(C\), тим суворіше покарання за помилки). Втрати — hinge-loss; оптимізаційна задача випукла, що гарантує глобальний мінімум. Для нелінійних кордонів застосовують ядровий трюк: замість явного відображення в простір високих розмірностей використовують ядро \(K(x, x')\) (RBF, поліном, лінійне), яке обчислює скалярний добуток у цьому просторі без явних координат.

SVM історично давали чудові результати на середніх за розміром наборах із чіткою геометрією класів (біомедичні маркери, рукописні цифри, поведінкова біометрія). Плюси: добра теорія узагальнення, контроль складності через \(C\) та параметри ядра, стійкість до викидів за правильно підібраними гіперпараметрами. Мінуси: складність \(O(n^2)\)\(O(n^3)\) для навчання класичного SVM (не завжди масштабовано), потреба масштабування ознак, неімовірнісний вихід (потрібне калібрування, якщо потрібні ймовірності). Вибір між SVM і, скажімо, бустингом або логістикою — питання ресурсів, розміру вибірки та вимог до швидкості передбачення.


🧠 9) Нейронні мережі: персептрон, MLP та регуляризація

Нейронні мережі моделюють складні нелінійні залежності через композиції афінних перетворень і нелінійностей (ReLU, tanh, sigmoid). Багатошаровий персептрон (MLP) — універсальний апроксиматор: за достатньої ширини/глибини може наближати неперервні функції на компактних множинах. Навчання — мінімізація емпіричного ризику через backpropagation і стохастичні градієнти. На відміну від опуклих задач, ландшафт втрат у NN багатий на локальні мінімуми/сідлові точки; утім, на практиці сучасні оптимізатори (SGD із моментумом, Adam) і нормалізація (Batch/LayerNorm) дають гарні рішення.

Головний виклик — узагальнення: великі мережі легко запам’ятовують дані. Стратегії контролю — L2-регуляризація, dropout, рання зупинка, data augmentation та достатній обсяг репрезентативних даних. У табличних задачах простий MLP не завжди переважає ансамблі дерев; у CV/NLP навпаки мережі (особливо з попереднім навчанням) задають стандарт якості. Практичні ризики — дрейф розподілів, катастрофічне забування під час донавчання, витрати обчислень. Архітектурні рішення (skip-зв’язки, нормалізації, активації) і MLOps-практики (відтворюваність, профайлінг) критично важливі для стабільних продуктів.


🧪 10) Валідація, підбір гіперпараметрів і надійність імовірностей

Валідація — запобіжник самообману. Hold-out простий, але чутливий до розбиття; k-fold знижує дисперсію оцінки; stratified зберігає частки класів; для часових рядів потрібен time-series split (лише вперед у часі). Для підбору гіперпараметрів — nested CV, щоб не “підглядати” в тест. Вибір метрик має відповідати вартісній моделі помилок: інколи оптимум за ROC-AUC не збігається з бізнес-оптимумом за очікуваною корисністю.

Імовірності мають бути калібровані, якщо їх використовують у порогових рішеннях або каскадах (напр., різні пороги для різних сегментів). Некалібровані моделі можуть мати високу еталонну метрику, але призводити до систематичних рішень, що шкодять бізнесові. Додайте довірчі смуги для оцінок якості (бутстреп) і стабільність до підвибірок (sensitivity analysis). Окремо контролюйте leakage: всі перетворення, що обчислюють статистики (масштабування, імпутація, target encoding), повинні навчатися тільки на train.


🎛️ 11) Узагальнення: bias–variance, навчальні криві, стійкість до зсувів

Класичний розклад помилки для точки \(x\) виглядає так:
\(\mathbb{E}\big[(\hat f(x)-f(x))^2\big] = \underbrace{(\mathbb{E}[\hat f(x)]-f(x))^2}_{\text{Bias}^2} + \underbrace{\mathbb{Var}[\hat f(x)]}_{\text{Variance}} + \underbrace{\sigma^2}_{\text{Irreducible noise}}\).
Це формалізує інтуїцію: надто проста модель має високий bias, надто складна — високу variance. Інструменти контролю — регуляризація, ансамблі, збільшення даних, рання зупинка. Навчальні криві (train/val-помилка vs обсяг даних або складність) допомагають вирішити: інвестувати у якість/обсяг даних чи в модельну складність.

Стійкість до зсувів — окремий вимір узагальнення. Розрізняють covariate shift (\(p(x)\) змінюється), prior shift (частки класів \(p(y)\)), concept drift (\(p(y|x)\)). Для кожного — свої моніторингові тести (дивергенції, PSI, порівняння емпіричних розподілів), політика трігерів пере-навчання й вбудовані експерименти (A/B або канарейкові релізи). У регульованих доменах додаються вимоги стабільності за групами (fairness), де важливі багатовимірні зрізи якості.


🔁 12) Впровадження, відтворюваність та етика

Відтворюваність у ML — це контроль експерименту: версії даних/коду/артефактів, фіксовані середовища, журнали трансформацій (data lineage), контроль схем (валидація типів, діапазонів). У CI/CD додаються data-tests і model-tests (перевірки стабільності метрик і обмежень). У продакшені визначають SLO/SLI для якості прогнозів і затримки, моніторять дрейф і деградацію, мають плейбуки пере-навчання та відкату моделей.

Етика — не про “побажання”, а про ризик-менеджмент. Справедливість (fairness), приватність, безпека і підзвітність мають бути відбиті у політиках і технічних засобах: мінімізація упереджень (збалансування, регуляризація справедливості, корекція порогів), прозорість (data/model cards, логування причин рішень), захист даних (анонімізація, контроль доступу). Особливо це важливо в рекрутингу, кредитуванні, охороні здоров’я — там рішення моделі впливають на людей, і регулятори вимагають аудиту.


📚 Література та рекомендовані джерела

  • Andriy Burkov. The Hundred-Page Machine Learning Book. (Стисла, інженерно-орієнтована оглядова книга: парадигми навчання, регуляризація, SVM/ядра, етапи процесу.)
  • Bishop, C. M. Pattern Recognition and Machine Learning. (Класика з детальною теорією, імовірнісні моделі.)
  • Hastie, Tibshirani, Friedman. The Elements of Statistical Learning. (Глибокий статистичний фундамент ансамблів, регуляризації, SVM.)
  • Goodfellow, Bengio, Courville. Deep Learning. (Сучасна теорія глибоких мереж, оптимізація, регуляризація.)
  • Mitchell, T. Machine Learning. (Базові визначення та історичний контекст дисципліни.)
  • Офіційні довідники до інструментів валідації та моніторингу моделей (MLflow, Evidently, Great Expectations) — для налагодження відтворюваності та контролю якості.

Лого

Лого

Проєкт реалізується за підтримки Європейського Союзу в межах програми Дім Європи.