Що таке наука про дані? [BLOCK_TYPE SECTION/STEP]
Наука про дані — це не лише машинне навчання. Це не лише статистика. Це не лише програмування. [BLOCK_TYPE SECTION/STEP]
Наука про дані — це дисципліна з вилучення корисних знань із даних. Більшість цієї роботи не є glamorous: це очищення хаотичних електронних таблиць, постановка правильних запитань та комунікація результатів людям, які не зацікавлені у вашому коді. [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Типовий конвеєр науки про дані виглядає так:
1. Collect: збирати необроблені дані з баз даних, API, CSV-файлів або веб-скрейпінгу
2. Clean: обробляти пропущені значення, виправляти типи даних, видаляти дублікати
3. Explore: візуалізувати розподіли, знаходити патерни, ставити запитання
4. Engineer: створювати нові характеристики, які допомагають моделям навчатися
5. Model: тренувати алгоритми, оцінювати продуктивність, ітеративно покращувати
6. Communicate: презентувати результати зацікавленим сторонам, які приймають рішення
Якщо ви коли-небудь використовували зведені таблиці в Excel, умовне форматування або VLOOKUP, ви вже виконували кроки 1-3. Цей урок мостить досвід з Excel до Python-орієнтованого потоку роботи, що використовується в industry.
Warm-Up
Ваш досвід з даними
Кожен працював з даними в тій чи іншій формі: бюджетна таблиця, трекер оцінок, фітнес-додаток, навіть плейлист із кількістю прослуховувань.
Сміття на вході, сміття на виході
Чому очищення даних важливе
Науковці з даних витрачають 60-80% свого часу на очищення даних. Це не перебільшення: це стабільний результат у всіх галузевих опитуваннях.
Причина проста: garbage in, garbage out. Якщо ваші дані містять помилки, пропущені значення або неузгоджені формати, кожен аналіз, побудований на їхній основі, буде неправильним. Ідеальна модель, навчена на брудних даних, видає впевнено неправильні відповіді.
Поширені проблеми з даними
- Пропущені значення: клітинки порожні. Чи не були дані зібрані, чи значення насправді дорівнює нулю? Це різні ситуації, які потребують різного підходу.
- Неправильні типи даних: стовпчик чисел збережений як текст, дати в неузгоджених форматах (01/02/2024: це 2 січня чи 1 лютого?)
- Викиди: у стовпчику зарплат є значення $1,000,000,000. Чи це реальне значення, чи помилка? У будь-якому випадку, це спотворить середні значення.
- Дублікати: той самий запис з’являється двічі, бо дві системи об’єдналися недосконало
- Кодування категорій: у стовпчику є 'Yes', 'yes', 'Y', 'TRUE' і '1'. Усе це означає одне й те саме, але комп’ютер цього не знає.
У pandas (стандартній бібліотеці Python для роботи з даними), ви обробляєте це методами на кшталт dropna(), fillna(), astype() та drop_duplicates(). Але найскладніше — не код: а вирішення що робити з кожною проблемою.
Рішення щодо очищення
Визначення того, що робити
Ось реальний приклад. У вас є набір даних із 10 000 записів про клієнтів. У стовпчику 'age' є 500 пропущених значень.
Ваші варіанти:
- Видалити рядки: видалити всі 500 записів. Просто, але ви втрачаєте 5% ваших даних. Якщо ці 500 клієнтів мають спільну рису (можливо, вони пропустили поле віку, бо дбають про приватність), видалення їх може призвести до зміщення.
- Заповнити середнім значенням: замінити пропуски на середній вік. Швидко, але це штучно зменшує дисперсію вашої колонки з віком.
- Заповнити медіаною: краще, ніж заповнення середнім значенням, якщо розподіл віку є скошеним (кілька дуже старих або дуже молодих клієнтів тянуть на себе середній значення).
- Використовувати прапорець: створити новий стовпчик під назвою 'age_missing' (1 або 0) і заповнити оригінальний з медіаною. Тепер ваша модель може імітувати чи пропущеність сама по собі є інформативною.
Немає універсальної правильної відповіді. Вибір залежить від того, чому дані пропущені та що ви плануєте з ними робити.
Постановка правильних запитань [BLOCK_TYPE exploration/asking_questions]
Дослідницький аналіз даних (EDA)
[BLOCK_TYPE exploration/asking_questions]Перш ніж будувати будь-яку модель, вам потрібно зрозуміти ваші дані. EDA — це процес узагальнення, візуалізації та постановки запитань щодо набору даних для виявлення патернів, аномалій та взаємозв’язків.
Основні інструменти
- Гістограми: показують розподіл однієї змінної. Чи є він дзвоноподібним? Асиметричним? Бімодальним (два піки)? Гістограма доходів завжди має праву асиметрію, оскільки кілька людей заробляють значно більше, ніж більшість.
- Діаграми розсіювання: показують взаємозв'язок між двома змінними. Чи важать вищі люди більше? Чи корелює більше часу на навчання з вищими оцінками? Візерунок (або його відсутність) tells you whether a relationship exists.
- Кореляція: число між -1 і +1, яке вимірює лінійний зв'язок. +1 означає досконалий позитивний зв'язок, -1 означає досконалий негативний, 0 означає відсутність лінійного зв'язку. Але кореляція не означає причинно-наслідковий зв'язок: продажі морозива та смерті від утоплення є корельованими, оскільки обидва збільшуються у літній період.
- Описова статистика: середнє, медіана, стандартне відхилення、最小值, максимум. У pandas: df.describe() дає вам усі ці показники в одному рядку.
Реальна навичка
Інструменти легко вивчити. Складна частина — це ставити правильні запитання. Погане запитання: 'Що кажуть дані?' Хороше запитання: 'Чи мають клієнти, які звертаються в підтримку протягом першого тижня, вищий рівень утримання?'
Пастка кореляції
Кореляція vs. Причинно-наслідковий зв'язок
Це найважливіша концепція в грамотності даних. Дві змінні можуть бути сильно корельовані, не спричиняючи одна одну.
Класичні приклади:
- Міста з більшою кількістю пожежників мають більше пожеж. (У більших містах є і те, і інше.)
- Учні, які снідають, отримують кращі оцінки. (Можливо, заможніші сім'ї частіше забезпечують сніданок І академічну підтримку.)
- Країни, які споживають більше шоколаду, отримують більше Нобелівських премій. (Обидва показники корелюють з національним багатством.)
Прихований фактор називається змінною, що спотворює: третя змінна, яка впливає на обидві ті, які ви аналізуєте.
Створення корисних змінних
Що таке інженерія ознак?
Ознака — це вхідна змінна, яку модель використовує для прогнозування. Інженерія ознак — це мистецтво створення нових ознак із необроблених даних, щоб допомогти моделям розпізнавати патерни, які інакше були б недоступними.
Необроблені дані рідко приходять у формі, потрібній моделям. Розглянемо набір даних із колонкою «дата народження». Модель не може багато зробити з сирими датами. Але якщо створити ознаку «вік» на основі цих даних, модель раптом зможе розпізнавати патерни, пов'язані з віком.
Поширені методи
- Нормалізація: масштабування чисел до спільного діапазону (0 до 1, або mean=0 і standard deviation=1). Без цього, ознака, виміряна в тисячах (зарплата), домінуватиме над ознакою, виміряною в одиницях (роки досвіду).
- One-hot encoding: перетворення категоріальних змінних на бінарні стовпці. Стовпець 'color' зі значеннями [red, blue, green] перетворюється на три стовпці: 'color_red', 'color_blue', 'color_green', кожний з 0 або 1.
- Binning: перетворення неперервної змінної на категорії. Вік 0-17 стає 'minor', 18-64 стає 'adult', 65+ стає 'senior'. Це допомагає, коли зв'язок не є лінійним.
- Interaction features: множення двох ознак. 'Площа квартири помножена на кількість ванних кімнат' може краще передбачати вартість будинку, ніж кожна ознака окремо.
- Domain knowledge: найпотужніша техніка. Лікар, створюючи ознаки для медичної моделі, знає, які лабораторні показники важливі. Маркетолог знає, що 'кількість днів з моменту останньої покупки' є більш корисною, ніж 'дата покупки'. Жоден алгоритм не може замінити це.
Feature Practice
Applying Feature Engineering
Уявіть, що ви будуєте модель для прогнозування того, які клієнти скасують підписку на стрімінговий сервіс наступного місяця. Ваші вихідні дані включають:
- Дата створення акаунту
- Дата останнього входу
- Кількість переглянутих шоу за останній місяць
- Сума щомісячної оплати
- Кількість звернень до служби підтримки
- Країна
Розділення на тренувальну та тестову вибірки
Чому ви розділяєте дані
Найважливіше правило в моделюванні: ніколи не оцінюйте модель на тих самих даних, на яких ви її тренували.
Якщо ви це зробите, модель може просто запам'ятати відповіді. Вона покаже ідеальний результат на тренувальних даних, але не впорається з новими, невідомими даними. Це називається переобученням (overfitting): модель вивчила шум у вашому конкретному наборі даних замість реальних закономірностей.
Стандартна практика — розділити ваші дані:
- Тренувальний набір (зазвичай 70-80%): модель навчається на ньому
- Тестовий набір (зазвичай 20-30%): відкладається і використовується лише для оцінки готової моделі
У scikit-learn: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
Поширені алгоритми
- Лінійна регресія: проводить лінію найкращої відповідності через дані. Проста, інтерпретована, працює, коли зв’язок приблизно лінійний. Прогнозує число (ціну, температуру, бал).
- Дерева рішень: блок-схема з питань «так/ні». Легко зрозуміти та пояснити. Схильні до перенавчання, якщо не обрізати або не обмежувати глибину.
- Випадкові ліси: багато дерев рішень, які голосують разом. Більш точні, ніж одне дерево, менш схильні до перенавчання, але важче пояснити.
Перенавчання vs. Недонавчання
- Перенавчання: модель занадто складна. Вона запам’ятовує навчальні дані, включаючи шум. Висока точність на навчальних даних, низька точність на тестових даних.
- Недонавчання: модель занадто проста. Вона не може вловити реальні патерни. Низька точність на навчальних і тестових даних.
Мета — знайти золоту середину між ними.
Метрики оцінки
Як дізнатися, чи хороша ваша модель?
Точність сама по собі може бути оманливою. Якщо 95% електронних листів не є спамом, модель, яка завжди каже «не спам», має 95% точності: але повністю марна.
Ключові метрики:
- Accuracy: відсоток правильних передбачень. Корисно, коли класи збалансовані.
- Precision: серед усього, що модель позначила як позитивне, скільки насправді було позитивним? Висока точність означає, що мало хибних тривог.
- Recall: серед усіх фактичних позитивних, скільки зловив модель? Висока повнота означає, що мало пропущених випадків.
- F1 score: гармонійне середнє точності та повноти. Корисно, коли потрібно збалансувати обидва показники.
- RMSE (Root Mean Squared Error): для регресії (передбачення чисел). Наскільки в середньому помиляються передбачення?
Яка метрика найважливіша, залежить від задачі. Для виявлення раку важливіша повнота: не можна пропустити жодного випадку. Для фільтрації спаму важливіша точність: не можна видалити реальний лист.
Аналітик даних vs. Data Scientist vs. ML Engineer
Три різні ролі
У сфері даних існує три основні кар'єрні напрямки, і вони вимагають різних навичок.
Аналітик даних
- Фокус: відповіді на бізнес-питання за допомогою наявних даних
- Інструменти: SQL, Excel, Tableau, базовий Python або R
- Щоденна робота: дашборди, звіти, аналіз A/B тестів, презентації для стейкхолдерів
- Шлях входу: часто найдоступніший. Багато аналітиків починають без ступеня CS.
Data Scientist
- Фокус: побудова прогнозних моделей та пошук патернів у складних даних
- Інструменти: Python (pandas, scikit-learn, matplotlib), статистика, SQL, Jupyter notebooks
- Щоденна робота: EDA, feature engineering, побудова моделей, експерименти
- Шлях входу: зазвичай вимагає статистичної або кількісної освіти. Bootcamps та самоосвіта є прийнятними.
Machine Learning Engineer
- Фокус: розгортання та масштабування моделей у продакшн-системах
- Інструменти: Python, TensorFlow/PyTorch, Docker, хмарні платформи (AWS/GCP), API
- Щоденна робота: оптимізація моделей, інфраструктура пайплайнів, моніторинг моделей у продакшені
- Шлях входу: зазвичай вимагає сильних навичок програмної інженерії плюс знання ML.
Створення портфоліо
Рекрутери звертають увагу на те, що ви вмієте робити, а не лише на те, що вивчали. Портфоліо з 3-5 якісних проєктів на GitHub важливіше за сертифікати. Хороші проєкти використовують реальні (а не тестові) датасети, містять чітку документацію та показують повний пайплайн: від сирих даних до практичних інсайтів.
Ваші наступні кроки
Куди рухатися далі
Інструменти для роботи доступні безкоштовно:
- pandas: стандартна Python-бібліотека для маніпуляції даними
- matplotlib / seaborn: бібліотеки візуалізації
- scikit-learn: основний інструмент для класичного машинного навчання
- Jupyter notebooks: інтерактивні середовища для програмування, де можна поєднувати код, результати та нотатки
- Kaggle: безкоштовні набори даних, змагання та спільнота практиків
Почніть з одного реального набору даних, який вас цікавить. Завантажте його, очистіть, дослідіть і спробуйте відповісти на запитання. Цей один проєкт навчить вас більше, ніж будь-який курс.