1. Введение в машинное обучение и предварительная обработка данных
Введение в машинное обучение и предварительная обработка данных
Добро пожаловать в курс «Основы алгоритмов машинного обучения». Это первая статья, в которой мы заложим фундамент для понимания того, как работают интеллектуальные системы. Мы разберем, что такое машинное обучение, чем оно отличается от классического программирования, и почему данные — это «новая нефть», которую нужно уметь правильно очищать и перерабатывать.
Что такое машинное обучение?
Машинное обучение (Machine Learning, ML) — это подраздел искусственного интеллекта, изучающий методы построения алгоритмов, способных обучаться на данных. В отличие от жестко заданных инструкций, ML-алгоритмы находят закономерности в информации и используют их для принятия решений или прогнозирования.
Чтобы понять суть, сравним два подхода:
!Сравнение потоков данных в классическом программировании и машинном обучении
Основные типы машинного обучения
Существует три основных парадигмы обучения, которые мы будем детально разбирать в следующих статьях курса:
* Обучение с учителем (Supervised Learning). У алгоритма есть «учитель», который дает правильные ответы. Например, мы показываем модели тысячи фотографий кошек и собак с подписями, а она учится их различать. Задачи: классификация и регрессия. * Обучение без учителя (Unsupervised Learning). Правильных ответов нет. Алгоритм ищет структуру в данных самостоятельно. Например, сегментация клиентов банка по поведению. Задачи: кластеризация, понижение размерности. * Обучение с подкреплением (Reinforcement Learning). Агент обучается, взаимодействуя со средой и получая сигналы вознаграждения или наказания. Так учат роботов ходить или программы играть в шахматы.
Жизненный цикл ML-проекта
Создание модели — это не просто написание кода. Это процесс, состоящий из нескольких этапов:
В этой статье мы сфокусируемся на втором этапе. Часто говорят: «Garbage in, garbage out» (Мусор на входе — мусор на выходе). Если подать в самый мощный алгоритм «грязные» данные, результат будет плачевным.
Предварительная обработка данных
Данные в реальном мире редко бывают идеальными. Они содержат пропуски, ошибки, выбросы и представлены в разных форматах. Рассмотрим ключевые шаги предобработки.
1. Работа с пропущенными значениями
В таблицах с данными часто встречаются пустые ячейки (NaN — Not a Number). Большинство алгоритмов не умеют работать с пропусками.
Основные стратегии решения:
* Удаление. Если строк с пропусками мало (например, менее 5%), их можно просто удалить. * Заполнение (Импутация). Пропуски заменяются на: * Среднее значение (для нормального распределения). * Медиану (если есть выбросы). * Моду (самое частое значение) — для категориальных данных.
2. Кодирование категориальных признаков
Компьютеры понимают только числа. Если у вас есть столбец «Цвет» со значениями «Красный», «Зеленый», «Синий», модель не сможет их обработать напрямую. Их нужно перевести в цифровой вид.
#### Label Encoding Каждой категории присваивается уникальное число. Например: * Красный 0 * Зеленый 1 * Синий 2
Проблема: Алгоритм может решить, что Синий (2) «больше» или «важнее», чем Красный (0), хотя цвета равнозначны.
#### One-Hot Encoding Создаются новые бинарные столбцы для каждой категории. Строка получает 1 в столбце своего цвета и 0 в остальных.
| Цвет | Цвет_Красный | Цвет_Зеленый | Цвет_Синий | | :--- | :---: | :---: | :---: | | Красный | 1 | 0 | 0 | | Зеленый | 0 | 1 | 0 | | Синий | 0 | 0 | 1 |
Этот метод предпочтительнее для номинальных признаков, где нет порядка.
3. Масштабирование признаков (Feature Scaling)
Представьте, что у нас есть два признака:
Диапазон зарплаты значительно больше. Многие алгоритмы (например, метод ближайших соседей или градиентный спуск) будут считать зарплату более важным признаком только из-за больших чисел. Чтобы этого избежать, данные нужно привести к одному масштабу.
#### Нормализация (Min-Max Scaling) Приводит все значения к диапазону от 0 до 1. Формула выглядит так:
Где: * — новое нормализованное значение. * — исходное значение. * — минимальное значение в столбце. * — максимальное значение в столбце.
#### Стандартизация (Z-score Normalization) Преобразует данные так, чтобы среднее значение стало равным 0, а стандартное отклонение — 1. Это полезно, если данные имеют нормальное распределение.
Где: * — стандартизированное значение (z-оценка). * — исходное значение. * — среднее арифметическое выборки. * — стандартное отклонение выборки.
!Визуализация влияния масштабирования на распределение данных
4. Разделение выборки
Финальный этап перед обучением — разделение данных на две (иногда три) части:
> «Тестировать модель на тех же данных, на которых она училась — это как дать студенту на экзамене те же вопросы, что были в учебнике. Он может просто запомнить ответы, не понимая сути». > Andrew Ng, Machine Learning Course
Пример на Python
Хотя мы углубимся в код позже, полезно увидеть, как эти концепции реализуются с помощью библиотеки scikit-learn.
Обратите внимание: мы вычисляем параметры масштабирования (среднее и отклонение) только на обучающей выборке, чтобы избежать «утечки данных» из будущего (тестовой выборки).
Заключение
Мы рассмотрели основы машинного обучения и критически важный этап подготовки данных. Помните, что качество вашей модели напрямую зависит от качества предобработки. В следующей статье мы перейдем к изучению первого серьезного алгоритма — линейной регрессии.
Теперь вы готовы проверить свои знания на практике.