Основы машинного обучения

Этот курс знакомит с фундаментальными принципами машинного обучения, охватывая ключевые алгоритмы и методы работы с данными. Вы узнаете, как строить, обучать и оценивать модели для решения практических задач.

1. Введение в машинное обучение: основные понятия, история и типы обучения

Введение в машинное обучение: основные понятия, история и типы обучения

Добро пожаловать в курс «Основы машинного обучения». Мы начинаем наше путешествие в мир, где компьютеры учатся выполнять задачи, не будучи явно запрограммированными для каждого шага. В этой первой статье мы разберем фундамент: что такое машинное обучение, откуда оно появилось и какие основные подходы существуют сегодня.

Что такое машинное обучение?

Машинное обучение (Machine Learning, ML) — это подраздел искусственного интеллекта, изучающий методы построения алгоритмов, способных обучаться. Но что значит «обучаться» для машины?

В традиционном программировании разработчик пишет четкие инструкции (правила), которые компьютер выполняет над входными данными, чтобы получить ответ.

В машинном обучении подход меняется. Мы даем компьютеру данные и, зачастую, правильные ответы, а он сам находит правила (закономерности), которые связывают одно с другим.

!Сравнение потоков данных в традиционном программировании и машинном обучении

> Машинное обучение — это область исследований, которая дает компьютерам способность учиться без того, чтобы быть явно запрограммированными. > — Артур Самуэль, 1959 год

Основные термины

Прежде чем углубляться, определим словарь, которым будем пользоваться на протяжении всего курса:

  • Датасет (Dataset) — набор данных, на котором учится модель. Это может быть таблица Excel, папка с фотографиями или архив текстовых документов.
  • Признаки (Features) — характеристики объекта. Например, если мы предсказываем цену квартиры, признаками будут: площадь, этаж, район, год постройки.
  • Целевая переменная (Target/Label) — то, что мы хотим предсказать. В примере с квартирой это её цена.
  • Модель (Model) — алгоритм, который после обучения умеет превращать признаки в предсказание.
  • Краткая история: от фантазий к реальности

    История машинного обучения неразрывно связана с историей искусственного интеллекта (ИИ).

    Зарождение (1950-е)

    В 1950 году Алан Тьюринг предложил свой знаменитый тест: может ли машина мыслить так, чтобы человек не отличил её от другого человека? В 1957 году Фрэнк Розенблатт создал перцептрон — простейшую модель нейронной сети, вдохновленную работой человеческого мозга.

    Зимы искусственного интеллекта (1970-е – 1980-е)

    Ожидания были завышены. Ученые обещали, что машины скоро заменят людей, но вычислительных мощностей не хватало, а алгоритмы были слишком простыми для реальных задач. Финансирование сократилось, наступил период застоя, известный как «зима ИИ».

    Ренессанс и эпоха данных (1990-е – наши дни)

    С появлением интернета количество данных начало расти экспоненциально. Компьютеры стали мощнее. В 2010-х годах произошел прорыв в области глубокого обучения (Deep Learning), когда многослойные нейронные сети начали побеждать людей в распознавании образов, речи и сложных играх (например, AlphaGo).

    Три столпа машинного обучения

    Все задачи в ML можно глобально разделить на три большие категории в зависимости от того, как именно происходит процесс обучения.

    !Классификация основных типов машинного обучения

    1. Обучение с учителем (Supervised Learning)

    Это самый распространенный тип обучения. Здесь у нас есть «учитель», который знает правильные ответы. Модель получает входные данные и правильный ответ к ним. Её задача — найти закономерность, чтобы для новых данных предсказывать ответ самостоятельно.

    Представьте, что вы учите ребенка различать фрукты. Вы показываете яблоко и говорите: «Это яблоко». Показываете банан: «Это банан». После множества примеров ребенок (модель) начинает сам понимать, где какой фрукт.

    Задачи обучения с учителем делятся на два подтипа:

    * Классификация: Ответ — это категория (класс). Например: «Спам» или «Не спам», «Кошка» или «Собака», «Болен» или «Здоров». * Регрессия: Ответ — это число. Например: предсказание цены на нефть, температуры на завтра или количества продаж.

    Простейший пример регрессии можно описать линейной формулой:

    Где: * — предсказываемое значение (например, цена квартиры); * — входной признак (например, площадь квартиры); * — вес (коэффициент), показывающий важность признака (насколько сильно площадь влияет на цену); * — смещение (базовое значение цены, не зависящее от площади).

    В процессе обучения модель подбирает оптимальные значения и , чтобы ошибаться как можно меньше.

    2. Обучение без учителя (Unsupervised Learning)

    Здесь правильных ответов нет. У модели есть только набор данных, и её задача — найти в них структуру, скрытые закономерности или аномалии.

    Представьте, что инопланетянин прилетел в библиотеку. Он не умеет читать, но может заметить, что книги бывают разных цветов и размеров. Он может разложить их по кучкам: «большие красные», «маленькие синие» и так далее. Он не знает, что это за жанры, но он нашел структуру.

    Основные задачи:

    * Кластеризация: Группировка похожих объектов. Используется в маркетинге для сегментации клиентов (например, «экономные», «транжиры», «любители новинок»). * Понижение размерности: Упрощение данных с сохранением важной информации. Это полезно для визуализации или сжатия данных. * Поиск ассоциативных правил: Анализ корзины покупок («Люди, купившие пиво, часто покупают чипсы»).

    3. Обучение с подкреплением (Reinforcement Learning)

    Это обучение методом проб и ошибок. Здесь есть агент (например, робот или программа), который действует в некоторой среде. За каждое хорошее действие агент получает награду, за плохое — штраф.

    Цель агента — набрать максимальное количество наград за долгое время.

    Пример: обучение игре в шахматы. Агент делает ход. Если ход привел к победе — он получает +1 балл. Если к поражению — -1 балл. Сначала он ходит случайно, но со временем понимает, какие стратегии ведут к победе.

    Математически это часто описывается через функцию ценности, которая оценивает, насколько выгодно находиться в определенном состоянии. Упрощенно идею обновления знаний агента можно записать так:

    Где: * — новое значение ценности действия в состоянии ; * — текущее значение ценности; * — скорость обучения (насколько быстро мы забываем старый опыт); * — полученная награда за действие; * — коэффициент дисконтирования (насколько нам важны будущие награды по сравнению с сиюминутными); * — максимальная ожидаемая награда в следующем состоянии .

    Почему это важно именно сейчас?

    Почему машинное обучение «выстрелило» именно в последние 10-15 лет, хотя алгоритмы были известны давно?

  • Большие данные (Big Data): Мы генерируем терабайты информации ежесекундно (клики, фото, транзакции). Алгоритмам нужно «топливо» для обучения.
  • Вычислительные мощности: Графические процессоры (GPU) оказались идеальными для параллельных вычислений, необходимых для обучения нейросетей.
  • Доступность инструментов: Библиотеки вроде Python, TensorFlow и PyTorch сделали ML доступным не только для профессоров математики, но и для разработчиков.
  • Заключение

    Машинное обучение — это не магия, а математика и статистика, помноженные на большие данные. Мы рассмотрели три основных типа обучения: * С учителем: когда есть правильные ответы. * Без учителя: когда нужно найти структуру в хаосе. * С подкреплением: когда учимся на ошибках и наградах.

    В следующих статьях мы подробно разберем каждый из этих типов, начнем с простых алгоритмов и постепенно дойдем до создания собственных моделей.

    2. Подготовка данных: очистка, разведочный анализ и инженерия признаков

    Подготовка данных: очистка, разведочный анализ и инженерия признаков

    В предыдущей статье мы узнали, что машинное обучение — это поиск закономерностей в данных. Но есть одна проблема, о которой новички часто забывают: реальные данные ужасны. Они полны ошибок, пропусков и мусора.

    В среде специалистов по данным (Data Scientists) существует золотое правило:

    > Garbage In, Garbage Out (Мусор на входе — мусор на выходе).

    Даже самый мощный и современный алгоритм не сможет построить хорошую модель, если обучать его на некачественных данных. По статистике, подготовка данных занимает от 60% до 80% времени работы над проектом. Сегодня мы научимся превращать «сырые» данные в идеальное топливо для наших моделей.

    !Процесс превращения сырых данных в готовый для обучения набор.

    Этап 1: Очистка данных (Data Cleaning)

    Первый шаг — это уборка. Представьте, что вы готовитесь к переезду. Прежде чем паковать вещи, нужно выбросить сломанное, починить нужное и найти потерянное.

    1. Пропущенные значения (Missing Values)

    В таблицах часто бывают пустые ячейки. Например, пользователь не указал свой возраст или датчик температуры на час отключился. Компьютер не умеет считать пустоту (NaN — Not a Number), поэтому нам нужно принять решение:

    * Удаление: Если в строке не хватает важных данных, мы можем просто удалить её. Это просто, но мы теряем информацию. Если данных мало, это непозволительная роскошь. * Заполнение (Imputation): Мы можем заполнить пропуск средним значением, медианой или самым частым значением (модой). Например, если неизвестен возраст пассажира Титаника, можно подставить средний возраст всех пассажиров.

    2. Дубликаты

    Иногда данные копируются случайно. Если в вашем датасете одна и та же запись встречается дважды, модель может придать ей слишком большое значение. Дубликаты нужно безжалостно удалять.

    3. Выбросы (Outliers)

    Выбросы — это значения, которые сильно отличаются от остальных.

    Представьте, что мы анализируем зарплаты в небольшом кафе. У официантов и поваров зарплата примерно одинаковая. Но если в кафе зайдет миллиардер, средняя зарплата всех людей в помещении взлетит до небес. Миллиардер — это выброс.

    Выбросы могут быть: * Ошибками: Человек случайно набрал лишний ноль (возраст 250 лет). * Реальными аномалиями: Редкие, но важные события (мошенническая транзакция).

    Ошибки мы исправляем или удаляем. Аномалии — изучаем.

    Этап 2: Разведочный анализ данных (EDA)

    EDA (Exploratory Data Analysis) — это знакомство с данными. Мы не пытаемся ничего предсказать, мы просто смотрим, что у нас есть. Это как детектив, который осматривает место преступления перед тем, как строить версии.

    Описательная статистика

    Нам нужно понять распределение данных. Для этого используются основные метрики.

    Среднее арифметическое (Mean) показывает центр данных:

    Где: * — среднее значение; * — количество наблюдений (строк в данных); * — знак суммы (нужно сложить все значения); * — конкретное значение признака для -го объекта.

    Однако среднее чувствительно к выбросам (вспомните пример с миллиардером). Поэтому часто используют медиану — число, которое стоит ровно посередине, если отсортировать все значения по возрастанию.

    Визуализация

    Человеческий мозг плохо понимает таблицы с тысячами цифр, но отлично понимает картинки.

    * Гистограмма: Показывает, как часто встречаются те или иные значения (например, сколько людей разного возраста). * Матрица корреляции: Показывает, как признаки зависят друг от друга. Например, «Площадь квартиры» и «Цена» обычно имеют сильную положительную корреляцию (одно растет — растет и другое).

    !Тепловая карта корреляции помогает увидеть связи между признаками.

    Этап 3: Инженерия признаков (Feature Engineering)

    Это самый творческий этап. Инженерия признаков — это процесс создания новых характеристик из уже имеющихся, чтобы помочь модели лучше понять задачу.

    1. Создание новых признаков

    Иногда сырые данные неинформативны. * Пример: У вас есть дата «2023-10-05». Сама по себе она мало что говорит. Но если мы извлечем из неё «День недели» (четверг) или «Месяц» (октябрь), модель может найти закономерность: например, продажи пиццы выше по пятницам.

    2. Кодирование категориальных признаков

    Компьютеры понимают только числа. Они не знают, что такое «Красный», «Зеленый» или «Синий».

    Если мы просто заменим цвета на цифры (Красный=1, Зеленый=2, Синий=3), модель может решить, что Синий (3) «больше» или «лучше», чем Красный (1). Это неверно, так как цвета равнозначны.

    Для решения используют метод One-Hot Encoding (Горячее кодирование). Мы создаем новые колонки для каждого цвета и ставим 1 там, где этот цвет есть, и 0 там, где его нет.

    | Цвет (Исходный) | Цвет_Красный | Цвет_Зеленый | Цвет_Синий | | :--- | :---: | :---: | :---: | | Красный | 1 | 0 | 0 | | Зеленый | 0 | 1 | 0 | | Синий | 0 | 0 | 1 |

    3. Масштабирование данных (Scaling)

    Представьте, что мы предсказываем, купит ли клиент машину. У нас есть два признака:
  • Возраст: от 18 до 90 лет.
  • Зарплата: от 20 000 до 500 000 рублей.
  • Числа в колонке «Зарплата» в тысячи раз больше, чем в колонке «Возраст». Многие алгоритмы решат, что зарплата в тысячи раз важнее. Чтобы этого избежать, мы приводим все признаки к одному масштабу.

    Один из популярных методов — Стандартизация (Z-score normalization). Она делает так, что среднее значение становится равным 0, а разброс данных выравнивается.

    Где: * — новое, масштабированное значение; * — исходное значение; * — среднее арифметическое этого признака; * — стандартное отклонение (показатель того, насколько сильно данные разбросаны вокруг среднего).

    После такой обработки все признаки становятся «равноправными» для алгоритма.

    Заключение

    Подготовка данных — это фундамент машинного обучения. Мы прошли путь из трех шагов:

  • Очистка: убрали пропуски, дубликаты и ошибки.
  • EDA: изучили данные, построили графики и нашли взаимосвязи.
  • Инженерия признаков: превратили текст в цифры, создали новые полезные признаки и выровняли масштаб.
  • Теперь, когда наши данные чисты и структурированы, мы готовы к самому интересному — выбору и обучению модели. Об этом мы поговорим в следующей статье.

    3. Обучение с учителем: популярные алгоритмы линейной регрессии и классификации

    Обучение с учителем: популярные алгоритмы линейной регрессии и классификации

    В предыдущих статьях мы разобрались, что такое машинное обучение, и научились готовить данные: очищать их от мусора и приводить к нужному виду. Теперь у нас есть чистое «топливо». Пришло время выбрать «двигатель» — алгоритм, который превратит эти данные в полезные предсказания.

    Сегодня мы погрузимся в обучение с учителем (Supervised Learning). Напомню, это подход, при котором у модели есть примеры с правильными ответами. Мы рассмотрим два фундаментальных типа задач: регрессию (предсказание числа) и классификацию (предсказание категории), а также разберем самые популярные алгоритмы для их решения.

    Линейная регрессия: искусство проводить линии

    Линейная регрессия — это «Hello World» в мире машинного обучения. Это самый простой, но удивительно мощный алгоритм для решения задач регрессии.

    Суть метода

    Представьте, что вы хотите продать квартиру. У вас есть данные о продажах других квартир в вашем районе: их площадь и цена. Если вы нанесете эти точки на график, то увидите, что с ростом площади растет и цена.

    Задача линейной регрессии — провести через эти точки прямую линию так, чтобы она проходила максимально близко ко всем точкам сразу. Эта линия и будет нашей моделью.

    !График показывает, как линейная регрессия пытается найти прямую, минимизирующую расстояние до всех точек данных.

    Математика внутри

    В школе мы учили уравнение прямой. В машинном обучении оно выглядит так:

    Где: * — наше предсказание (например, цена квартиры); * — входной признак (площадь квартиры); * — вес (weight) или коэффициент наклона. Он показывает, насколько сильно влияет на . Если большой, значит, каждый лишний квадратный метр сильно увеличивает цену; * — смещение (bias). Это точка пересечения с осью Y. Она показывает базовую цену квартиры, даже если её площадь была бы равна нулю (теоретический минимум).

    В реальности признаков обычно больше (этаж, район, год постройки). Тогда формула превращается в сумму:

    Где: * — итоговое предсказание; * — смещение (аналог из простой формулы); * — веса для каждого признака; * — значения признаков.

    Как модель учится?

    Сначала модель проводит линию случайно. Затем она измеряет, насколько сильно ошиблась. Для этого используется функция потерь (Loss Function). Самая популярная для регрессии — MSE (Mean Squared Error, среднеквадратичная ошибка):

    Где: * — количество примеров в данных; * — знак суммы (складываем ошибки по всем примерам); * — правильный ответ (реальная цена); * — предсказание модели; * Квадрат нужен, чтобы отрицательные и положительные ошибки не гасили друг друга и чтобы сильнее штрафовать за большие промахи.

    Цель обучения — подобрать такие веса и , чтобы была минимальной. Для этого используется алгоритм градиентного спуска, который шаг за шагом «спускается» в точку с минимальной ошибкой.

    Логистическая регрессия: когда имя обманчиво

    Несмотря на слово «регрессия» в названии, этот алгоритм используется для классификации. Это один из главных инструментов для задач, где нужно ответить «Да» или «Нет» (бинарная классификация).

    Примеры: * Письмо спам или нет? * Клиент уйдет или останется? * Опухоль доброкачественная или злокачественная?

    Почему не подходит обычная прямая?

    Если мы попробуем использовать линейную регрессию для предсказания класса (0 или 1), прямая может уйти в бесконечность (выдать значение 150 или -20). А нам нужна вероятность — число от 0 до 1.

    Сигмоида

    Чтобы «сплющить» прямую линию в диапазон от 0 до 1, используется специальная функция — сигмоида.

    !Сигмоида превращает любое число в вероятность от 0 до 1.

    Формула сигмоиды:

    Где: * — результат функции (вероятность), число от 0 до 1; * — константа; * — число Эйлера (основание натурального логарифма, примерно 2.718); * — результат работы линейного уравнения ().

    Принятие решения

    Логистическая регрессия выдает вероятность. Например, модель говорит: «Вероятность того, что это спам, равна 0.8».

    Чтобы принять окончательное решение, мы устанавливаем порог (threshold). Обычно это 0.5. * Если предсказание > 0.5 Класс 1 (Спам). * Если предсказание 0.5 Класс 0 (Не спам).

    Метод k-ближайших соседей (k-NN): скажи мне, кто твой друг

    Если линейная и логистическая регрессии пытаются найти математическую формулу, то метод k-ближайших соседей (k-Nearest Neighbors) работает совсем иначе. Это алгоритм ленивого обучения — он вообще не учится в привычном понимании, а просто запоминает данные.

    Принцип работы

    Представьте, что мы хотим понять, к какому жанру относится новый фильм. У нас есть база данных фильмов с их описаниями.

    Алгоритм k-NN делает следующее:

  • Находит в базе фильмов, наиболее похожих на новый (ближайших соседей).
  • Смотрит, какой жанр среди них встречается чаще всего.
  • Присваивает этот жанр новому фильму.
  • !Иллюстрация работы k-NN: новый объект классифицируется по большинству голосов его ближайших соседей.

    Как измерить «похожесть»?

    Чтобы найти соседей, нужно вычислить расстояние между объектами. Чаще всего используют Евклидово расстояние (обычное расстояние по прямой):

    Где: * — расстояние между двумя точками (объектами) и ; * — количество признаков; * и — значения -го признака для первого и второго объекта; * — квадратный корень из суммы квадратов разностей координат.

    Важность параметра k

    Число (количество соседей) мы выбираем сами. * Если , модель очень чувствительна к шуму (выбросам). * Если слишком большое, модель может стать слишком грубой и игнорировать локальные особенности.

    Сравнение подходов

    | Алгоритм | Тип задачи | Плюсы | Минусы | | :--- | :--- | :--- | :--- | | Линейная регрессия | Регрессия | Простая, быстрая, легко интерпретировать веса. | Работает только если зависимость линейная. | | Логистическая регрессия | Классификация | Выдает вероятность, хорошо работает на простых данных. | Плохо справляется со сложными, нелинейными границами. | | k-NN | Классификация и Регрессия | Простой, не требует обучения (только запоминание). | Медленный на больших данных (нужно считать расстояние до всех точек). |

    Заключение

    Мы рассмотрели три кита классического машинного обучения:

  • Линейная регрессия помогает предсказывать числа, проводя прямые линии через данные.
  • Логистическая регрессия помогает разделять объекты на классы, используя S-образную кривую для вычисления вероятностей.
  • k-NN классифицирует объекты, основываясь на похожести с соседями.
  • Эти алгоритмы — база. В реальных задачах данные часто бывают сложнее, и прямые линии не справляются. В следующих статьях мы поговорим о том, как оценивать качество наших моделей, чтобы понять, можно ли доверять их предсказаниям.

    4. Обучение без учителя: методы кластеризации данных и понижения размерности

    Обучение без учителя: методы кластеризации данных и понижения размерности

    В прошлой статье мы разбирали алгоритмы, которые учатся на примерах с правильными ответами. Это похоже на школьное обучение: учитель показывает задачу и решение, а ученик пытается понять принцип. Но что делать, если учителя нет? Что если у нас есть гигабайты данных, но мы понятия не имеем, что они означают и какие там есть классы?

    Добро пожаловать в мир обучения без учителя (Unsupervised Learning). Здесь модель — это исследователь, которого высадили на незнакомой планете. Ей никто не говорит, что есть «хорошо», а что «плохо». Её задача — самостоятельно найти структуру в хаосе.

    Сегодня мы разберем две главные задачи этого направления: кластеризацию (как разложить всё по полочкам) и понижение размерности (как упростить сложное, не потеряв суть).

    Кластеризация: искусство наводить порядок

    Представьте, что вам вывалили на стол гору смешанных деталей LEGO. Инструкции нет. Что вы сделаете? Скорее всего, начнете раскладывать их на кучки: красные к красным, колеса к колесам, плоские к плоским. Вы только что выполнили кластеризацию.

    Кластеризация — это группировка объектов таким образом, чтобы объекты в одной группе (кластере) были более похожи друг на друга, чем на объекты из других групп.

    K-Means (Метод k-средних)

    Это самый популярный и простой алгоритм кластеризации. Его идея гениальна в своей простоте: он пытается найти центры кучек данных.

    !Пошаговая иллюстрация того, как центроиды перемещаются в центры скоплений данных.

    Как это работает:

  • Мы говорим алгоритму: «Найди нам кластеров» (например, 3).
  • Алгоритм случайно тыкает 3 точки в пространство данных. Это наши временные центры (центроиды).
  • Каждая точка данных «выбирает» себе ближайший центроид и присоединяется к его команде.
  • После того как все распределились, центроиды перемещаются в геометрический центр своей команды.
  • Шаги 3 и 4 повторяются, пока центроиды не перестанут двигаться.
  • Математически цель алгоритма — минимизировать суммарное квадратичное отклонение точек от центров их кластеров. Эта величина называется инерцией:

    Где: * — инерция (сумма ошибок), которую мы хотим сделать минимальной; * — количество кластеров; * — знак суммы; * — конкретная точка данных, принадлежащая кластеру ; * — центр (центроид) кластера ; * — квадрат расстояния от точки до центра её кластера.

    Проблема выбора K: Алгоритм не знает, сколько кластеров должно быть на самом деле. Если вы скажете найти 3 кластера там, где их реально 5, он всё равно найдет 3, просто объединив лишние. Чтобы угадать число , используют метод локтя (Elbow Method): строят график инерции и ищут место, где резкое падение сменяется плавным (похоже на сгиб локтя).

    Иерархическая кластеризация

    Этот метод не требует заранее задавать количество кластеров. Он строит дерево вложенности.

    Представьте, что каждый объект — это отдельный кластер. Затем мы находим два самых близких объекта и объединяем их. Теперь у нас на один кластер меньше. Продолжаем объединять ближайшие группы до тех пор, пока все данные не сольются в один гигантский ком. Результат можно изобразить в виде дендрограммы — древовидной схемы, по которой можно «отрезать» нужное количество кластеров на любом уровне.

    DBSCAN: когда круги не работают

    K-Means отлично работает, если ваши кластеры похожи на шары или пятна. Но что, если один кластер «обнимает» другой, как полумесяц? K-Means здесь провалится.

    Алгоритм DBSCAN (Density-Based Spatial Clustering of Applications with Noise) ищет области с высокой плотностью точек. Он как вирус: выбирает точку и заражает всех соседей, если их достаточно много рядом. Если соседей мало — точка помечается как шум (выброс). Это делает DBSCAN отличным инструментом для поиска аномалий и работы с данными сложной формы.

    Понижение размерности: проклятие размерности

    Представьте таблицу Excel, где 1000 колонок (признаков). Это могут быть пиксели изображения, слова в тексте или параметры сложного оборудования. Работать с такими данными сложно по двум причинам:

  • Медленно: Компьютеру тяжело переваривать матрицы гигантских размеров.
  • Плохое качество: Существует феномен, называемый проклятием размерности. В пространстве с огромным количеством измерений все точки становятся примерно одинаково далекими друг от друга. Понятие «близкий сосед» теряет смысл, и алгоритмы (вроде k-NN или K-Means) перестают работать.
  • Решение — уменьшить количество признаков, оставив только самые важные. Это и есть понижение размерности.

    Метод главных компонент (PCA)

    PCA (Principal Component Analysis) — король понижения размерности. Его задача — сжать данные, потеряв как можно меньше информации.

    Но что такое «информация» в математике? Это дисперсия (разброс). Если в колонке «Количество ног» у всех людей стоит значение «2», эта колонка не несет информации. Мы можем её удалить. А вот колонка «Рост» имеет большой разброс, она важна.

    PCA делает следующее:

  • Находит направление, вдоль которого данные разбросаны сильнее всего. Это будет первая главная компонента.
  • Находит второе направление, перпендикулярное первому, с максимальным оставшимся разбросом. Это вторая главная компонента.
  • И так далее.
  • !Визуализация проекции данных из 3D в 2D с помощью PCA, сохраняя максимальный разброс.

    В итоге мы можем превратить 1000 признаков в 50 новых «супер-признаков» (компонент), которые будут содержать 95% всей информации исходных данных.

    Математически переход к новым координатам можно записать так:

    Где: * — новые данные (с меньшим числом измерений); * — исходные данные; * — матрица весов, которая поворачивает и проецирует наши данные на новые оси.

    t-SNE и UMAP

    PCA — это линейный метод (он просто поворачивает оси). Но данные часто бывают закручены в сложные фигуры (например, спираль). Если сплющить спираль линейно, она превратится в кашу.

    Для таких случаев используют t-SNE и UMAP. Это продвинутые алгоритмы, которые умеют разворачивать сложные многомерные структуры на плоскость. Их часто используют для визуализации: чтобы нарисовать на 2D-экране то, что существует в 100-мерном пространстве.

    Где это применяется?

    Обучение без учителя окружает нас повсюду:

  • Сегментация клиентов: Банк берет базу транзакций и находит группы: «Студенты», «Путешественники», «Инвесторы». Маркетологи не придумывали эти группы заранее, их нашел алгоритм кластеризации.
  • Рекомендательные системы: «Люди, которые смотрели этот фильм, также смотрели...». Это поиск близких векторов в многомерном пространстве.
  • Сжатие изображений: С помощью PCA можно уменьшить размер картинки, отбросив детали, которые глаз почти не замечает.
  • Поиск аномалий: Если банковская транзакция не попадает ни в один из обычных кластеров (слишком далеко от центроидов), это сигнал тревоги — возможно, мошенничество.
  • Заключение

    Мы рассмотрели методы, которые позволяют компьютеру учиться самостоятельно, без подсказок учителя: * Кластеризация (K-Means, DBSCAN) помогает найти структуру и сгруппировать похожие объекты. * Понижение размерности (PCA) помогает упростить данные, избавиться от шума и визуализировать сложное.

    Теперь мы умеем готовить данные, обучать модели с учителем и без. Но остался главный вопрос: как понять, что наша модель работает хорошо? Как измерить её точность и не обмануть себя? Об этом — в следующей статье, посвященной метрикам качества и валидации.

    5. Оценка качества моделей, метрики эффективности и борьба с переобучением

    Оценка качества моделей, метрики эффективности и борьба с переобучением

    В предыдущих статьях мы научились готовить данные и обучать различные модели: от линейной регрессии до кластеризации. Казалось бы, дело сделано: модель обучена, предсказания получены. Но как понять, насколько эти предсказания хороши? Можно ли доверить алгоритму управление бюджетом компании или диагностику заболеваний?

    В этой статье мы разберем критически важный этап любого ML-проекта — валидацию. Мы узнаем, почему высокая точность может быть обманом, как измерить ошибку в рублях или процентах и что делать, если модель просто «зазубрила» ответы.

    Проблема экзамена: Обучающая и тестовая выборки

    Представьте студента, который готовится к экзамену по математике. У него есть учебник с задачами и ответами в конце. Если он просто выучит наизусть ответы к задачам из учебника, он блестяще решит их дома. Но на экзамене, встретив новые задачи, он провалится.

    В машинном обучении происходит то же самое. Если мы проверим качество модели на тех же данных, на которых она училась, мы получим иллюзорно высокий результат. Модель просто «вспомнит» правильные ответы.

    Чтобы проверить обобщающую способность (способность работать с новыми данными), датасет всегда делят на две части:

  • Обучающая выборка (Train set): Обычно 70-80% данных. На них модель учится, подбирает веса и коэффициенты.
  • Тестовая выборка (Test set): Оставшиеся 20-30%. Эти данные модель не видит во время обучения. Мы используем их только в самом конце, чтобы устроить «экзамен».
  • !Визуализация процесса разделения датасета на обучающую и тестовую части.

    Метрики для задач регрессии

    Когда мы предсказываем число (например, цену квартиры или температуру), нам нужно понять, насколько сильно модель ошибается в своих прогнозах. Просто сказать «угадал / не угадал» нельзя, так как точное совпадение бывает крайне редко.

    1. MAE (Mean Absolute Error)

    Самая интуитивно понятная метрика. Это средняя абсолютная ошибка. Мы берем разницу между реальным и предсказанным значением, отбрасываем знак (нам неважно, в плюс или в минус мы ошиблись) и усредняем.

    Где: * — средняя абсолютная ошибка; * — количество объектов в выборке; * — знак суммы (суммируем ошибки по всем объектам); * — модуль числа (абсолютное значение); * — реальное значение целевой переменной; * — предсказание модели.

    Пример: Если , значит, при предсказании цены квартиры мы ошибаемся в среднем на 5000 рублей.

    2. MSE (Mean Squared Error)

    Среднеквадратичная ошибка. Здесь мы возводим ошибку в квадрат перед усреднением.

    Где: * — среднеквадратичная ошибка; * — количество объектов; * — реальное значение; * — предсказание модели.

    Зачем возводить в квадрат? Это своего рода «штраф» за большие ошибки. Если модель ошиблась на 10 единиц, квадрат ошибки будет 100. Если на 100 единиц — квадрат будет 10 000. MSE заставляет модель избегать редких, но крупных промахов.

    3. Коэффициент детерминации ()

    Эта метрика показывает, насколько наша модель лучше, чем простое предсказание среднего значения для всех объектов. обычно находится в диапазоне от 0 до 1.

    * : Идеальная модель. * : Модель работает так же, как если бы мы просто выдавали среднюю цену по рынку всем подряд. * : Модель работает хуже, чем простое среднее (она нашла ложные закономерности).

    Метрики для задач классификации

    В классификации (спам/не спам, болен/здоров) всё сложнее. Казалось бы, можно просто посчитать процент правильных ответов. Эта метрика называется Accuracy (Доля правильных ответов).

    Где: * (True Positive) — верно предсказанный положительный класс (больной признан больным); * (True Negative) — верно предсказанный отрицательный класс (здоровый признан здоровым); * (False Positive) — ложноположительный (здоровый признан больным, «ложная тревога»); * (False Negative) — ложноотрицательный (больной признан здоровым, «пропуск цели»).

    Ловушка Accuracy: Представьте, что мы ищем редкое заболевание, которое есть только у 1% людей. Если наша модель будет всем подряд говорить «Здоров», её Accuracy будет 99%. Цифра красивая, но модель абсолютно бесполезна, так как она пропустила всех больных.

    Для детального анализа используют Матрицу ошибок (Confusion Matrix) и производные метрики.

    !Графическое представление матрицы ошибок, показывающее четыре возможных исхода классификации.

    Precision (Точность) и Recall (Полнота)

    Эти две метрики всегда идут в паре и часто конфликтуют друг с другом.

    Precision отвечает на вопрос: «Из всех, кого модель назвала больными, сколько на самом деле больных?»

    Где: * — верно предсказанные положительные; * — ложноположительные срабатывания.

    Recall отвечает на вопрос: «Из всех реально больных, скольких модель смогла найти?»

    Где: * — верно предсказанные положительные; * — пропущенные положительные (ложноотрицательные).

    Пример баланса: * В системе охраны (поиск воров) нам важен высокий Recall. Лучше проверить лишний раз честного человека (низкий Precision), чем пропустить вора. * В фильтре спама нам важен высокий Precision. Лучше пропустить спам во входящие, чем отправить важное письмо от начальника в папку «Спам».

    Чтобы объединить их в одно число, используют F1-меру (среднее гармоническое):

    Где: * — точность; * — полнота.

    Переобучение (Overfitting) и Недообучение (Underfitting)

    Это две главные болезни моделей машинного обучения.

    Недообучение (Underfitting)

    Модель слишком простая. Она не может уловить закономерности в данных. Например, мы пытаемся описать траекторию полета мяча прямой линией, хотя она является параболой. * Симптомы: Высокая ошибка и на обучающей, и на тестовой выборке. * Лечение: Взять более сложную модель, добавить новые признаки.

    Переобучение (Overfitting)

    Модель слишком сложная. Она не выучила закономерность, а просто запомнила шум и случайные выбросы в обучающих данных. Это тот самый студент-зубрила. * Симптомы: Ошибка на обучающей выборке очень низкая (почти 0), а на тестовой — огромная. * Лечение: 1. Больше данных: Чем больше примеров, тем сложнее их просто запомнить. 2. Регуляризация: Искусственное ограничение сложности модели (штраф за слишком большие веса). 3. Упрощение модели: Уменьшение глубины дерева или количества нейронов.

    !Сравнение недообученной, оптимальной и переобученной моделей.

    Кросс-валидация (Cross-Validation)

    Иногда нам не везет с разделением на Train/Test. В тестовую выборку могут случайно попасть только легкие примеры, и мы переоценим модель. Или наоборот — только сложные.

    Чтобы избежать фактора случайности, используют кросс-валидацию (перекрестную проверку).

    Метод k-fold работает так:

  • Весь датасет делится на равных частей (фолдов), например, на 5.
  • Мы обучаем модель 5 раз.
  • В 1-й раз мы учим на частях 2,3,4,5 и тестируем на 1.
  • Во 2-й раз учим на 1,3,4,5 и тестируем на 2.
  • И так далее, пока каждая часть не побывает в роли тестовой.
  • Итоговая оценка — это среднее значение метрики по всем 5 прогонам.
  • Это дает гораздо более надежную оценку качества, хотя и требует больше времени на вычисления.

    Заключение

    Создание модели — это не только model.fit(). Это постоянный баланс между простотой и сложностью, борьба за каждый процент точности и полноты. Мы узнали, что: * Нельзя проверять модель на тех же данных, на которых она училась. * Для регрессии важны MAE и MSE, а для классификации — Precision, Recall и F1. * Accuracy может врать на несбалансированных данных. * Переобучение — главный враг, с которым борются с помощью регуляризации и кросс-валидации.

    Теперь вы обладаете полным набором теоретических знаний для старта. В следующих материалах мы перейдем к практическим аспектам и разбору конкретных кейсов внедрения ML.