Уяви майстерню, де на стіні висять сім інструментів: молоток, викрутка, ножівка, лещата, дриль, рубанок, шліфмашина. Питання «який із них найкращий» звучить безглуздо — і саме тому в майстерні його ніхто не ставить. Ставлять інше: що я збираюся зробити, з якого матеріалу, скільки в мене часу і чи доведеться потім комусь пояснювати, як воно тримається.
У блоці 4 ми зібрали останні три інструменти: дерево рішень, випадковий ліс і градієнтний бустинг. До них уже були лінійна регресія, логістична регресія, k найближчих сусідів і наївний Баєс. Сім штук. Кожну ми розібрали окремо — і жодного разу не поставили їх поруч.
Ця тема ставить. Наскрізний приклад лишається тим самим, що й весь курс: дошка оголошень про вживані телефони, дві задачі — передбачити ціну (регресія) і розпізнати шахрайське оголошення (класифікація). Усі числа нижче пораховані на одній і тій самій дошці: 1 200 оголошень, з них 200 шахрайських.
01 / Чесна відповідьНайкращої моделі немає
Це не ухиляння й не педагогічна обережність. Це доведене твердження, і зветься воно теоремою про відсутність безкоштовних обідів (no free lunch). Її сенс такий: якщо усереднити якість алгоритму по всіх мислимих задачах, усі алгоритми покажуть однаковий результат. Будь-який метод, що виграє на одному класі задач, рівно стільки ж програє на іншому.
Звучить абстрактно, тому переведімо в практичне. Кожна модель — це припущення про те, як влаштований світ, записане у формі алгоритму:
- Лінійна й логістична регресія припускають, що вплив кожної ознаки сталий: додав гігабайт памʼяті — ціна підскочила на однакову суму незалежно від того, скільки її вже було.
- kNN припускає, що близькі за ознаками обʼєкти близькі й за відповіддю, а «близькі» вимірюються звичайною відстанню.
- Наївний Баєс припускає, що ознаки не повʼязані між собою всередині класу.
- Дерева та їхні ансамблі припускають, що відповідь можна отримати послідовністю порогових питань до окремих ознак.
Виграє та модель, чиї припущення ближчі до твоїх даних. Якщо ціна телефона справді падає рівномірно з роками — виграє пряма. Якщо шахрайство визначається комбінацією «ціна підозріло низька і акаунт свіжий» — виграють дерева, бо саме таку комбінацію вони і вміють записати. Тому єдиний спосіб дізнатися, хто виграє, — це поміряти. Решта теми про те, як міряти так, щоб результат щось означав.
02 / КаркасСім осей порівняння
Перше, що варто зламати в собі, — звичку порівнювати моделі одним числом. Точність важлива, але вона майже ніколи не єдина. Модель живе в системі: її треба навчити (це час), запустити (це знову час), пояснити комусь (це вже не час, а нерви), підтримувати роками. Ось осі, за якими моделі реально відрізняються.
Таблиця 1 · Сім моделей курсу за сімома осями
Оцінки типові, не абсолютні: на конкретних даних будь-яка клітинка може зсунутись. Таблиця відповідає на питання «чого очікувати», а не «що вийде».
| модель | якість на таблицях | даних треба | масштаб ознак | категорії й пропуски | навчання | передбачення | зрозумілість | ручок |
|---|---|---|---|---|---|---|---|---|
| лінійна регресія | середня | десятки | важливий | кодувати вручну | миттєве | миттєве | висока | 1 |
| логістична | середня | десятки | важливий | кодувати вручну | дуже швидке | миттєве | висока | 1–2 |
| kNN | середня | тисячі | критичний | погано | немає | повільне | середня | 1–2 |
| наївний Баєс | нижче середньої | сотні | байдужий | природно | миттєве | швидке | середня | 0–1 |
| дерево рішень | добра | сотні | байдужий | природно | швидке | миттєве | найвища | 2–3 |
| випадковий ліс | висока | сотні | байдужий | природно | повільне | помірне | низька | 1–2 |
| бустинг | найвища | тисячі | байдужий | природно | повільне | швидке | низька | 4–6 |
max_features), у бустингу
щонайменше пара «крок і кількість дерев» плюс глибина. «Масштаб ознак» — чи зіпсується
модель, якщо одна ознака в гривнях, а інша у відсотках: для kNN це питання життя,
для дерева — ні, бо порогові питання не змінюються від множення ознаки на сто.
«Зрозумілість» — чи можна показати людині, чому вийшла саме така відповідь.Дві клітинки варто прокоментувати окремо, бо вони найчастіше стають несподіванкою.
«Навчання: немає» у kNN. Метод нічого не обчислює наперед — він просто запамʼятовує навчальну вибірку. Уся робота переїжджає на момент передбачення, коли треба знайти найближчих сусідів серед усіх збережених оголошень. Тому в таблиці навчання безкоштовне, а передбачення найдорожче з усіх семи. Виміряймо це на нашій дошці: навчання на 960 оголошеннях і передбачення для 24 000 нових.
| модель | навчання, мс | передбачення 24 000, мс |
|---|---|---|
| логістична | ≈ 60 | ≈ 5 |
| наївний Баєс | ≈ 1 | ≈ 4 |
| дерево | ≈ 3 | ≈ 2 |
| kNN | ≈ 8 | ≈ 280 |
| випадковий ліс | ≈ 200 | ≈ 90 |
| бустинг | ≈ 310 | ≈ 30 |
Числа тут із одного прогону на звичайному ноутбуці — на іншій машині вони будуть інші. Важливі не вони, а співвідношення, і воно стійке: kNN передбачає приблизно в сотню разів повільніше за дерево, а ліс — єдиний, хто повільний з обох боків, бо на кожне передбачення треба обійти сто дерев.
Помнож це на навантаження. Мільйон передбачень пачкою логістична зробить приблизно за чверть секунди, а kNN — секунд за дванадцять. І це ще оптимістична оцінка: тут усі 24 000 рядків пораховані одним викликом, а в живому сервісі запити приходять по одному, і власні накладні витрати kNN платяться на кожному окремо.
«Зрозумілість: найвища» у дерева. Одне дерево можна намалювати й прочитати вголос: «якщо ціна нижча за 3 200 грн і акаунт молодший за три місяці — це шахрайство». Ліс зі ста дерев уже не прочитаєш, хоча він і показує важливість ознак. Бустинг у цьому сенсі найтемніший: його дерева передбачають не відповідь, а залишок, у якого немає побутового сенсу.
03 / ФормаОдна дошка, сім моделей
Таблиця показує, чим моделі відрізняються на словах. Тепер подивімось, чим вони відрізняються на вигляд. Візьмімо ту саму задачу про шахрайство, але лишімо дві ознаки, щоб усе вмістилося на площину: знижку від типової ціни (наскільки оголошення дешевше за середнє для такого телефона) і вік акаунта продавця в днях.
Шахрайство на цій дошці влаштоване так: підозріле або «дешево і продавець щойно зареєструвався», або «дешево настільки, що вже неважливо, хто продає». Разом ці два правила утворюють кутову область — фігуру, яку прямою лінією не обвести.
Інтерактив 1 · Межа рішення кожної моделі
300 оголошень для навчання, 2 000 нових для перевірки. Рожевим залито зону, яку модель вважає шахрайською. Точки — навчальні оголошення: кола чесні, хрестики шахрайські.
Зверни увагу на головне число: різниця між найгіршою й найкращою з семи моделей — близько чотирьох відсоткових пунктів, а різниця між найгіршою моделлю та базовою лінією «всі оголошення чесні» — понад одинадцять. Вибір моделі важить, але менше, ніж факт, що ти взагалі щось навчив.
04 / ОбсягСкільки в тебе даних
Наступна вісь — та, яку новачки помічають останньою, хоча вона вирішує найчастіше. Складна модель має багато параметрів; щоб їх надійно оцінити, потрібні дані. Коли даних мало, складна модель вивчає не закономірність, а конкретні рядки — це перенавчання в чистому вигляді. І тоді проста модель із «поганими» припущеннями виграє в складної моделі з правильними: її припущення хоч і грубі, зате не потребують підтвердження даними.
Інтерактив 2 · Хто виграє на 20 оголошеннях, а хто на 800
Та сама дошка. Для кожного обсягу модель навчається шість разів на різних вибірках, точність усереднюється й міряється на 700 нових оголошеннях. Вертикальна риска — поточне положення повзунка.
Із цієї картинки випливає практичний висновок, який варто запамʼятати цілком: складність моделі має рости разом з обсягом даних. Двісті рядків — територія лінійних моделей і наївного Баєса. Тисячі — територія лісу. Десятки тисяч — територія бустингу, і саме там він відривається від усіх остаточно.
05 / ДисциплінаЩо означає «порівняли»
Тепер найважливіша частина теми — і та, де помиляються найчастіше. Фраза «бустинг у нас показав 0.94, а kNN 0.59» не означає нічого, поки не сказано, як міряли. Чесне порівняння вимагає чотирьох однаковостей.
- Однакові дані. Ті самі рядки, ті самі ознаки, та сама передобробка. Якщо одній моделі ти прибрав викиди, а іншій ні — ти порівняв не моделі.
- Однаковий поділ. Ті самі фолди
крос-валідації з тим самим
random_state, а не «я перезапустив і взяв, що вийшло». - Однакова метрика. Одна, обрана заздалегідь. Не «ця модель краща за accuracy, а ця за recall — виберу ту, що мені симпатичніша».
- Однаковий бюджет на налаштування. Кожній моделі — стільки ж спроб підібрати гіперпараметри, скільки й решті.
Пункт другий здається дрібним, тому ось цифри. Ми поміряли F1 логістичної регресії й
дерева на нашій дошці пʼять разів, щоразу міняючи лише random_state поділу на
фолди. Дерево дало від 0.829 до 0.862, логістична — від 0.820 до 0.847. На кожному
окремому поділі дерево було попереду. Але якщо взяти дерево з невдалого поділу (0.829) і
логістичну з вдалого (0.847), вийде впевнена перемога логістичної — з різницею більшою,
ніж справжня перевага дерева. Розкид від поділу тут більший за різницю між
моделями. Саме тому поділ мусить бути спільним, а не «однаковим за методом».
Пункт четвертий коштує ще дорожче. Ось наша дошка, 5-fold крос-валідація, ті самі фолди, метрика F1. Ліворуч — моделі зі значеннями за замовчуванням, праворуч — кожній дали рівно чотири спроби підібрати свій головний гіперпараметр (вкладеною крос-валідацією, як у темі 24):
| модель | F1 з коробки | F1 з бюджетом | зміна | місце було → стало |
|---|---|---|---|---|
| бустинг | 0.919 | 0.940 | +0.021 | 1 → 1 |
| ліс | 0.801 | 0.903 | +0.102 | 4 → 2 |
| дерево | 0.887 | 0.886 | −0.001 | 2 → 3 |
| логістична | 0.825 | 0.835 | +0.010 | 3 → 4 |
| kNN | 0.405 | 0.589 | +0.184 | 6 → 5 |
| наївний Баєс | 0.483 | 0.524 | +0.041 | 5 → 6 |
Чотири спроби на модель — мізерний бюджет, а рейтинг уже перетасувався. Ліс піднявся з четвертого місця на друге, kNN додав 0.184 і перестав бути посміховиськом, дерево з другого місця опустилось на третє, нічого не втративши. Тепер уяви типовий пост у мережі: «ми взяли бустинг, перебрали двісті конфігурацій, і він переграв kNN з коробки». Це правда — і це нічого не означає.
Інтерактив 3 · Той самий рейтинг, два режими вимірювання
Дошка з двома ознаками з інтерактиву 1: 300 оголошень для навчання, 2 000 для перевірки. «Як є» — значення за замовчуванням, ознаки не масштабовані. «Рівний бюджет» — кожній моделі шість кандидатів, найкращий обрано трифолдовою крос-валідацією, ознаки масштабовані.
06 / ДноБазова лінія
Перш ніж радіти будь-якому числу, треба знати, з чим його порівнювати. Базова лінія (baseline) — це навмисно дурна модель, яка не дивиться на ознаки взагалі:
- для регресії — «завжди відповідай середню ціну по навчальній
вибірці» (
DummyRegressor); - для класифікації — «завжди відповідай найчастіший клас»
(
DummyClassifier).
На нашій дошці шахрайських оголошень 200 із 1 200. Модель «усі оголошення чесні» має точність 83.3 % і не знаходить жодного шахрая. Тепер уяви звіт: «наша модель має точність 87 %». Звучить пристойно, поки не згадаєш, що дурна константа дає 83.3 %, а справжня цінність вимірюється тим, скількох шахраїв модель упіймала. Ось чому accuracy бреше на нерівних класах, і чому базову лінію рахують першою, а не останньою.
Тепер зменшімо дошку вдесятеро — до 120 оголошень — і поміряймо ще раз:
| модель | точність на 1 200 | точність на 120 | F1 на 1 200 | F1 на 120 |
|---|---|---|---|---|
| базова лінія | 0.833 | 0.820 | 0.000 | 0.000 |
| логістична | 0.948 | 0.898 | 0.825 | 0.558 |
| kNN | 0.873 | 0.823 | 0.405 | 0.165 |
| наївний Баєс | 0.848 | 0.813 | 0.483 | 0.380 |
| дерево | 0.963 | 0.865 | 0.887 | 0.584 |
| ліс | 0.942 | 0.888 | 0.801 | 0.567 |
| бустинг | 0.975 | 0.890 | 0.919 | 0.606 |
Читаємо. На 120 оголошеннях наївний Баєс має точність 0.813 проти 0.820 у базової лінії — тобто програє константі, яка нічого не вміє. kNN тримається врівень із нею: 0.823 проти 0.820, різниця в межах шуму. Помітно відриваються від дна лише логістична (0.898), ліс (0.888) і бустинг (0.890), дерево тримається посередині (0.865) — і навіть у цих чотирьох F1 упав приблизно вдвічі. Це не аргумент проти цих моделей — це аргумент за те, що на 120 рядках жодна модель не врятує, і зусилля треба вкладати не у вибір алгоритму, а в збір даних.
07 / РецептПорядок дій на новій задачі
Тепер зберімо все у послідовність кроків. Порядок не випадковий: кожен наступний крок дорожчий за попередній, і кожен має сенс лише тоді, коли попередній уже дав число, з яким можна порівнювати.
Схема 1 · Чотири кроки, і коли зупинятись
Над кожним кроком — його ціна в часі. Унизу — чотири умови, за яких далі йти вже не треба.
Другий бік цього рецепта — вміння одразу відкинути те, що на цій задачі не працює. Ознаки самої задачі часто вказують на модель раніше, ніж перше вимірювання.
Таблиця 2 · Симптом задачі → з чого починати
Не правила, а перші здогади. Кожну ще треба перевірити вимірюванням — але починати з правильного місця дешевше.
| що бачиш у задачі | з чого починати | чому |
|---|---|---|
| Рядків менше за 200 | логістична або наївний Баєс | мало вільних величин — мало даних треба |
| Ознак більше, ніж рядків | лінійна модель із регуляризацією | решта моделей просто запамʼятає вибірку |
| Треба пояснити кожне рішення | одне дерево або лінійна модель | лише їх можна прочитати вголос |
| Багато категорій і пропусків | дерева, ліс, бустинг | працюють із ними без кодування |
| Відповідь потрібна за мілісекунди | лінійна модель або дерево | kNN і ліс платять на кожному запиті |
| Класи дуже нерівні | спершу метрику, потім модель | інакше переможе базова лінія |
| Треба максимум, і є година | бустинг із ранньою зупинкою | найсильніший на таблицях, але потребує ручок |
| Дані — не таблиця: текст, звук, фото | нейронні мережі | табличні моделі не бачать структури сигналу |
| Не знаю, з чого почати | базова лінія, потім ліс | два числа за пʼять хвилин — уже орієнтир |
08 / Ціна складностіКоли простіша модель краща
Припустімо, бустинг таки переміг: 0.940 проти 0.835 у логістичної. Здається, вибір зроблено. Але «точніша» і «та, що поїде в продакшн» — не синоніми, і причин щонайменше чотири.
Пояснюваність. Банк відмовляє в кредиті — і за законом мусить назвати причину. Страхова піднімає тариф — клієнт має право спитати чому. «Так вирішив ансамбль із трьохсот дерев» — не відповідь. Логістична регресія відповідає одразу: кожен коефіцієнт — це відношення шансів, і його можна проговорити словами.
Регуляторні вимоги. У медицині, кредитуванні й наймі діють правила, що прямо обмежують складність моделі або вимагають її аудиту. Модель, яку неможливо перевірити, часто просто заборонена — і питання її точності навіть не постає.
Ціна помилки. Якщо помилка коштує дорого і рідкісна, різниця в кілька відсоткових пунктів може бути менш важливою за передбачуваність поведінки. Лінійна модель на нових, незвичних даних помиляється плавно: вона продовжує пряму. Дерево на тих самих даних поверне значення найближчого листка, яким би недоречним воно не було. Знати, як модель поводиться поза межами навчальних даних, іноді цінніше за десяту частку метрики.
Вартість підтримки. Бустинг треба переучувати, стежити за кількістю дерев, зберігати модель на сотні мегабайтів, підтримувати бібліотеку й версії. Логістична регресія — це десяток чисел у текстовому файлі. Через рік, коли автор моделі змінить роботу, різниця стане відчутною.
09 / МежіЧого вибір моделі не вирішує
І чесне завершення блоку. Є три речі, проти яких безсилі всі сім моделей разом, і жодне налаштування нічого не змінить.
Погані ознаки. Модель бачить рівно те, що ти їй дав. На нашій дошці
шахрайство означає «ціна підозріло низька для такого телефона» — але серед ознак
є лише ціна окремо, рік окремо й памʼять окремо. Дерева здатні зібрати таке відношення
самотужки, послідовністю розрізів, лінійні моделі — ні. Додаймо одну ознаку:
ціна ÷ медіанна ціна такого бренду й року. Ось що стає з тими самими
моделями:
| модель | F1 на 7 ознаках | F1 з новою ознакою |
|---|---|---|
| логістична | 0.825 | 0.985 |
| дерево | 0.887 | 0.970 |
| бустинг | 0.919 | 0.964 |
Одна ознака, порахована трьома рядками коду, підняла логістичну регресію з третього місця на перше й лишила позаду налаштований бустинг. Це загальне правило, а не випадковість нашої дошки: робота з ознаками майже завжди дає більший приріст, ніж заміна моделі. Що таке ознака й звідки вона береться — тема про дані, ознаки й таргет.
Витік даних. Якщо в ознаки випадково потрапила інформація з майбутнього або сама відповідь у замаскованому вигляді, метрика злетить до 0.99 у будь-якої моделі — і розсиплеться в продакшні. Найкращий бустинг на витеклих даних гірший за найгіршу логістичну регресію на чесних. Ознаки витоку й способи його ловити — у темі про розбиття даних.
Зміщена вибірка. Якщо навчальні оголошення зібрані лише за один місяць або лише в одному місті, модель вивчить закономірності цього зрізу. Жоден алгоритм не здогадається про те, чого в даних не було. Це не проблема моделі — це проблема того, як дані потрапили в таблицю.
Спільне в усіх трьох: їх не видно з боку метрики. Крос-валідація покаже чудове число, модель переможе всіх конкурентів у чесному порівнянні — і зламається в перший день роботи. Тому питання «яку модель узяти» ніколи не буває першим. Першим завжди буде «чи справді ці дані відповідають на моє питання».
10 / МапаЩо вже вміємо
Двадцять тем — це половина курсу, і вона складається в замкнену картину. Варто побачити її цілком, перш ніж рухатись далі.
- Блок 1 — фундамент. Що таке навчання з учителя, звідки беруться ознаки й таргет, навіщо розбивати дані на три частини й чим міряти якість: MAE, RMSE і R² для регресії, precision, recall, F1 і ROC-AUC для класифікації.
- Блок 2 — перші моделі. Пряма, сигмоїда, сусіди й теорема Баєса. Разом із градієнтним спуском — механізмом, яким навчається половина всього, що є в машинному навчанні.
- Блок 3 — якість. Перенавчання й недонавчання, розклад помилки на зміщення й дисперсію, крос-валідація, регуляризація, підбір гіперпараметрів. Це не моделі, а дисципліна, без якої моделі не мають ціни.
- Блок 4 — дерева й ансамблі. Дерево, ліс, бустинг — і сьогоднішнє вміння поставити їх усіх поруч і чесно порівняти.
Що лишилось попереду. По-перше, дані на практиці: NumPy, pandas, передобробка й інженерія ознак — саме те, що, як щойно зʼясувалося, дає більший приріст, ніж вибір алгоритму. По-друге, навчання без учителя: задачі, у яких правильної відповіді немає взагалі — кластеризація, зниження розмірності, пошук аномалій. І по-третє, нейронні мережі: сімейство моделей, яке починається там, де табличні методи закінчуються — на тексті, зображеннях і звуку.
Але головне, що варто винести з цієї теми, від жодного з наступних блоків не залежить. Питання «яка модель найкраща» не має відповіді. Питання «яка модель краща на цих даних, за цією метрикою, при однаковому бюджеті» відповідь має — і ти тепер умієш її отримати так, щоб їй можна було вірити.
practice.ipynb ти збереш усі моделі
курсу в одну таблицю на одній крос-валідації, додаси базову лінію й побачиш, хто її не
переміг, даси кожній моделі однаковий бюджет на налаштування й подивишся, як перетасується
рейтинг, поміряєш час навчання й передбачення — а наприкінці повториш ту саму таблицю на
вдесятеро меншій вибірці, де переможець зміниться.Далі в темі
Теорію прочитано. Тепер закріпи її на практиці.