Введение в машинное обучение

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

1. Основы машинного обучения: определения, типы задач и жизненный цикл модели

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

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

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

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

Чтобы понять разницу, давайте сравним два подхода.

Традиционное программирование vs Машинное обучение

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

> «Если в письме есть слово 'лотерея' И 'выигрыш', то пометить как спам».

Мы подаем на вход данные (письма) и правила (код), а на выходе получаем ответы.

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

!Диаграмма, показывающая различие потоков данных в классическом программировании и ML

Ключевые определения

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

* Датасет (Dataset) — набор данных, на котором учится машина. Это может быть таблица Excel, папка с картинками или база данных текстов. * Объект (Sample/Instance) — одна строка в вашей таблице или одна картинка. Единица данных, которую мы анализируем. * Признаки (Features) — характеристики объекта. Если мы предсказываем цену квартиры, признаками будут: площадь, этаж, район, год постройки. В математической нотации признаки часто обозначают вектором . * Целевая переменная (Target) — то, что мы хотим предсказать. Для квартиры это цена. Обычно обозначается как . * Модель (Model) — это алгоритм после обучения. Это та самая «математическая формула» или набор правил, которые компьютер вывел из данных.

Типы задач машинного обучения

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

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

Это самый распространенный тип ML. У нас есть датасет, где для каждого объекта уже известен правильный ответ. Мы как бы говорим машине: «Смотри, вот характеристики квартиры, а вот ее цена. Вот фото кота, а вот подпись 'кот'. Учись!».

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

#### А. Регрессия (Regression) Задача регрессии возникает, когда нам нужно предсказать число. Ответ может быть любым значением на непрерывной шкале.

Примеры: * Предсказание стоимости жилья. * Прогноз температуры на завтра. * Оценка времени доставки пиццы.

В простейшем случае модель регрессии можно представить как уравнение прямой:

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

#### Б. Классификация (Classification) Задача классификации возникает, когда нам нужно предсказать категорию (класс). Ответ выбирается из ограниченного списка вариантов.

Примеры: * Спам или не спам (бинарная классификация, всего 2 класса). * Распознавание рукописных цифр от 0 до 9 (многоклассовая классификация, 10 классов). * Диагностика болезни (болен/здоров).

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

Здесь у нас есть данные, но нет правильных ответов. У машины нет «учителя», который скажет, где правда. Задача алгоритма — найти структуру в данных самостоятельно.

Самая популярная задача здесь — Кластеризация (Clustering). Это группировка объектов по схожести.

Примеры: * Сегментация клиентов банка: алгоритм сам находит группу «молодые транжиры» и «экономные пенсионеры», анализируя траты. * Сжатие изображений. * Рекомендательные системы (поиск похожих товаров).

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

Это обучение методом проб и ошибок. Агент (программа) действует в некоторой среде и получает сигналы: «награда» за хорошее действие или «штраф» за плохое. Цель агента — набрать максимум наград.

Примеры: * Робот-пылесос учится обходить препятствия. * Искусственный интеллект играет в шахматы или Dota 2.

!Визуализация трех основных типов машинного обучения с примерами

Жизненный цикл модели (ML Lifecycle)

Создание ML-решения — это не просто написание кода model.fit(). Это циклический процесс, похожий на научный эксперимент. Давайте разберем его этапы.

Этап 1: Определение задачи (Problem Definition)

Прежде чем касаться данных, нужно понять, что мы решаем. Какую бизнес-проблему мы хотим устранить? Действительно ли здесь нужно машинное обучение, или хватит обычной формулы в Excel?

Этап 2: Сбор и подготовка данных (Data Collection & Preparation)

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

Процесс включает:

  • Сбор: Выгрузка из баз данных, парсинг сайтов, использование датчиков.
  • Очистка: Удаление мусора, заполнение пропусков.
  • Разметка: Если это обучение с учителем, людям часто приходится вручную проставлять ответы (например, врачи размечают снимки МРТ).
  • Этап 3: Обучение модели (Training)

    На этом этапе мы выбираем алгоритм и «скармливаем» ему данные. Модель ищет закономерности.

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

    Формально это можно записать так:

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

    Задача обучения — подобрать такие параметры модели, чтобы была минимальной.

    Этап 4: Оценка (Evaluation)

    Мы не можем верить модели на слово. Мы должны проверить её на данных, которые она никогда не видела (тестовая выборка). Если модель отлично работает на обучающих данных, но проваливается на новых — это называется переобучение (overfitting). Она просто «зазубрила» ответы, но не поняла суть.

    Этап 5: Внедрение и мониторинг (Deployment & Monitoring)

    Модель встраивается в приложение (сайт, мобильное приложение, заводской конвейер). Но на этом работа не заканчивается. Мир меняется, и данные меняются. Модель, обученная на ценах 2020 года, будет бесполезна в 2025 году. Поэтому за моделями нужно следить и периодически дообучать их.

    !Схема жизненного цикла модели машинного обучения

    Заключение

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

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

    2. Обучение с учителем: линейная регрессия, методы классификации и деревья решений

    Обучение с учителем: линейная регрессия, методы классификации и деревья решений

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

    Сегодня мы заглянем «под капот» самых фундаментальных алгоритмов. Мы не просто узнаем их названия, но и поймем математическую и логическую суть того, как машина принимает решения. Мы разберем три кита классического ML: Линейную регрессию, Логистическую регрессию (для классификации) и Деревья решений.

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

    Начнем с задачи регрессии — предсказания числа. Самый простой и в то же время мощный инструмент здесь — линейная регрессия.

    Представьте, что у вас есть график, где по оси X отложена площадь квартиры, а по оси Y — её цена. Если вы поставите точки для всех проданных квартир в вашем районе, вы увидите, что они выстраиваются в некое подобие вытянутого облака. Чем больше площадь, тем выше цена.

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

    !Визуализация линейной регрессии: красная линия показывает предсказание модели, а точки — реальные данные.

    Математика прямой

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

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

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

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

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

    Суть обучения: алгоритм «крутит» параметры и , чтобы сделать минимальным. Это похоже на настройку радиоприемника, где вы крутите ручки, чтобы убрать помехи.

    Логистическая регрессия: когда нужно выбрать класс

    Название «Логистическая регрессия» — это одна из самых больших путаниц для новичков. Несмотря на слово «регрессия» в названии, этот алгоритм используется для классификации.

    Представьте, что мы хотим предсказать не цену, а факт: купит клиент страховку или нет (1 или 0). Если мы попробуем использовать обычную линейную регрессию, прямая может уйти в бесконечность и выдать значение 150 или -20. Но вероятность не может быть больше 100% или меньше 0%.

    Нам нужен способ «сплющить» прямую линию так, чтобы все значения оставались в диапазоне от 0 до 1. Для этого используется сигмоида.

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

    Формула вероятности

    Логистическая регрессия берет результат линейного уравнения () и помещает его в специальную функцию:

    Где: * — вероятность того, что объект принадлежит к классу 1 (например, «купит страховку») при данных признаках . * — число Эйлера (математическая константа, примерно равна 2.718). * — выход линейной модели ().

    Если очень большое положительное число, формула выдаст значение близкое к 1. Если очень большое отрицательное — близкое к 0.

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

    Модель выдает вероятность, например, 0.78. Как превратить это в ответ «Да» или «Нет»? Мы устанавливаем порог (threshold). Обычно это 0.5.

    * Если вероятность > 0.5 Класс 1 (Купит). * Если вероятность 0.5 Класс 0 (Не купит).

    Метод k-ближайших соседей (k-NN)

    Прежде чем перейти к деревьям, упомянем самый простой и интуитивный алгоритм классификации — k-Nearest Neighbors (k-NN). Его логика описывается пословицей: «Скажи мне, кто твой друг, и я скажу, кто ты».

    Алгоритм не учит никаких формул. Он просто запоминает все данные.

    Когда приходит новый объект (например, новый клиент банка), алгоритм:

  • Находит самых похожих на него клиентов из прошлого (ближайших соседей).
  • Смотрит, к какому классу они принадлежат.
  • Выбирает класс большинством голосов.
  • Если , и среди соседей два надежных заемщика и один должник, то нового клиента мы тоже назовем надежным.

    Деревья решений (Decision Trees)

    Если линейная регрессия мыслит формулами, а k-NN — расстояниями, то деревья решений мыслят правилами. Это алгоритм, который пытается имитировать человеческую логику принятия решений.

    Представьте, что вы решаете, брать ли зонт. Ваша логика:

  • Идет ли дождь? (Если Да Брать).
  • Если Нет Пасмурно ли на улице? (Если Нет Не брать).
  • Если Пасмурно Надолго ли я ухожу? ... и так далее.
  • Структура дерева

    Дерево решений состоит из узлов и листьев: * Корневой узел (Root Node) — самый верхний вопрос, который лучше всего разделяет данные. * Внутренние узлы (Internal Nodes) — вопросы по признакам (например, «Возраст > 30?»). * Листья (Leaves) — конечные узлы, где дается ответ (класс или число).

    !Дерево решений разбивает сложную задачу на серию простых вопросов.

    Как строится дерево?

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

    Алгоритм перебирает все возможные вопросы и ищет тот, который лучше всего разделяет данные на чистые группы. Для оценки «чистоты» используются метрики, такие как Энтропия или Неопределенность Джини (Gini Impurity).

    Формула индекса Джини для группы объектов:

    Где: * — значение неопределенности Джини. Чем оно меньше, тем «чище» узел (лучше разделение). * — количество классов. * — сумма по всем классам. * — доля объектов класса в этом узле.

    Если в группе только «спам», то (идеальная чистота). Если 50% спама и 50% не спама, то (максимальная неопределенность).

    Проблема переобучения

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

    Это называется переобучение (Overfitting). Чтобы бороться с ним, мы ограничиваем глубину дерева (max_depth) или минимальное количество объектов в листе.

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

    Давайте подведем итог в виде таблицы, чтобы понять, когда и что использовать.

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

    Заключение

    Сегодня мы разобрали фундамент обучения с учителем. Мы узнали, как:

  • Линейная регрессия проводит прямую линию через данные для предсказания чисел.
  • Логистическая регрессия использует S-образную кривую (сигмоиду) для предсказания вероятности класса.
  • Деревья решений задают последовательные вопросы, разбивая данные на группы.
  • Эти алгоритмы — «рабочие лошадки» индустрии. Часто простого дерева решений или логистической регрессии достаточно, чтобы решить бизнес-задачу лучше, чем сложная нейросеть. В следующей статье мы поговорим о том, как правильно оценивать качество этих моделей, чтобы не обмануть самих себя.

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

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

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

    Но что делать, если правильных ответов нет? Представьте, что вы — марсианин, который впервые прилетел на Землю и зашел в супермаркет. Вы видите тысячи товаров, но не знаете, что это такое. Однако, походив по рядам, вы начинаете замечать закономерности: вот группа круглых и сочных объектов (фрукты), вот группа холодных картонных коробок (молоко), а вот полки с чем-то шуршащим (чипсы).

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

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

    Кластеризация: поиск похожих

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

    Это используется повсюду: * Маркетинг: сегментация клиентов (VIP, экономные, новички). * Геология: поиск месторождений полезных ископаемых по сейсмическим данным. * IT: группировка новостей по темам в агрегаторах.

    Рассмотрим самые популярные алгоритмы.

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

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

    !Пошаговая иллюстрация работы алгоритма K-Means: от случайной инициализации до стабилизации кластеров

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

  • Выбираем случайных точек в пространстве данных. Назовем их центроидами.
  • Для каждого объекта данных находим ближайший к нему центроид и «приписываем» объект к этому кластеру.
  • Пересчитываем центры кластеров: находим среднее арифметическое координат всех точек, попавших в кластер, и сдвигаем центроид туда.
  • Повторяем шаги 2 и 3, пока центроиды не перестанут двигаться.
  • Чтобы определить «близость», чаще всего используется Евклидово расстояние. В двумерном пространстве оно вычисляется так:

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

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

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

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

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

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

    DBSCAN: плотность имеет значение

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

    Алгоритм делит точки на три типа:

  • Ядровые точки: вокруг них много соседей (высокая плотность).
  • Граничные точки: находятся на краю кластера.
  • Шум: одинокие точки, до которых никому не дотянуться.
  • Если вы анализируете транзакции банка, DBSCAN поможет найти мошенников — их поведение будет «шумом», выпадающим из общих плотных групп обычных клиентов.

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

    Вторая большая задача обучения без учителя — упрощение данных. В реальных задачах у объектов могут быть сотни и тысячи признаков. Это порождает проблему, известную как Проклятие размерности (Curse of Dimensionality).

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

    Методы понижения размерности позволяют сжать информацию, оставив только самое важное.

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

    Principal Component Analysis (PCA) — это король понижения размерности. Представьте, что у вас есть трехмерный объект (например, чайник), и вы хотите сделать его фотографию (2D), потеряв минимум информации. Вы будете крутить чайник так, чтобы на фото было видно и носик, и ручку, и крышку. Вы ищете ракурс с максимальным разнообразием деталей.

    PCA делает то же самое математически. Он находит новые оси (главные компоненты), вдоль которых данные имеют наибольший разброс (дисперсию).

    !Проекция трехмерных данных на плоскость с помощью PCA

    Математически PCA ищет такую проекцию, чтобы максимизировать дисперсию данных. Дисперсия — это мера того, насколько сильно данные отличаются друг от друга.

    Формула выборочной дисперсии для одного признака:

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

    PCA создает новые признаки (компоненты), которые являются смесью старых. Например, вместо «длины» и «ширины» комнаты он может создать один признак «площадь», который сохранит 90% информации о размере.

    t-SNE и UMAP

    PCA — линейный метод, он работает как тень от объекта. Но если данные скручены в сложный рулет (например, спираль), PCA их просто сплющит в кашу.

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

    Зачем нам это нужно?

    Подведем итог. Обучение без учителя — это инструмент разведки.

  • Разведочный анализ данных (EDA): Прежде чем строить сложные модели, мы используем PCA, чтобы нарисовать данные на плоскости и понять, есть ли в них вообще какая-то структура.
  • Предобработка: Мы можем сжать 1000 признаков до 50 главных компонент с помощью PCA, и только потом подать их на вход классификатору (из предыдущей статьи). Это ускорит обучение в разы и уберет шум.
  • Детекция аномалий: Все, что не попадает ни в один кластер или находится далеко от главных компонент — подозрительно и требует проверки.
  • В следующей статье мы перейдем к критически важной теме — как понять, что наша модель (будь то с учителем или без) работает хорошо? Мы поговорим о метриках качества и валидации.

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

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

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

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

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

    Разделяй и властвуй: Обучающая и тестовая выборки

    Самая грубая ошибка новичка — обучить модель на всех имеющихся данных, а потом проверить её качество на тех же самых данных. Это все равно что дать студенту перед экзаменом список вопросов с ответами, а потом на экзамене дать эти же самые вопросы. Студент получит 5 баллов, но знает ли он предмет? Скорее всего, он просто запомнил ответы.

    Чтобы честно оценить модель, мы всегда делим данные на две части:

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

    Вспомним задачу регрессии: мы предсказываем число (например, цену дома). Здесь нельзя просто сказать «угадал» или «не угадал», потому что цена 10.5 млн и 10.6 млн — это почти одно и то же. Нам нужно измерить расстояние между предсказанием и реальностью.

    1. Средняя абсолютная ошибка (MAE)

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

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

    Если , это значит, что в среднем наша модель ошибается на 5000 рублей в ту или иную сторону.

    2. Среднеквадратичная ошибка (MSE и RMSE)

    Иногда нам важно строго наказать модель за большие промахи. Если модель ошиблась на 100 рублей — это не страшно, но если на 1 миллион — это катастрофа. Чтобы усилить вес больших ошибок, мы возводим разницу в квадрат.

    Где: * — среднеквадратичная ошибка (Mean Squared Error). * Остальные обозначения те же, что и выше.

    Так как измеряется в «квадратных рублях» (что сложно понять), часто из него извлекают корень, получая (Root Mean Squared Error). Это возвращает размерность к обычным рублям, но сохраняет свойство сильного наказания за большие ошибки.

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

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

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

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

    В классификации (спам/не спам, болен/здоров) все иначе. Мы предсказываем класс. Казалось бы, просто посчитай процент правильных ответов. Но здесь кроется ловушка.

    Ловушка Accuracy (Доля правильных ответов)

    Представьте, что мы создаем тест на редкую болезнь, которой болеет 1 человек из 100. Если наша модель будет абсолютно глупой и скажет «Все здоровы», её Accuracy (точность) будет 99%! Ведь она ошиблась всего 1 раз из 100.

    Но такая модель бесполезна. Поэтому в задачах с дисбалансом классов (когда одного класса намного больше, чем другого) Accuracy использовать нельзя.

    Матрица ошибок (Confusion Matrix)

    Чтобы разобраться детально, мы строим таблицу 2x2, которая показывает четыре типа исходов:

  • True Positive (TP): Истина — «Болен», Модель — «Болен» (Верное попадание).
  • True Negative (TN): Истина — «Здоров», Модель — «Здоров» (Верное отрицание).
  • False Positive (FP): Истина — «Здоров», Модель — «Болен» (Ложная тревога, ошибка 1-го рода).
  • False Negative (FN): Истина — «Болен», Модель — «Здоров» (Пропуск цели, ошибка 2-го рода).
  • !Визуализация четырех возможных исходов классификации

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

    На основе матрицы ошибок строятся две важнейшие метрики.

    Precision (Точность): Если модель сказала «Это спам», какова вероятность, что это действительно спам? Нам важно не зацепить важные письма.

    Где: * — количество верно предсказанных положительных объектов. * — количество ложных срабатываний.

    Recall (Полнота): Какую долю всего реального спама мы смогли найти? Нам важно не пропустить мусор.

    Где: * — количество пропущенных положительных объектов.

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

    F1-Score

    Если нам важны и точность, и полнота, мы используем их гармоническое среднее — F1-меру.

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

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

    Главный враг любого Data Scientist'а — переобучение.

    Переобучение (Overfitting) происходит, когда модель слишком сложная. Она не находит общие закономерности, а просто запоминает шум и случайные выбросы в обучающей выборке. Симптомы:* Идеальная точность на тренировочных данных (99.9%), но ужасная на тестовых (60%). Аналогия:* Студент выучил наизусть ответы к билетам прошлого года, но не понял предмет. На новом экзамене он провалится.

    Недообучение (Underfitting) — обратная ситуация. Модель слишком простая (например, пытается описать сложный процесс прямой линией). Она плохо работает и на тренировочных, и на тестовых данных. Аналогия:* Студент вообще не готовился.

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

    Как бороться с переобучением?

  • Больше данных: Чем больше примеров, тем сложнее модели их просто запомнить.
  • Упрощение модели: Уменьшить глубину дерева решений или количество параметров.
  • Регуляризация: Специальные математические штрафы за сложность модели (мы разберем это в продвинутых темах).
  • Кросс-валидация (Cross-Validation)

    Иногда нам не везет с разделением на Train/Test. Вдруг в тестовую выборку попали только самые легкие примеры? Тогда мы будем думать, что модель гениальна, хотя это не так.

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

    Алгоритм k-fold cross-validation:

  • Делим все данные на равных частей (фолдов). Обычно или .
  • Берем первую часть как тестовую, а на остальных частях обучаем модель.
  • Замеряем качество.
  • Берем вторую часть как тестовую, обучаем на остальных.
  • Повторяем процесс раз, пока каждая часть не побывает в роли теста.
  • Усредняем полученные оценок качества.
  • !Принцип работы перекрестной проверки по 5 блокам

    Этот метод дает гораздо более надежную оценку того, как модель поведет себя в реальном мире.

    Заключение

    Сегодня мы поняли, что создание модели — это только половина дела. Вторая половина — это строгая проверка.

    * Для регрессии мы смотрим на ошибки в абсолютных числах (). * Для классификации мы опасаемся простого и смотрим на и матрицу ошибок. * Мы всегда помним о переобучении — ситуации, когда модель «зубрит» вместо того, чтобы учиться. * Мы используем кросс-валидацию, чтобы наша оценка была объективной.

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

    5. Введение в нейронные сети и основы глубокого обучения

    Введение в нейронные сети и основы глубокого обучения

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

    Сегодня мы переходим к теме, которая создала современный хайп вокруг искусственного интеллекта. Мы поговорим о нейронных сетях и глубоком обучении (Deep Learning). Часто эти термины воспринимаются как магия, но на самом деле это просто естественное развитие тех математических идей, которые мы уже изучили.

    От биологии к математике

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

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

    Анатомия искусственного нейрона

    Давайте вспомним формулу линейной регрессии из второй статьи:

    Где — предсказание, — вес, — вход, — смещение.

    Искусственный нейрон — это, по сути, та же самая линейная регрессия, но с одной важной добавкой. Он состоит из трех этапов:

  • Взвешенная сумма: Нейрон получает на вход множество сигналов (). Каждый вход умножается на свой вес (). Все это суммируется, и добавляется смещение ().
  • Функция активации: Полученная сумма проходит через специальную функцию, которая решает, насколько сильно должен «возбудиться» нейрон.
  • Выход: Результат передается следующим нейронам.
  • !Схема устройства искусственного нейрона: от входов к выходу через взвешенную сумму и функцию активации.

    Математически это записывается так:

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

    Затем применяется функция активации :

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

    Зачем нужна функция активации?

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

    Функция активации добавляет нелинейность. Она позволяет нейросети учить сложные кривые, изгибы и закономерности, которые нельзя описать прямой линией.

    Самые популярные функции активации:

    * Сигмоида (Sigmoid): Превращает любое число в диапазон от 0 до 1. Мы использовали её в логистической регрессии. Сейчас она используется редко внутри сетей, так как замедляет обучение. * ReLU (Rectified Linear Unit): Самая популярная функция в глубоком обучении. Она работает очень просто: «Если число отрицательное — верни 0, если положительное — оставь как есть».

    Формула ReLU:

    Где: * — результат функции. * — операция выбора максимального из двух чисел: нуля и .

    Архитектура нейронной сети

    Один нейрон сам по себе слаб. Сила появляется, когда мы объединяем их в слои.

    Типичная полносвязная нейронная сеть (Feedforward Neural Network) состоит из:

  • Входной слой (Input Layer): Это просто наши данные. Если мы анализируем цену квартиры по 5 признакам, у нас будет 5 нейронов на входе.
  • Скрытые слои (Hidden Layers): Слои между входом и выходом. Именно здесь происходит магия «глубокого» обучения. Чем больше слоев, тем «глубже» сеть.
  • Выходной слой (Output Layer): Выдает финальный прогноз (число для регрессии или вероятности классов для классификации).
  • !Архитектура нейронной сети с двумя скрытыми слоями.

    Что происходит в скрытых слоях?

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

    Каждый следующий слой строит все более абстрактные и сложные признаки на основе предыдущих. Это называется иерархией признаков.

    Как учатся нейросети: Магия обратного распространения

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

    Этот процесс состоит из трех шагов, повторяющихся тысячи раз (эпох):

    1. Прямое распространение (Forward Propagation)

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

    2. Вычисление ошибки (Loss Calculation)

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

    3. Обратное распространение ошибки (Backpropagation)

    Это самый гениальный алгоритм в глубоком обучении. Мы идем от выхода к входу и пытаемся понять: «Кто виноват в ошибке?».

    Мы вычисляем градиент — направление, в котором нужно изменить веса, чтобы уменьшить ошибку. Если ошибка большая, мы сильно меняем веса. Если маленькая — чуть-чуть.

    Для обновления весов используется алгоритм Градиентного спуска (Gradient Descent).

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

    Формула обновления веса:

    Где: * — новое, улучшенное значение веса. * — текущее значение веса. * (альфа) — скорость обучения (learning rate). Это размер вашего шага с горы. Если шаг слишком большой, можно перепрыгнуть низину. Если слишком маленький — спускаться придется вечно. * — градиент (производная). Это и есть «крутизна склона», показывающая, как изменение веса влияет на общую ошибку .

    Глубокое обучение vs Классическое ML

    Когда стоит использовать нейросети, а когда хватит старого доброго случайного леса?

    | Характеристика | Классическое ML (Random Forest, Logistic Regression) | Глубокое обучение (Deep Learning) | | :--- | :--- | :--- | | Объем данных | Хорошо работает на малых и средних данных. | Требует огромных объемов данных для качественной работы. | | Железо | Можно обучать на обычном процессоре (CPU). | Требует мощных видеокарт (GPU) для матричных вычислений. | | Признаки | Требует ручного создания признаков (Feature Engineering). | Самостоятельно извлекает признаки из сырых данных (пикселей, текста). | | Интерпретируемость | Легко понять, почему модель приняла решение. | «Черный ящик». Сложно понять логику внутри миллионов весов. |

    Заключение

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

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

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