# Гид по алгоритмам машинного обучения: от линейной регрессии до нейросетей

Источник: https://www.youtube.com/watch?v=E0Hmnixke2g
Канал: Infinite Codes
Опубликовано: 17.09.2024

---

## Основы машинного обучения: путеводитель по алгоритмам
[[JUMP:0:00]]

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

### Разделение на supervised и unsupervised обучение
[[JUMP:0:52]]

В основе машинного обучения лежит классификация задач по типу обучения:

* **Обучение с учителем (Supervised Learning):** Имеется размеченный набор данных (тренировочный датасет), где для каждого набора входных переменных (признаков) известна целевая переменная (метка). Алгоритм учится на этих примерах, чтобы в будущем предсказывать значения для новых данных, например, цену недвижимости на основе её характеристик.
* **Обучение без учителя (Unsupervised Learning):** Алгоритму предоставляются данные без какой-либо «правды» или меток. Задача заключается в поиске скрытых структур или группировке данных по схожести без явных инструкций.

---


[Image of machine learning algorithm categorization]

---

### Алгоритмы обучения с учителем: регрессия и классификация
[[JUMP:2:10]]

Обучение с учителем делится на две ключевые категории:

1.  **Регрессия:** Предсказание непрерывной числовой величины, например, стоимости дома.
2.  **Классификация:** Присвоение дискретной метки (класса), например, определение является ли письмо спамом.

#### Ключевые алгоритмы:

* **Линейная регрессия:** «Мать всех алгоритмов», ищущая линейную зависимость между входными данными и целевым значением. Она минимизирует среднее расстояние между реальными данными и линией предсказания.
* **Логистическая регрессия:** Вариант линейной регрессии для задач классификации, использующий сигмоидную функцию для определения вероятности принадлежности данных к определённому классу.
* **Метод K-ближайших соседей (KNN):** Непараметрический алгоритм, который предсказывает значение для новой точки на основе среднего значения её K ближайших соседей. Важным параметром является $K$: слишком малое значение ведет к переобучению (overfitting), а слишком большое — к недообучению (underfitting).
* **Метод опорных векторов (SVM):** Строит разделяющую гиперплоскость между классами с максимальным зазором (margin). Алгоритм очень эффективен в пространствах высокой размерности и использует «ядерный трюк» (kernel trick) для создания сложных нелинейных границ.
* **Наивный байесовский классификатор:** Основан на теореме Байеса и часто используется для классификации текстов, например, фильтрации спама. Он делает «наивное» предположение о независимости признаков, что обеспечивает высокую вычислительную эффективность.
* **Деревья решений:** Алгоритм, выстраивающий серию вопросов «да/нет» для разделения данных на максимально «чистые» группы (листья).
* **Ансамбли (Random Forest и Boosting):** Комбинируют множество деревьев решений для повышения точности. Случайный лес (Random Forest) обучает деревья параллельно на подмножествах данных, а бустинг (например, XGBoost) обучает модели последовательно, где каждая следующая исправляет ошибки предыдущей.

### Нейронные сети и глубокое обучение
[[JUMP:10:22]]

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

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

### Обучение без учителя и снижение размерности
[[JUMP:12:43]]

При отсутствии меток применяются другие методы:

* **Кластеризация (K-means):** Алгоритм разбивает данные на $K$ групп, итеративно пересчитывая центры кластеров до их стабилизации.
* **Снижение размерности (PCA):** Метод главных компонент помогает избавиться от избыточных данных, находя направления (компоненты) с наибольшей вариативностью. Это делает модели более эффективными и помогает удалять шум, объединяя коррелирующие признаки.

Автор отмечает, что для выбора подходящего инструмента новичкам лучше всего использовать специализированные шпаргалки, такие как диаграмма от библиотеки scikit-learn.