одиниці
1. Вступ до штучного інтелекту в науці про дані та аналітиці: робочий процес, ролі, межі, перевірка та етика 2. Збір даних і розуміння джерела: схема, вибірка, якість і усвідомлення витоків 3. Очищення та попередня обробка даних: відсутнє значення, перетворення викидів і типів 4. Дослідницький аналіз даних (EDA): розподіли, взаємозв’язки та початкове розуміння 5. Розробка функцій: генерація варіантів, кодування, масштабування та уникнення витоку 6. Побудова моделі: визначення проблеми, вибір алгоритму та розділення на навчання/тест 7. Оцінка моделі: показники, перехресна перевірка та екстремальне навчання 8. Візуалізація та оповідання: точна графіка, чесна графіка 9. Генерація коду: аналіз за допомогою ШІ за допомогою Python (pandas) і SQL 10. Витік даних і відтворюваність: тихі катастрофи та дисципліна 11. MLOps Foundation, етика, конфіденційність і відповідальна аналітика
одиниця 6 / 11

Побудова моделі: визначення проблеми, вибір алгоритму та розділення на навчання/тест

Прибуток:

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

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

Спочатку визначення проблеми: що ми прогнозуємо

Будь-яка модельна робота починається з питання, яке визначає тип моделі. Класифікація — на виході буде категорія: «Цей клієнт піде чи залишиться?», «Ця транзакція фальшива?». Регресія (в перекладі з англійської regression - вихід число): «Скільки коштує цей будинок?», «Скільки замовлень прийде наступного місяця?». Кластеризація (розподіл немаркованих даних на природні групи): «На скільки природних сегментів розділені мої клієнти?».

Друга частина постановки проблеми — це критерій успіху: що означає для цієї моделі бути «хорошою»? У моделі шахрайства пропустити шахрая набагато дорожче, ніж випадково заблокувати чесного клієнта; Тому на перший план виходить не «загальна точність», а «швидкість вилову шахраїв». Якщо ви не визначите цей критерій із самого початку разом із власником бізнесу, ви отримаєте «високо точну» модель, яка не працює (ми заглибимося в показники в розділі 7).

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

Навчальний/тестовий сплітінг: чесне вивчення моделі

Тестування моделі з даними, які вона вивчила, схоже на те, що ставити студенту ті самі запитання, які він/вона вивчав на іспиті; Він отримує високі бали, але не показує того, що насправді знає. Тому ми розділяємо дані на два (часто три):

  • Навчальний набір (навчальний набір англійською, зазвичай 70-80%): модель вчиться на цьому.
  • Тестовий набір (тестовий набір, зазвичай 20-30%): модель цього взагалі не бачить; тут вимірюється реальна продуктивність.
  • Набір перевірки: Проміжний набір, який використовується для налаштування моделі (який параметр кращий); щоб тестовий набір був «чистим».

Найосновніше правило: тестовий набір ніколи не торкатися під час навчання. Масштабування, кодування, вибір функцій — усе це просто вивчається з навчального набору, а потім застосовується до тестування (принцип витоку з розділу 5). Тестовий набір — це перший раз, коли модель бачить реальний світ; Якщо ви ввімкнете його занадто рано, ви ніколи не дізнаєтесь про справжню продуктивність.

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

Вибір алгоритму: від простого до складного

Найпоширеніша помилка новачків - починати з найскладнішої моделі. Правильний підхід протилежний: спочатку встановити просту базову лінію. «завжди вгадувати клас більшості» в класифікації; "завжди оцінювати середнє значення" в регресії. Ця дурна модель дає базову лінію; Якщо ваша фактична модель не може пройти це, є проблема. Потім переходимо до простих і зрозумілих моделей.

модель

Тип проблеми

сильна сторона

слабкість

Базова лінія (більшість/середнє)

обидва

Дає орієнтир

не вчиться

Логістична регресія

Класифікація

Простий, зрозумілий

Лише лінійний зв’язок

Лінійна регресія

регресія

Просто, швидко

лінійне припущення

дерево рішень

обидва

тлумачний

Легке запам'ятовування

випадковий ліс

обидва

Міцний, витривалий

Менш піддається інтерпретації

Підсилення градієнта (XGBoost тощо)

обидва

дуже сильний

Важко підлаштуватися, ризик запам'ятовування

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

три міні-чохла

Випадок 1 — Невірне визначення проблеми. Команда створила модель класифікації на основі «чи задоволений клієнт», але вибрала «точність» як критерій успіху. Згідно з даними, 88% клієнтів були задоволені; Модель отримала 88% точності, називаючи всіх «задоволеними» і ніколи не ловила незадоволених — навіть якщо справжньою метою було їх знайти. Урок: обирайте критерії успіху, виходячи з реальної мети.

Випадок 2 — Витік часу у відсіку. У проекті прогнозування попиту дані були розділені випадковим чином. Модель показала точність 93%, але зазнала збою у виробництві, оскільки під час навчання вона передбачила січень, потім листопад із даними за грудень — вона бачила майбутнє. Коли ми перейшли на хронологічний поділ, фактична продуктивність зросла до 74%. Урок: хронологічний поділ на часові ряди.

Випадок 3 — непотрібна складність. Один аналітик почав безпосередньо з глибокої нейронної мережі, налаштовував її тижнями та отримав 81% точності. Тоді колега отримав 80% за допомогою 20 рядків логістичної регресії — набагато швидше, інтерпретувати та легше підтримувати. Урок: починайте з базової лінії та простої моделі, додайте складності, коли це того заслуговує.

Чотири шаблони, які можна копіювати

1) Уточнення визначення проблеми:

Ваша роль: модельний консультант. Допоможіть мені визначити цю роботу: «Я хочу зменшити відтік клієнтів». Запитайте мене та поясніть: (1) це класифікація чи регресія, (2) що саме є цільовою змінною та як її слід визначити, (3) якими мають бути критерії успіху та чому. Рішення за мною; ви представляєте питання та варіанти.

2) Безпечний навчальний/тестовий відсік:

Розділіть мій df на навчання/тестування 80%/20%. Зберігати розподіл класів (стратифікувати).random_state=42. Це НЕ ЧАСОВИЙ РЯД (незалежні спостереження). Надрукуйте співвідношення класів кожного набору після ділення. Просто дайте код розбиття тестовому набору без застосування будь-яких перетворень.

3) Хронологічний поділ часового ряду:

Дані залежать від часу (стовпець дати: order_date). НЕ випадково, розділіть хронологічно: найстаріший 80% навчання, найновіший 20% тестування. Роздрукуйте дати навчання та тестування, щоб я міг переконатися, що майбутнє не просочилося.

4) Встановлення базової лінії:

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

Слабка підказка / Сильна підказка

Слабка підказка:

Побудуйте найкращу модель на основі цих даних.

«Кращий» не визначено; Немає типу проблеми, цілі, критеріїв успіху та стратегії розподілу. AI генерує випадковий шаблон, можливо, негерметичний.

Потужна підказка:

Ваша роль: асистент моделі. Проблема: класифікація, цільовий «відтік» (0/1), існує дисбаланс класів (~12% відтік). Критерій успіху: відкликання тих, хто відмовляється, є пріоритетом. Дані незалежного спостереження (не часові ряди). Завдання: (1) 80/20% стратифікований розподіл, (2) базова лінія DummyClassifier, (3) логістична регресія, усі перетворення в конвеєрі та навчені лише під час навчання. Не торкайтеся тестового набору перед розділенням.

Тут чітко видно тип проблеми, дисбаланс, критерій і міру витоку.

Поширені помилки

  • Невибір критеріїв успіху відповідно до справжньої мети. «Точність» незбалансованих даних вводить в оману; Якщо ви хочете захопити клас меншості, на перший план виходить відкликання.
  • Дотик до тестового набору під час навчання. Виконання масштабування/кодування перед поділом є небезпечним і приховує реальну продуктивність.
  • Випадкове розбиття часових рядів. Модель бачить майбутнє, руйнується у виробництві; Важливим є хронологічний поділ.
  • Перехід до складної моделі без встановлення базової лінії. Без тестів ви не можете знати, чи справді хороша модель чи ні.
  • Ігнорування інтерпретованості. У бізнес-рішеннях проста зрозуміла модель часто є ціннішою, ніж чорний ящик.
Порада: перш ніж почати будувати модель, напишіть одне речення: «Ця модель передбачить _____, її успіх буде вимірюватися метрикою _____, оскільки справжня вартість роботи становить _____». Якщо ви не можете заповнити це речення, ви ще не готові писати код.

Підсумовуючи

Найважливішою частиною побудови моделі є не код, а рішення, які йому передують: визначення правильної проблеми (класифікація чи регресія, яка мета, який критерій успіху) і справедливий розподіл даних (без торкання тестового набору; хронологічний у часовому ряду). Завжди починайте з простої базової лінії та додавайте складності лише тоді, коли це того заслуговує; У більшості бізнес-контекстів можливість інтерпретації цінується вище влади. ШІ є потужним порадником у виборі алгоритмів і коду, але людина вирішує, що ви прогнозуєте і чому.

Аплікаційне завдання

Визначте проблему прогнозування та завершіть письмово таке речення: «Ця модель передбачатиме ___ (класифікація/регресія), ціль — ___, критерій успіху — ___, тому що ___». Потім розділіть дані за допомогою правильної стратегії (хронологічної, якщо це часовий ряд), встановіть базову лінію та виміряйте, чи порушує її проста схема.

контрольний список

  • [ ] Чи я чітко визначив тип проблеми (класифікація/регрес) і ціль?
  • [ ] Чи я обрав критерії успіху на основі фактичної вартості роботи?
  • [ ] Чи залишив я тестовий набір недоторканим під час навчання?
  • [ ] Якщо це часовий ряд, я поділив його хронологічно?
  • [ ] Чи встановив я базову лінію перед переходом до складної моделі?