В современном мире искусственного интеллекта выбор правильного алгоритма машинного обучения часто кажется непреодолимой задачей из-за их огромного разнообразия. В своем материале опытный дата-сайентист Тим, обучивший сотни студентов на практических буткемпах, предлагает четкую стратегию классификации и подбора ИТ-инструментов под конкретные бизнес-задачи. Автор раскладывает сложнейшие концепции — от линейной регрессии до глубоких нейросетей — на понятные элементы всего за 17 минут, помогая сформировать базовую интуицию работы с данными.
🧩 Разделение вселенной машинного обучения: обучение с учителем и без 0:00
Согласно определению из Википедии, машинное обучение — это сфера ИИ, изучающая статистические алгоритмы, способные извлекать закономерности из данных, обобщать их на новые примеры и выполнять задачи без явных инструкций. Весь этот массив технологий глобально разделяется на два направления: обучение с учителем (supervised learning) и обучение без учителя (unsupervised learning).
Обучение с учителем подразумевает работу с датасетом, где для каждого набора независимых переменных (признаков или инпутов) заранее известен правильный ответ — зависимая целевая переменная (метка). На этих эталонных значениях алгоритм тренируется, чтобы затем предсказывать результаты для неизвестных объектов. Тим сравнивает этот процесс с обучением маленького ребенка: взрослый показывает ему типичные изображения кошек и собак, формируя понимание признаков каждого животного, а затем просит классифицировать новую картинку.
Обучение без учителя применяется в ситуациях, когда никакой изначальной истины о данных нет. Если продолжить аналогию с ребенком, то ему дают стопку картинок с животными без каких-либо пояснений и просят просто сгруппировать их по схожести признаков. Классический пример из практики — автоматическая сортировка писем по трем неопределенным категориям, которые пользователь позже может изучить и назвать самостоятельно. Алгоритм здесь сам решает, на основе каких скрытых структур формировать группы, называемые кластерами.
📈 Дилемма обучения с учителем: регрессия против классификации 2:10
Обучение с учителем считается более крупной и востребованной ветвью машинного обучения, которая, в свою очередь, делится на два ключевых класса задач: регрессию и классификацию.
При регрессии цель состоит в том, чтобы предсказать непрерывную числовую величину для заданного входного параметра. В качестве примера Тим приводит оценку стоимости жилья. Алгоритм анализирует характеристики дома (площадь, локация, год постройки) и определяет их математическую связь с итоговой ценой. В процессе анализа может выясниться, что жилая площадь прямо пропорциональна стоимости (линейная зависимость), а возраст здания никак на нее не влияет.
Задачи классификации строятся иначе: здесь модель пытается присвоить объекту дискретную категориальную метку (класс).
Примеры классификации включают в себя:
- Базовое разделение писем на «спам» и «не спам» на основе их содержимого или отправителя.
- Многоклассовую сортировку, используемую в почтовом сервисе Gmail, где входящие распределяются по папкам «Основное», «Соцсети», «Промоакции» и «Обновления».
📏 Линейная и логистическая регрессии: фундамент ИИ 3:01
Подавляющее большинство алгоритмов обучения с учителем пытается найти математическую функцию, которая связывает входные переменные с выходными. Родоначальником этих методов выступает линейная регрессия. В простейшем виде она ищет линейную связь между двумя параметрами, нанизывая на данные прямую линию. Это делается путем минимизации суммы квадратов расстояний от реальных точек датасета до линии регрессии, что сокращает ошибку предсказания на новых данных.
[Image of linear regression line]
В качестве примера линейной зависимости приводится связь между ростом человека и размером его обуви. По расчетам Тима, модель может показать, что увеличение размера обуви на одну единицу означает, что человек в среднем будет на 2 дюйма выше. Модель легко усложнить, добавив многомерные данные — пол, возраст или этническую принадлежность. Дата-сайентист подчеркивает: даже самые сложные алгоритмы, включая современные нейросети, концептуально являются лишь развитием этой базовой идеи.
Логистическая регрессия — это ближайший родственник линейной, но адаптированный под задачи классификации. Вместо проведения прямой линии через числовые показатели, алгоритм подгоняет под данные так называемую сигмоидную функцию.
Особенности логистической регрессии:
- Используется для предсказания категориального выхода на основе числовых или текстовых признаков.
- Математическое уравнение выдает не абстрактное число, а конкретную вероятность попадания объекта в определенный класс.
- Например, модель может рассчитать, что вероятность того, что взрослый человек ростом 180 см является мужчиной, составляет 80%.
👥 Алгоритм K-ближайших соседей (KNN): сила простоты 4:47
Алгоритм K-ближайших соседей (KNN) выделяется своей интуитивностью и может применяться как для классификации, так и для регрессии. Он относится к категории непараметрических алгоритмов — это означает, что модель не пытается вычислять сложные уравнения и подбирать коэффициенты. Логика KNN проста: для любого нового объекта прогноз строится на основе усреднения показателей его ближайшего окружения. Несмотря на кажущуюся примитивность, инструмент демонстрирует высокую эффективность, когда связи в данных запутаны и нелинейны.
В задаче классификации пол человека может определяться по большинству голосов пяти его ближайших «соседей», имеющих схожий вес и рост. В задаче регрессии вес человека можно предсказать как среднее арифметическое веса трех людей, максимально близких к нему по росту и обхвату грудной клетки.
Переменная K называется гиперпараметром алгоритма, и ее правильный выбор, по мнению Тима, сродни искусству. Если задать слишком маленькое значение (K=1 или 2), возникнет оверфиттинг (переобучение) — модель идеально запомнит обучающую выборку, но провалится на реальных тестах. Чрезмерно большое K (например, 1000) приведет к недообучению (underfitting) и потере точности. Оптимальный баланс ищется экспериментально, например, с помощью кросс-валидации.
🛡️ Метод опорных векторов (SVM) и «ядерный трюк» 6:04
Изначально созданный для классификации, метод опорных векторов (SVM) успешно справляется и с регрессионными задачами. Его ключевая суть — провести между группами данных такую разделяющую границу (decision boundary), которая максимально отдалила бы их друг от друга. Любой новый объект будет классифицирован в зависимости от того, по какую сторону от этой черты он окажется.
Если разделяются кошки и слоны по двум признакам — весу и длине носа, то в простейшем случае границей станет обычная прямая линия. Алгоритм SVM ищет линию с максимальным зазором (margin), то есть максимизирует свободное пространство между классами. Это делает модель устойчивой к шумам и аномалиям в данных. Точки, которые лежат на самой кромке этого зазора, называются опорными векторами. Для работы алгоритма достаточно знать только их, что делает SVM крайне экономным с точки зрения оперативной памяти.
В многомерных пространствах, где признаков очень много, разделяющая линия превращается в гиперплоскость. Сильной стороной SVM является использование ядерных функций (kernel functions) и так называемого «ядерного трюка». Это позволяет неявно преобразовывать исходные параметры в новые, более сложные высокоразмерные признаки для построения нелинейных границ. В качестве примера Тим приводит неявное вычисление индекса массы тела (ИМТ) через деление веса на квадрат роста. Такое внутреннее конструирование признаков называется имплицитным фича-инжинирингом. На практике чаще всего применяются линейные, полиномиальные, RBF (радиально-базисные) и сигмоидные ядра.
🃏 Наивный байесовский классификатор: скорость и независимость 7:47
Этот относительно простой классификатор получил свое название благодаря знаменитой теореме Байеса. Лучше всего принцип работы алгоритма раскрывается на примере спам-фильтров ИТ-систем.
Схема обучения наивного Байеса выглядит следующим образом:
- На этапе тренировки алгоритму скармливают массив размеченных писем (спам и не спам).
- Модель подсчитывает частоту появления каждого слова в обеих категориях, вычисляя их вероятности.
- При поступлении нового письма алгоритм перемножает вероятности всех содержащихся в нем слов на основе теоремы Байеса и выносит вердикт.
Слово «наивный» добавлено к названию из-за одного ложного допущения: алгоритм считает, что вероятности появления разных слов в тексте абсолютно независимы друг от друга. В реальности это не так, но подобное упрощение делает метод невероятно быстрым в вычислениях. Он до сих пор остается хорошим и эффективным решением для текстовых задач.
🌳 Деревья решений и ансамбли: от одного дерева к «случайному лесу» 8:38
Дерево решений представляет собой древовидную структуру из последовательных «да/нет» вопросов, которые разбивают датасет по разным измерениям. Тим демонстрирует это на примере классификации пациентов с высоким и низким риском сердечного приступа. Главная задача алгоритма — сформировать на самом низу структуры максимально «чистые» листовые узлы (leaf nodes), где количество ошибочно классифицированных точек будет сведено к минимуму.
Хотя одиночное дерево выглядит просто, объединение множества таких моделей порождает мощные ансамблевые алгоритмы. Один из подходов к созданию ансамблей — бэггинг (bagging), когда несколько независимых моделей обучаются на случайных подмножествах данных методом бутстрэпа.
Ярким воплощением этой идеи стал алгоритм «Случайный лес» (Random Forest). В нем множество деревьев принимают решение путем мажоритарного голосования (большинством голосов). Эффект случайности достигается за счет намеренного исключения части признаков при построении каждого дерева, что убирает корреляцию между ними, предотвращает переобучение и делает систему стабильной.
Другой тип ансамблей — бустинг (boosting). Здесь деревья запускаются не параллельно, а строго последовательно. Каждая следующая модель концентрируется на исправлении ошибок, допущенных ее предшественницей. Цепочка из слабых учеников превращается в один сильный алгоритм. По наблюдениям автора, бустинг часто достигает более высокой точности, чем Random Forest, однако он сильнее склонен к переобучению, а его последовательная природа замедляет процесс обучения. К популярным реализациям относятся AdaBoost, Gradient Boosting и легендарный XGBoost.
🧠 Нейронные сети и глубокое обучение: король современного ИИ 10:22
Чтобы понять логику работы искусственных нейросетей, Тим предлагает вернуться к логистической регрессии и представить задачу распознавания рукописных цифр от 0 до 9 по интенсивности пикселей изображения. Обычная регрессия здесь пасует: цифра «1», написанная разными людьми или даже одним человеком несколько раз, каждый раз активирует совершенно разные пиксели. При этом у всех единиц есть общие концептуальные черты — доминирующая вертикальная линия, отсутствие пересечений или круглых форм, как у восьмерки или девятки.
Компьютер изначально ничего не знает о существовании таких понятий, как «вертикальная линия», оперируя лишь яркостью точек. Человек мог бы вручную прописать эти признаки в коде, но нейронные сети спроектированы так, чтобы осуществлять этот фича-инжиниринг автоматически и скрытно от людей. Это достигается за счет добавления слоев неизвестных (скрытых) переменных между входом и выходом. Простейший однослойный перцептрон представляет собой обычную многофакторную регрессию. Но если добавить промежуточный скрытый слой (hidden layer), его переменные начинают отвечать за обнаружение скрытых закономерностей.
В упрощенном виде это работает так: если несколько пикселей загораются рядом по вертикали, скрытый слой интерпретирует это как признак «вертикальная линия» и передает информацию дальше для предсказания итоговой цифры. Люди не указывают сети, что искать, она сама настраивается на результат в ходе обучения. Когда один скрытый слой начинает предсказывать параметры для следующего скрытого слоя, а тот для следующего — рождается глубокое обучение (deep learning). На глубоких уровнях формируются сложнейшие абстрактные образы, способные распознавать человеческие лица, хотя внутреннее устройство этих признаков зачастую остается для разработчиков «черным ящиком».
🌀 Кластеризация методом K-средних (K-Means) 12:43
Переходя к обучению без учителя, Тим призывает не путать кластеризацию с классификацией. Если в классификации категории известны заранее и подкреплены цветовыми метками в обучающей выборке, то в кластеризации меток нет вовсе — алгоритм ищет естественные сгустки данных, опираясь исключительно на геометрию их распределения. На двухмерном графике человеческий глаз без труда заметит три явные группы точек, но в реальных массивах границы могут быть размытыми, а число кластеров — неизвестным.
Самым популярным инструментом здесь является метод K-средних (K-Means). Буква K здесь, как и в KNN, означает гиперпараметр, но в данном случае это количество кластеров, которое требуется найти. Их подбор — это экспериментальный процесс, требующий понимания предметной области.
Алгоритм K-Means выполняет следующие шаги:
- В случайных местах пространства данных расставляются K центров будущих кластеров.
- Все точки датасета привязываются к тому центру, который находится к ним ближе всего.
- Координаты центров кластеров пересчитываются — они сдвигаются в геометрический центр только что сформированных групп точек.
- Точки снова перераспределяются между обновленными центрами, после чего координаты центров опять корректируются.
- Этот циклический процесс повторяется до тех пор, пока положения центров полностью не стабилизируются.
Существуют и другие алгоритмы кластеризации, где число групп указывать заранее не нужно (например, иерархическая кластеризация или DBSCAN), которые умеют выявлять кластеры произвольной сложной формы, но в рамках данного обзора они детально не рассматриваются.
📉 Снижение размерности и метод главных компонент (PCA) 14:37
Заключительный класс алгоритмов направлен на снижение размерности данных (dimensionality reduction). Их цель — сократить количество избыточных признаков в датасете, сохранив при этом максимум полезной информации. Обычно это реализуется за счет поиска корреляций между существующими параметрами. Тим приводит наглядное сравнение: человеку не нужен снимок в ультравысоком разрешении, чтобы просто узнать очертания самолета на фото — избыточные пиксели можно безболезненно сократить. Снижение размерности часто служит этапом предобработки, делая основные алгоритмы обучения более быстрыми и устойчивыми к шумам.
Главным представителем этого семейства является метод главных компонент (PCA). Предположим, стоит задача предсказать вид рыбы по ее характеристикам: длине, высоте, цвету и количеству зубов. При анализе корреляций выясняется, что высота и длина рыбы жестко связаны между собой. Оставление обоих признаков перегрузит модель шумом. Разумнее объединить их в один общий признак — «форма».
Алгоритм PCA находит новые математические оси, вдоль которых данные имеют максимальный разброс (дисперсию). В примере с рыбами ось наибольшего разброса пойдет по диагонали — она становится первой главной компонентой (PC1), заменяя собой длину и высоту. Вторая главная компонента (PC2) строится строго перпендикулярно первой и описывает лишь ничтожную долю оставшихся изменений, поэтому ее можно безболезненно удалить из датасета. В гигантских базах данных PCA ранжирует все признаки по уровню сохраняемой дисперсии, отсекая все малозначимые компоненты, что позволяет радикально сжимать объемы информации без потери качества предсказаний.
В завершение обзора Тим рекомендует всем, кто чувствует себя перегруженным обилием информации, воспользоваться официальной интерактивной шпаргалкой (cheat sheet) от библиотеки Scikit-learn, которая помогает быстро сориентироваться и выбрать идеальный ИТ-инструмент под конкретный тип данных.