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

Розробка функцій: генерація варіантів, кодування, масштабування та уникнення витоку

Прибуток:

  • Здатність виробляти значущі похідні ознаки зі знаннями предметної області та кодувати категоріальні категорії за допомогою відповідних методів (one-hot, label, target)
  • Можливість масштабувати числові змінні відповідно до типу моделі (стандартизація, нормалізація) і уникати непотрібного або неповного масштабування
  • Можливість уникнути витоку функцій, вивчаючи всі перетворення після тренувального/тестового розділення та лише з навчання

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

Чому розробка функцій

Необроблені дані рідко надходять до моделі в найкращому вигляді. Хоча стовпець «дата народження» сам по собі не має сенсу, значення «вік», згенероване з нього, є сильним сигналом. Ви можете витягти такі атрибути, як «день тижня», «день/ніч», «це свято» з «мітки часу замовлення». Ви можете поєднати два стовпці, щоб отримати співвідношення ("співвідношення боргу/доходу"). Тут розробка функцій перетворює знання домену в математичний сигнал; І саме тому саме сцена потребує найбільше людського розуму.

Перетворення категоріальних змінних у числа: кодування

Зазвичай моделі працюють із числами, а не з текстом. Перетворення категоріальних змінних (таких як місто, колір, тип товару) у числа називається кодуванням. Три поширені методи:

Одночасне кодування: відкриває окремий стовпець зі значенням 0/1 для кожної категорії. Для «місто» формуються колони Стамбул, Анкара, Ізмір; Якщо клієнт зі Стамбула, лише цей стовпець буде 1. Ідеально, коли кількість категорій невелика; Якщо категорій забагато, створюються сотні стовпців (це називається «вибухом розміру»).

Кодування міток: дає номер кожній категорії (Стамбул=0, Анкара=1). Це просто, але воно може випадково навчити модель послідовності (наприклад, Анкара > Стамбул); тому його використовують з обережністю в невпорядкованих категоріях.

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

Масштабування: великі числа не переповнюють модель

Деякі моделі (на основі відстані, лінійні моделі, нейронні мережі) чутливі до масштабу змінних. Якщо «дохід» (0-500 000) і «вік» (0-100) потрапляють в ту саму схему, дохід може домінувати просто тому, що він більший. Масштабування це виправляє. Два поширених методу: стандартизація (перетворює кожне значення на «на скільки стандартних відхилень від середнього значення») і нормалізація (мін.-макс. нормалізація — стискає значення в діапазоні 0-1). Моделі на основі дерев (дерева рішень, випадковий ліс) нечутливі до масштабу, вони не потребують масштабування.

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

Серце витоку в розробці функцій

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

метод

для чого

Ризик витоку

примітка

Одночасне кодування

Змінна з кількома категоріями

низький

Розбиває розмір у кількох категоріях

Кодування етикетки

Відсортована категорія

низький

Непорядок навчає неправильного порядку

цільове кодування

Багатокатегорійний, сильний сигнал

дуже високий

Просто з освіти, в CV

стандартизація

Лінійні/дистанційні моделі

середній

Параметр залежить тільки від освіти

Функція часового вікна

часові ряди

висока

Додайте майбутнє

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

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

Випадок 2 — витік цільового кодування. Одна команда перетворила «поштовий індекс» на число з цільовим кодуванням (середня швидкість відтоку в цій області), але зробила це з усіх даних перед розділенням. Модель показала 94% на тестовому наборі, впавши до 68% у виробництві. 6 тижнів витрачених зусиль. Урок: цільове кодування виконується обережно, тільки в рамках навчання.

Випадок 3 — Забуття масштабування. Один аналітик ввів дохід (0-400 000) і вік клієнтів (18-75) у модель на основі відстані без масштабування. Модель дивилася майже виключно на дохід, придушуючи ефект віку. Коли було додано масштабування, сегментація стала важливою. Урок: масштабуванням не нехтують у дистанційних/лінійних моделях.

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

1) Генерація ідеї функції (усунення залежить від вас):

Ваша роль: асистент з розробки функцій. Мої стовпці df: birth_date, order_time (timestamp), earnings_tl, debt_tl, city, product_category. Ціль: «чи буде повернений кредит» (0/1). Запропонуйте 15 функцій, які можна створити з цих стовпців; вкажіть ризик витоку (низький/середній/високий) для кожного. Чітко позначте ті, що містять майбутню інформацію.

2) Безпечне кодування (постспліт):

Напишіть код, який одноразово кодує "місто" та "категорію_продукту". ВАЖЛИВО: адаптуйте кодування лише до навчальних даних, а потім трансформуйте тестові дані (за допомогою sklearn OneHotEncoder). Поясніть, як ви обробляєте категорію unseen (handle_unknown) в освіті.

3) Конверсія без витоків за допомогою трубопроводу:

Налаштуйте sklearn Pipeline: застосуйте StandardScaler до числових стовпців, OneHotEncoder до категорійних стовпців, додайте класифікатор у кінці. Гарантія, що всі трансформації вивчаються ПІСЛЯ тренувального/тестового поділу та лише під час навчання. Поясніть код і поясніть, чому він не витікає.

4) Функція тимчасового вікна (контроль витоку):

Згенеруйте атрибут «кількість замовлень за останні 30 днів» для кожного клієнта, але НІКОЛИ не включайте дані після прогнозованого дня. Поясніть рядок за рядком, що код не дивиться в майбутнє. Я надам колонку дати посилання.

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

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

Додайте хороші властивості до цих даних.

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

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

Ваша роль: розробник функцій. Ціль: "відтік через 30 днів" (0/1), орієнтовна контрольна дата: save_date. У df є історія транзакцій. Завдання: Створіть 8 функцій, дайте відповідь на запитання «Чи є у мене ця інформація під час передбачення» для КОЖНОЇ. Додавання дати після контрольної дати в функціях часового вікна. Напишіть код конвеєрно-сумісним способом, який буде виконано після розділу навчання/тесту.

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

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

  • Вивчення перетворення з усіх даних перед поділом. Якщо параметр масштабування/кодування бачить тестові дані, виникає витік.
  • Недбале використання цільового кодування. Це найпотужніший, але найбільш небезпечний метод; просто з навчання, під час перехресної перевірки.
  • Додавання майбутнього за допомогою функції часового вікна. Якщо розрахунок «останні 30 днів» вводиться після дня прогнозу, модель бачить майбутнє.
  • Непотрібне масштабування в моделі дерева та неповне масштабування в лінійній моделі. Рішення про масштабування приймаються відповідно до типу моделі.
  • Додавання всіх пропозицій функції ШІ без питань. Пропозиції можуть включати непотрібні та нестійкі функції.
Порада. Запишіть одне запитання для кожної функції, яку ви створюєте: «Чи можу я обчислити це значення за допомогою інформації, яку я маю на момент прогнозування?» Якщо відповідь не однозначна «так», не використовуйте цю функцію. Ця єдина дисципліна усуває більшість витоків, пов’язаних із функціями.

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

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

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

Виберіть цільову змінну та розробіть принаймні п’ять похідних ознак із стовпців, які у вас є. Для кожного з них письмово дайте відповідь на запитання «чи доступний я під час передбачення» та виключіть принаймні одне як «високий ризик витоку». Потім закодуйте функції безпеки в конвеєрі, які будуть реалізовані після розділу.

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

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