Thumbnail for Дерева Рішень: шлях від перенавчання до оптимальної моделі | Покроковий розбір алгоритму by POP.corn(ML)

Дерева Рішень: шлях від перенавчання до оптимальної моделі | Покроковий розбір алгоритму

POP.corn(ML)

6m 15s802 words~5 min read
Auto-Generated

[0:01]Вітання. Ми розбираємо лабораторну роботу з теми Дерева рішень. Наша місія - пройти дев'ять ключових кроків від хаосу сирих даних до моделі, яку можна і зрозуміти, і захистити. І для цього, до речі, ідеально підходять класичні датасети з Kaggle, наприклад, Heart Disease UCI. Чому саме він? А тому, що там усе доволі просто: чітка ціль - спрогнозувати хворобу, і більшість ознак уже числові. Це, ну, дозволяє зосередитись на самій логіці, а не на нескінченній очистці. Крок перший - завантаження та первинний аналіз. От ми завантажили дані, що далі? Просто дивимось на табличку? Але нам потрібен такий собі системний медогляд. Запускаємо базові команди: info, describe, isna.sum. Щоб зрозуміти, що ми взагалі маємо? Який розмір, які типи, і найголовніше, чи є пропуски? От типова проблема, що може одразу вилізти, у якійсь важливій колонці бракує 30% значень. І це вже червоний прапорець. Так, це сигнал, що з цим треба буде щось робити. І це, я так розумію, плавно підводить нас до другого кроку - підготовки даних. Їх треба, так би мовити, причесати. Угу. На практиці це означає дві речі. По-перше, заповнити ті самі пропуски, наприклад, середнім або найчастішим значенням. А по-друге? А по-друге, перекласти все на мову чисел. Дерево рішень не розуміє текст, скажімо, тип болю в грудях. Ми перетворюємо цю одну текстову колонку на кілька нових, з нулями і одиницями. І після цього обов'язково ще раз робимо перевірку через інфо. Щоб переконатися, що все чисто. Дані готові. Тепер крок третій - розбиття на навчальну та тестову частини. Навіщо, якщо можна використати всі дані для навчання? Ну, це була б класична пастка. Якби ми навчали модель на всіх даних, ми б ніколи не дізналися, чи здатна вона працювати з новою, невідомою їй інформацією. Це як дати студенту відповіді на іспит для підготовки. Ідеальна аналогія. Він їх просто завчить. Тому ми відкладаємо частину даних, тестову вибірку, як фінальний іспит. І тут важливо зберегти пропорції класів, щоб відсоток, наприклад, хворих пацієнтів був однаковий в обох частинах. Ясно. Добре, час будувати перше дерево. Крок четвертий. І, як я зрозумів, спочатку ми не ставимо йому жодних обмежень, дозволяємо рости, скільки захоче. Це не небезпечно. Це не просто небезпечно, це гарантований провал. Але це той провал, який нам потрібен. Ми навмисно створюємо такого монстра. Навіщо? Щоб побачити явище перенавчання в усій красі. На навчальних даних така модель покаже ідеальну точність, скажімо, 99%. Вона просто запам'ятала кожну відповідь. І отут ми переходимо до п'ятого кроку - оцінки якості. Як зрозуміти, що наша модель просто відмінник зубрила? А ми даємо їй той самий іспит, тестові дані, яких вона не бачила, і тут її точність, скоріш за все, різко впаде, наприклад, до 75%. Оцей величезний розрив і є доказом перенавчання. Саме так. І тому ми ніколи не довіряємо лише одній метриці точності. Дивимось також на F1-score або ROC AUC. Вони краще показують, наскільки добре модель знаходить саме той клас, який нас цікавить. Отже, ми довели, що наше перше дерево перенавчене. Як його приборкати? Це, мабуть, крок шість? Так, підбір оптимальних параметрів. Ми, по суті, кажемо: добре, тепер спробуємо збудувати дерево, але не глибше, ніж, скажімо, п'ять рівнів, і кожне рішення має базуватися хоча б на 10 пацієнтах. А як знайти ці ідеальні значення? Є інструмент GridSearchCV, який автоматично перебирає десятки таких комбінацій і знаходить найкращу. Для датасету Heart Disease, наприклад, оптимальна глибина зазвичай лежить в межах від чотирьох до семи. Знайшли ці золоті параметри. І крок сьомий - перебудовуємо дерево з ними. Так. І тепер порівнюємо. Картина змінюється кардинально. Точність на навчальних даних може трохи впасти, наприклад, до 85%. Але на тестових зростає. Зростає, скажімо, до 82%. Розрив майже зник. Ми пожертвували ідеальністю на старих даних заради надійності на нових. Це і є успішна боротьба в перенавчанням. І крок восьмий - це, власне, порівняння цих двох моделей. Першої перенавченої і другої - оптимальної. І це дуже наочно. Ми бачимо, як глибина дерева зменшилася, умовно з 20 до п'яти, а різниця в точності між навчанням і тестом скоротилася з 25% до якихось 3-5%. Ми отримали простішу і значно надійнішу модель. І фінальний дев'ятий крок - аналіз важливості ознак. Тепер, коли модель надійна, ми можемо запитати в неї, що вона вважає найважливішим. І це, до речі, одна з найбільших переваг дерев рішень - їхня прозорість. Ми можемо буквально подивитися, які ознаки модель використовувала найчастіше. У випадку з хворобами серця це, мабуть, будуть... Імовірно, тип болю в грудях, максимальний пульс і результати тесту з навантаженням. Іноді виявляється, що модель можна навчити лише на топ-5 ознаках, і якість майже не зміниться. Що дозволяє спростити збір даних у майбутньому. Отже, ми пройшли весь шлях. Від першого погляду на дані до створення налаштованої, надійної та, що важливо, зрозумілої моделі. Уявіть, що ви створюєте модель для реальної медичної діагностики. Що б ви обрали: складну модель чорну скриньку з точністю 85% чи просте і зрозуміле дерево з точністю 82%, яке дозволяє лікарю побачити і зрозуміти, чому саме модель ухвалила таке рішення?

Need another transcript?

Paste any YouTube URL to get a clean transcript in seconds.

Get a Transcript