Набір даних – це колекція прикладів.
Багато наборів зберігають дані в таблицях (сітках), наприклад, у вигляді значень, розділених комами (CSV), або безпосередньо беруть їх з електронних таблиць чи таблиць баз даних. Таблиці – це інтуїтивно зрозумілий формат вводу для моделей машинного навчання. Уявіть, що кожен рядок таблиці – це приклад, а кожен стовпець – потенційна ознака або мітка. Водночас набори даних можна отримати з інших форматів, зокрема з файлів журналів і буферів протоколів.
Хоч який формат використовується, ефективність моделі машинного навчання повністю залежить від якості даних, на яких її тренують. У цьому розділі розглядаються ключові характеристики даних.
Типи даних
У наборі може бути багато типів даних, зокрема, але не виключно:
- числові дані, описані в іншому модулі;
- категорійні дані, описані в іншому модулі;
- людська мова – від окремих слів і речень до цілих текстових документів;
- мультимедійні дані (наприклад, зображення, відео й аудіофайли);
- вихідні дані інших систем машинного навчання;
- вектори ембедингу, про які поговоримо пізніше.
Кількість даних
За загальним правилом, прикладів, на яких слід навчати модель, має бути принаймні в десять (або двадцять) разів більше, ніж навчальних параметрів. Однак хороші моделі зазвичай навчаються на значно більшій кількості прикладів.
Моделі, навчені на великих наборах даних із незначною кількістю ознак, зазвичай перевершують ті, які тренувалися на невеликих наборах даних, маючи багато ознак. Традиційно Google дуже успішно навчає прості моделі на великих наборах даних.
Набори даних для різних програм машинного навчання можуть вимагати абсолютно різної кількості прикладів для створення корисної моделі. Для деяких відносно простих задач, імовірно, буде достатньо кількох десятків прикладів, а для інших – і трильйона може бути замало.
Невеликий набір даних може дати хороші результати, якщо використовується для адаптації наявної моделі, яку вже навчали на великій кількості даних за тією самою схемою.
Якість і надійність даних
Усі віддають перевагу високій якості, але це настільки невизначене поняття, що його можна тлумачити по-різному. У цьому курсі ми розглядаємо якість прагматично.
Завдяки високоякісному набору даних модель дає потрібні результати. Набір даних низької якості заважає їй це робити.
Високоякісний набір даних зазвичай також надійний. Надійність – це ступінь, до якого ви можете довіряти своїм даним. Модель, навчена на надійному наборі даних, з більшою імовірністю дасть корисні прогнози, ніж та, яку тренували на ненадійних даних.
Вимірюючи надійність, слід подумати над запитаннями, наведеними нижче.
- Як часто трапляються помилки в мітках? Наприклад, якщо ваші дані помічають спеціалісти з оцінювання, як часто вони роблять помилки?
- Чи шумні ваші ознаки? Іншими словами, чи є помилки в значеннях ваших ознак? Будьмо реалістами: неможливо очистити набір даних від усіх шумів. Деякі шуми цілком нормальні; наприклад, результати вимірювань GPS для будь-якого місця, зроблені в різні тижні, завжди дещо відрізняються.
- Чи правильно відфільтровані дані для вашої задачі? Наприклад, чи має ваш набір даних враховувати пошукові запити від ботів? Якщо ви створюєте систему виявлення спаму, то, швидше за все, відповідь – "так". Але їх не потрібно враховувати, якщо ви намагаєтеся покращити результати пошуку для людей.
Нижче наведено типові причини ненадійності даних у наборах.
- Пропущені значення (наприклад, людина забула ввести дату зведення будинку).
- Повторювані приклади (наприклад, сервер помилково двічі завантажив ті самі записи журналу).
- Неправильні значення ознак (наприклад, хтось ввів зайву цифру або термометр залишили на сонці).
- Неправильні мітки (наприклад, людина помилково позначила зображення дуба як клен).
- Неправильний розподіл даних (наприклад, якась ознака була дуже надійною завжди, крім того дня, коли мережа виходила з ладу).
Рекомендуємо використовувати автоматизацію для позначення ненадійних даних. Наприклад, модульні тести, які визначають зовнішню формальну схему даних або покладаються на неї, можуть позначати відомості, що виходять за межі встановленого діапазону.
Повні й неповні приклади
В ідеальному світі кожен приклад повний. Це означає, що всі приклади містять значення для кожної ознаки.
На жаль, реальні приклади часто неповні, тобто відсутнє значення принаймні для однієї ознаки.
Не навчайте модель на неповних прикладах. Замість цього виправте або усуньте неповні приклади, виконавши одну з дій, наведених нижче.
- Видаліть неповні приклади.
- Імпутуйте відсутні значення, тобто перетворіть неповний приклад на повний, додавши обґрунтовані здогадки щодо них.
Якщо в наборі даних достатньо повних прикладів для навчання корисної моделі, неповні можна видалити. Аналогічно, якщо в наборі бракує значної кількості даних лише для однієї ознаки, яка, імовірно, не покращить модель суттєво, варто видалити цю ознаку з вхідних даних і подивитися, наскільки при цьому втрачається якість. Якщо модель працює так само або майже так само добре без неї, це чудово. І навпаки, якщо у вас недостатньо повних прикладів, щоб навчити корисну модель, варто спробувати імпутувати відсутні значення.
Можна позбутися непотрібних або зайвих прикладів, але не варто видаляти важливі. А втім, іноді буває складно відрізнити корисні приклади від непотрібних. Якщо ви не можете вирішити, видаляти приклади чи імпутувати значення, створіть два набори даних. З одного видаліть неповні приклади, а в другий імпутуйте значення. Потім визначте, який набір даних краще навчає модель.
Один із поширених алгоритмів передбачає використання середнього значення (медіани) як імпутованого. Тому якщо числову ознаку представлено за допомогою значення Z, то імпутоване значення, як правило, дорівнює 0 (адже 0 – це середнє значення Z).
Вправа. Перевірте свої знання
Перед вами два стовпці набору даних, відсортованих за значенням Timestamp
.
Позначка часу | Температура |
---|---|
8 червня 2023 року, 09:00 | 12 |
8 червня 2023 року, 10:00 | 18 |
8 червня 2023 року, 11:00 | немає |
8 червня 2023 року, 12:00 | 24 |
8 червня 2023 року, 13:00 | 38 |
Яке з наведених нижче значень було б обґрунтованим для імпутації замість відсутнього значення Температура?