Як підготувати набір даних для машинного навчання за 7 кроків
Що стосується машинного навчання, то ваша модель хороша настільки, наскільки хороші дані, до яких вона має доступ. Ось чому підготовка даних є такою важливою частиною головоломки.
Якщо ви неправильно підготуєте набір даних, буде вже неважливо, наскільки якісною є ваша модель. Отже, що ж таке підготовка даних і які проблеми з нею виникають?
Ще вас може цікавити питання: як краще підготувати набір даних для моделі машинного навчання? Ми раді, що ви запитали. Тож давайте трохи подивимося?
Що таке підготовка даних для машинного навчання та які проблеми вона має?
Підготовку даних також часто називають попередньою обробкою даних. Ідея полягає в тому, щоб взяти необроблені дані, які ви зібрали, і трохи попрацювати над ними, щоб підготувати їх до передачі вашим алгоритмам машинного навчання. Подібно до того, як сиру нафту потрібно переробити для виробництва бензину, перш ніж ви зможете залити її в автомобіль, дані потрібно уточнити, перш ніж ви зможете ввести їх у свою модель машинного навчання. Проблема полягає в тому, що це не завжди прямий шлях, і може виникнути кілька проблем в ході роботи над цим завданням. Одна з найбільших проблем, які трапляються, коли відсутні або неповні записи, оскільки ваш алгоритм не може обробити дані, частини з яких просто не існює. Це також напрочуд поширене явище, оскільки важко отримати кожну точку даних для кожного запису, який ви зберігаєте. Іншою проблемою можуть бути викиди або аномалії. Наприклад, припустимо, що у вас є 1000 записів, з яких 999 — це числа від 1 до 10. Якщо хоча б 1 запис трапиться, наприклад, 338 348 394 473, це спотворить ваші середні показники до невпізнання. Ваші дані також мають бути правильно відформатовані та структуровані, і те, як це має виглядати, залежить від вашої моделі. Якщо ви об’єднуєте дані з кількох джерел, велика ймовірність того, що два або більше джерел мають різні стандарти, тому вам потрібно буде обробити дані таким чином, щоб зробити їх узгодженими. Наприклад, якщо одне джерело вказує країну як «Великобританія», а інше — як «Сполучене Королівство». Підготовка даних важлива, бо якщо ви не приділите час тому, щоб переконатися, що ваші дані читаються вашим алгоритмом машинного навчання, він не зможе їх належним чином обробити. Тоді це вплине на ваші результати та знизить ефективність вашої моделі, і навіть може настільки спотворити модель, що в кінцевому підсумку ви отримаєте неточні або оманливі результати. Коли це станеться, вам краще взагалі не мати стосунку до цієї моделі машинного навчання.
Як підготувати набір даних для машинного навчання за сім кроків?
Тепер, коли ми розглянули, що таке підготовка даних і кілька проблем, з якими ви можете зіткнутися на цьому шляху, настав час поділитися кількома кроками, які ви можете виконати. Вони допоможуть вам правильно підготувати свій набір даних для машинного навчання моделі для того, щоб почати її обробку.
Крок 1: Формулювання проблеми
У колах машинного навчання формулювання проблеми – це процес прийняття рішення про те, що саме модель буде намагатись передбачити. Наприклад, проблема алгоритму Netflix полягає в тому, як максимізувати час перегляду, гарантуючи, що люди бачать пропозиції вмісту відео контенту, адаптовані до їхніх моделей перегляду та інтересів. Простіше кажучи, ви не можете побудувати модель, якщо не знаєте, чого ви хочете досягти з її допомогою. Часто може бути кілька різних способів визначення однієї проблеми, і підхід, який ви виберете, залежатиме від ваших бізнес-вимог і матиме вплив на результати, які ви отримуєте. Формулюючи проблему, як правило, найкраще слідувати приниципу KISS (Keep it simple, stupid), який стверджує, що більшість систем працюють найкраще, якщо їх залишати простими, а не ускладнювати. Іншими словами, вам потрібно буде створити найпростіше рішення вашої проблеми для того, щоб ваша модель машинного навчання мала найкращі шанси на успіх. У той же час вам також потрібно переконатися, що ви не відкидаєте дійсно важливі дані чи інформацію, які можуть знадобитися вам пізніше.
Крок 2: Збір даних
Тепер, коли ви сформулювали проблему, ви готові почати збирати дані. Це можна зробити кількома способами. Наприклад, ви можете збирати власні дані за допомогою чогось на кшталт інструменту автоматизації маркетингу, або ви можете підключатися до API та брандспойтів сторонніх даних із соціальних мереж та інших платформ. Ви також повинні розуміти різницю між неявними та явними даними. Неявні дані – це дані, якы були отримані на основі поведінки людей, наприклад зі сторінок, які вони відвідують, і вмісту контенту, який вони переглядають. Явні дані – це дані, які люди явно надають про себе, наприклад, коли ви запитуєте їх комунікаційні вподобання або дані, як-от їхні імена та дати народження. Коли ви дізнаєтеся, які типи даних ви хочете зібрати, а також джерела, з яких ви їх збиратимете, наступним кроком стане визначення методів інтеграції даних, які ви хочете використовувати.
Тут ви можете розглянути два основні варіанти.
ELT - Extract, Load, Transform або витяг, завантаження та перетворення
Цей підхід ґрунтується на вилученні або витягуванні даних із джерела перед завантаженням безпосередньо в цільову систему, якою в даному випадку буде ваша модель машинного навчання. Звичайно, дані все ще повинні бути підготовлені, перш ніж модель зможе їх використовувати, тому неструктуровані дані потім перетворюються всередині моделі перед обробкою. ELT, як правило, швидше, ніж ATL, але ймовірніше, що він залишить вас зі зламаними даними, які ваш алгоритм не зможе обробити.
ETL - Extract, Transform, Load або витяг, перетворення, завантаження
Підхід ETL подібний до ELT, за винятком того, що він витягує дані, а потім готує їх для доставки в модель перед тим, як перейти до завантаження даних. Тут часто використовується проміжна область, концепція, схожа на концепцію тих, хто працював у веб-розробці, де демонстрація живої моделі використовується для тестування перетворених даних перед тим, як їх надіслати в реальну роботу. Це найбезпечніший підхід, але він займає більше часу, тож пам’ятайте про це, якщо час для вашого проєкту важливий.
Крок 3: Категоризація даних
Після того, як ви зібрали свої дані та визначилися з моделлю, яку збираєтеся використовувати, ви готові почати класифікувати свої дані. Як завжди, ідея тут полягає в тому, щоб підготувати її до вашої моделі, щоб вона могла її зрозуміти, а категоризація ваших даних може діяти як зручний маленький ярлик і навіть визначити різницю між успіхом вашої моделі чи провалом. Ось кілька основних понять, про які потрібно знати, коли справа доходить до категоризації ваших даних.
Класифікація
Класифікація — це сортування даних у різні групи. Наприклад, якщо ви створюєте модель, призначену для обробки фотографій з метою ідентифікації тварин, ви можете класифікувати свої дані у підрозділи (класи) для фотографій котів, собак і птахів. Коли ви врешті-решт надасте дані алгоритму, він зможе шукати подібності між усіма фотографіями в будь-якій категорії та знаходити спільні риси. Іншими словами, він дізнавався б, як виглядає кіт, так само, як і ми – дивлячись на купу котів.
Кластеризація
Кластеризація спрямована на групування даних на основі подібних атрибутів. Це схоже на класифікацію, за винятком того, що ви зазвичай не маркуєте речі явно. За допомогою моделей машинного навчання людині часто надто важко визначити, які мітки будуть корисними, тому кластеризація має на меті обійти це, об’єднавши записи, які мають певний загальний ідентифікатор. Отже, ґрунтуючись на попередньому прикладі, усі ці фотографії тварин можна було б групувати залежно від того, зроблені вони всередині чи ззовні, чи були вони пейзажними чи портретними.
Регресія
Регресія використовується, коли зображення можна вписати в кілька категорій. Це форма статистичного аналізу, яка потребує позначених вхідних і вихідних даних під час навчання, щоб модель могла зрозуміти різницю між функціями та змінними результату. Особливо часто це трапляється, коли модель машинного навчання використовується для прийняття ключових рішень у компанії, особливо коли компанія працює в регульованій галузі, як-от охорона здоров’я чи фінанси. Технічно регресія є частиною фактичного застосування моделі, а не чимось, що відбувається під час підготовки. Однак належна підготовка є життєво важливою, якщо ви хочете, щоб регресія працювала пізніше, оскільки навчальні дані мають відповідати найвищому можливому стандарту.
Рейтинг
Ранжування – це саме те, як це звучить, тобто ранжування ваших даних перед тим, як передати їх алгоритму. Це може бути ранжування з точки зору порядку, у якому ви хочете, щоб модель обробляла їх, або це може означати ранжування їх у порядку того, наскільки важливо для машини генерувати результати для них. Насправді, існує стільки різних способів ранжування даних, скільки ви можете собі уявити, тобто тут немає межі.
Крок 4: Попередня обробка даних
Тепер, коли ви класифікували дані, наступним кроком буде початок їх попередньої обробки. Як випливає з назви, попередня обробка — це обробка, яка виконується перед тим, як модель обробить дані належним чином. Вона має кілька цілей, які здебільшого зосереджені на тому, щоб зробити дані максимально готовими для завантаження у вашу модель. Є кілька важливих кроків, про які вам слід пом’ятати, коли йдеться про попередню обробку даних.
Перевірка якості даних
Якщо ви хочете, щоб ваша модель машинного навчання давала вам справді корисні результати, вам потрібно приділити час перевірці якості ваших даних на цьому етапі, щоб побачити, чи попередні етапи обробки пройшли так гладко, як ви сподівалися. Цей крок також спрямований на те, щоб заглянути наперед і визначити, яку роботу потрібно виконати в наступних двох кроках, оскільки вам не потрібно форматувати дані, якщо вони вже відформатовані.
Форматування даних
Форматування даних полягає в тому, щоб зробити їх якомога легшими для читання. Наприклад, ви можете переконатися, що час і дата мають узгоджений формат, замість того, щоб серед даних мати час не тільки у 12-годинному форматі, а ще й у 24-годинному. Форматування ваших даних допоможе забезпечити узгодженість усіх даних, які входять у вашу модель, і дозволить уникнути випадкового спотворення результатів, дозволяючи моделі обробляти суперечливі дані.
Зменшення та очищення зайвих даних
Останній крок попередньої обробки полягає в тому, щоб пройти через наявні дані та очистити їх, позбувшись усіх непотрібних даних. Це може означати, що ви позбудетеся даних, які ви не плануєте використовувати, можливо, нерелевантної інформації, наприклад книги, яку читали ваші клієнти, коли брали участь у вашому тоталізаторі. Це також може означати видалення дублікатів, тож якщо у вас є один і той же час у 12-годинному та 24-годинному форматах, вам знадобиться лише один із них.
Крок 5: Перетворення даних
Після попередньої обробки даних ви можете почати думати про їх перетворення. Це дійсно останній крок у тому, щоб переконатися, що дані максимально готові для того, щоб ваша модель могла почати з ними працювати.
У цьому процесі є три основні кроки.
Масштабування
Масштабування трохи схоже на форматування, за винятком того, що воно стосується конкретно перетворення між різними масштабами. Наприклад, якщо у вас є поле з показником, який вимірює вагу, він може містити вимірювання у фунтах, унціях, грамах, стоунах і кілограмах. Масштабування полягає в тому, щоб переконатися, що всі ці вимірювання є в одному форматі, а потім створити масштаб від найменшої цифри до найбільшої, щоб модель знала параметри, в яких вона працює.
Розкладання
Декомпозиція відбувається, коли ви берете більш складне поле і розбиваєте його на складові частини. Наприклад, якщо поле містить і дату, і час, ви можете розділити їх на окремі поля за допомогою декомпозиції. Ви можете зробити те саме з полем адреси, щоб розділити його на перший рядок, другий рядок, місто, штат і поштовий індекс. Вся справа в тому, щоб модель машинного навчання могла обробляти дані якомога точніше.
Агрегація
Агрегація полягає в тому, щоб об’єднати кілька полів в одне поле, щоб алгоритм міг легше й ефективніше його обробляти. Наприклад, ви могли б відстежувати щоразу, коли один із ваших потенційних клієнтів відкривав електронний лист від вас. Агрегація дозволить вам згрупувати всі ці відкриття, щоб створити єдиний підрахунок того, скільки разів вони відкривали електронні листи.
Крок 6: Розробка та вибір функцій
До цього моменту всі ваші дані готові до обробки, тож настав час почати будувати свою модель. Це починається з вибору функцій, які ви хочете включити, що зазвичай повертається до першого кроку в нашому списку, тобто формулювання проблеми. Функції, які ви розробляєте, мають бути пов’язані з формулюванням проблеми та розроблені, щоб допомогти вирішити цю проблему. Після того, як ви вибрали ці функції, вам потрібно розробити їх, щоб вони стали частиною вашої остаточної моделі. Обов’язково тестуйте все по ходу роботи, вносячи деякі дані у свою модель і перевіряючи, чи здатна вона їх обробити, і, якщо так, чи здатна вона генерувати відчутні результати, які ваш бізнес може використовувати в реальному житті. Після того, як ви виберете та розробите свої функції, ви майже готові до запуску. Залишається всього один крок, про який вам варто пам’ятати.
Крок 7: розділення даних на Model Training (ML), тобто модельному навчанні
Цей останній крок є результатом того, над чим ми разом працювали протягом решти цієї статті. Тепер, коли всі ваші дані підготовлено, класифіковано, попередньо оброблено та трансформовано, ви готові імпортувати їх у свою модель. Є різні способи, якими ви можете це зробити. Деяким розробникам подобається імпортувати всі дані, а потім натискати метафоричну кнопку переходу, тоді як інші вважають за краще додавати їх по частинах, щоб переконатися, що модель не впаде під вагою всього цього. Цей крок особливо цікавий, оскільки він зазвичай вимагає від розробників і аналітиків даних тісної співпраці під час розгортання та в наступні тижні, коли модель починає надавати свої знання. Але не думайте, що важка робота закінчилася лише тому, що ви запустили свою модель. Ви все одно захочете продовжувати робити налаштування та зміни з часом, і найкращий спосіб зробити це — виміряти результати та порівняти їх із формулюванням вашої проблеми. Якщо ви не просуваєтеся у вирішенні проблеми, тоді саме час повернутися до креслярської дошки і почати все спочатку.
Заключні слова щодо підготовки набору даних
Тепер, коли ви знаєте основи підготовки набору даних для машинного навчання, ви готові розпочати роботу. Пам’ятайте, що найкраща модель у світі не буде корисною, якщо ваші дані не є хорошими, і не забувайте стару приказку: якщо вам не вдається підготуватися добре, ви готуєтеся до невдачі. Звичайно, навіть коли ви підготували всі свої дані, вам все одно треба побудувати модель для їх обробки. Ви можете зробити це вдома, якщо у вас є для цього необхідні таланти і ресурси, або ви можете передати це агентству чи фрілансеру. Більшість команд, які працюють над моделями машинного навчання, також мають можливість допомогти вам із підготовкою даних або обмінятись досвідом, тому не бійтеся запитувати, якщо вам дійсно потрібна допомога. Тож, якщо ви шукаєте партнера, який може допомогти вам підготувати ваші дані та створити ефективну і працюючу модель машинного навчання, ви прийшли в потрібне місце. В команді ZFORT Group, ми маємо вже достатньо великий досвід допомоги компаніям, які використовують машинне навчання в своїй роботі. Тому ви можете зв’язатись з нами сьогодні, щоб дізнатись про це більше або стати частиною нашої команди, щоб мати можливість підвищувати власну експертизу в цій галузі. Відкриті вакансій можна знайти на сторінці https://www.zfort.com.ua/vacancy/ Приєднуйстесь, ми будемо раді співпраці!