49 рыб попадают в компьютер как две именованные переменные — длина и масса, а фотография — как 784 безымянных пикселя. Сначала мы положим два набора данных рядом и увидим, как «поиск правила по одной переменной» работает для рыб, но на фотографиях выбирает случайную клетку. Затем на рыбах разберём базовые инструменты классификации (правило, прямая перцептрона·SVM, расстояние k-NN и стандартизация) и перейдём к тому, почему фотографиям нужны признаки, находящие паттерны.
49 рыб попадают в компьютер как два числа — длина и масса, а фотография — как тысячи пиксельных чисел. И то и другое — числа. Почему же классифицировать фотографии намного труднее?
Нужно разделить 49 рыб, привезённых с рынка (35 лещей и 14 корюшек). Компьютеру мы можем дать длину, измеренную линейкой, и массу, измеренную на весах.
| Количество | Диапазон длины | Диапазон массы | |
|---|---|---|---|
| Лещ | 35 | 25.4 ~ 41.0 cm | 242 ~ 1,000 g |
| Корюшка | 14 | 9.8 ~ 15.0 cm | 6.7 ~ 19.9 g |
Машинное обучение на данных о рыбах (дерево решений, k-NN, регрессия, логистическая регрессия, кросс-валидация и др.) подробно разобрано в курсе «Машинное обучение на Fish Market Data — шаг за шагом» (Fish Market Data로 쉽게 따라하는 머신러닝). В этом выпуске мы коснёмся только «того, что нужно для перехода к классификации изображений».
А что будет, если сделать то же самое с фотографиями? Даже если уменьшить фото чихуахуа и маффина до крошечного чёрно-белого квадрата 28 на 28 клеток, на одно фото придётся 784 числа. Для цветного 224 × 224 — 150,528.
Есть отличие важнее, чем количество чисел. «Длина 25.4 см» имеет смысл сама по себе, а «яркость 187 в 412-й клетке» сама по себе ничего не значит. Этот выпуск сначала показывает именно эту разницу — между переменной (клеткой с именем и смыслом) и признаком (паттерном, который создают несколько клеток вместе), затем на рыбах разбирает базовые инструменты классификации (правило, прямая, расстояние) и переходит к тому, почему для фотографий нужен другой подход.
Данные о рыбах — реальные измерения (из датасета Kaggle Fish Market отобраны только лещи и корюшки [R1]). Лещ высокий и крупный, корюшка тонкая и маленькая, и эта разница прямо отражается в числах длины и массы. Поэтому рыбы — это простая классификация, и если положить её рядом с фотографиями, становится ясно, «что делает классификацию фотографий трудной».
Сначала сравним выводы бок о бок. Для рыб одной переменной хватает, чтобы составить правило в одну строку, а на фотографиях тот же метод выбирает случайную клетку. Смысл в фотографии возникает не в клетке, а в расположении многих клеток, то есть в признаке.
| Переменная (variable) | Признак (feature) | |
|---|---|---|
| Смысл | Измеренное значение с именем и единицей измерения | Число, кратко описывающее паттерн, который создают несколько значений вместе |
| Пример | длина 25.4 см, масса 242 г | «три тёмные точки треугольником», «острая граница сверху» |
| Кто создаёт | Человек решает, что измерять, и измеряет | Фильтр или нейросеть вычисляет либо выучивает его из исходных данных (пикселей) |
| Смысл одной клетки | Есть | В одной клетке (пикселе) исходных данных его нет. Он в расположении |
| Подходящие методы | Правила (дерево решений), линейные модели, k-NN | Модели, ищущие паттерны, например свёрточная нейросеть (CNN) |
| Объяснимость | Легко: «потому что масса больше 131 г» | Трудно: нужно отдельно разбираться, на что смотрит выученный фильтр |
В машинном обучении и то и другое часто называют «признаками». В этой серии, чтобы чётко различать их, мы называем измеренные значения с именами, данными человеком, переменными, а паттерны, найденные в расположении исходных данных, — признаками.
Слева (на мобильном — сверху) рыбы, справа (снизу) фотографии. Сначала для обоих наборов найдём правило вида «если переменная > порог, то этот класс». Для рыб на этом всё, а на фотографиях правило выбирает случайную клетку. Поэтому для фотографий мы смотрим на паттерны в карте признаков, построенной фильтром. Правила и паттерны ищутся на 80 «обучающих» фото, а проверяются на 80 «новых фото», не использованных при обучении.
У каждой переменной есть имя и смысл, поэтому хватает одного правила, понятного человеку.
① Тем же способом ищем правило «пиксель > порог» по всем 784 клеткам.
② Строим фильтром карты признаков и кратко описываем паттерн по всей карте.
Цвет точек и рыбок: ● лещ·чихуахуа ● корюшка·маффин. Два фильтра справа в ② (поиск тёмных мест и поиск границ) выбраны человеком для этого сравнения. CNN выучивает из данных десятки–сотни таких фильтров и комбинирует их (4-2·4-3). «Новые фото» получены из тех же 12 снимков, но с другим сдвигом и яркостью, чем обучающие, поэтому такой тест проще, чем проверка на совсем других фотографиях. На реальных фото двух паттернов вряд ли хватит для 100%.
Клетки данных о рыбах — это переменные с именем и смыслом. В одной переменной «длина» уже заключена разница между лещом и корюшкой, поэтому одно правило «если длина > порога, то лещ» верно классифицирует все 49 рыб. Такое правило человек может прочитать и объяснить, и это область, где сильны модели на правилах вроде дерева решений. Отчасти это заслуга человека, который удачно выбрал, «что измерять».
Клетки фотографии (пиксели) формально тоже переменные, но у них нет ни имени, ни смысла. Если искать правило тем же способом, компьютер выбирает среди 784 клеток ту, что случайно подошла лучше всего, — часто клетку фона у края, — и на незнакомых фото точность падает. Смысл в фотографии возникает не в одной клетке, а в паттерне, который создают несколько клеток вместе (сколько тёмных точек, где и какой формы). Поэтому если построить фильтром карту признаков и кратко описать паттерн по всей карте, точность хорошая и на новых фото.
Итак, в обоих случаях решение «принимается по признакам». Разница в другом: подготовил ли признаки человек, дав им имена (переменная → правило), или их нужно найти в расположении многих клеток (пиксели → паттерн). Для табличных данных тоже используют модели не на правилах, например логистическую регрессию, а к признакам фотографий можно применять правила, так что это противопоставление стоит понимать как тенденцию: «что лучше работает на каких данных».
Тогда, может, использовать все 784 клетки? Чем больше клеток, тем больше способов разделить данные, но большинство клеток бессмысленны, и проблема не исчезает. В 4-2 мы познакомимся с фильтрами, ищущими паттерны, а в 4-3 взглянем на эту проблему как на «разделение плоскостью».
Нажмите «Найти правило автоматически» слева для рыб и «Найти пиксельное правило автоматически» справа для фото. Правило для рыб верно классифицирует все 49 рыб и понятно человеку. Правило для фото выбирает из 784 клеток клетку фона в углу снимка, и на незнакомых фото точность падает. Чтобы разделить фотографии, нужно, как в ② справа, построить фильтром карты признаков и описать паттерн. Это противопоставление — отправная точка всей серии.
Одна строка — один образец, числовые столбцы — признаки, столбец ответа — целевое значение. Таблица рыб и таблица фото отличаются лишь числом столбцов и смыслом одного столбца.
Данные, на которых учится модель классификации, — это всегда таблица одной и той же формы. Одна строка — один образец, и в каждой строке несколько числовых столбцов — признаков (feature) — и один столбец целевого значения (метка, правильный ответ). В классификации рыб одна строка — одна рыба, признаки — 2 столбца, длина и масса, а целевое значение — «лещ» или «корюшка». С фотографиями то же самое: одна строка — одно фото, признаки — пиксельные числа (подробно в 4-2), выстроенные в одну строку, а целевое значение — «чихуахуа» или «маффин».
Проще говоряэто как бланк медосмотра. Один человек — одна строка, рост·масса тела·давление — столбцы признаков, а последний столбец «нужно ли повторное обследование» — целевое значение. Таблица рыб — короткий бланк из 2 пунктов, таблица фото — очень длинный бланк из 784 пунктов. Разница в том, есть ли у каждого пункта имя и смысл. «Длина 25.4 см» имеет смысл сама по себе, а «яркость 187 в 412-й клетке» сама по себе ничего не значит.
Слева 6 из 49 рыб, справа 6 из 80 фото чихуахуа и маффинов. Фото уменьшены до 28 × 28 в оттенках серого и вытянуты в одну строку. Нажмите на строку правой таблицы, и ниже будет видно, как это фото превращается в одну строку.
Данные о рыбах: длина и масса 35 лещей (Bream) и 14 корюшек (Smelt) из датасета Kaggle Fish Market. Значения взяты без изменений из примеров кода к книге Пак Хэсона «Машинное и глубокое обучение самостоятельно» (혼자 공부하는 머신러닝+딥러닝) (лицензия MIT). Данные фото: 12 клеток изображения из выпуска 4-4 (6 чихуахуа, 6 маффинов) уменьшены до 28 × 28, и для каждого снимка со сдвигом на ±4 клетки и яркостью 70~130% сделано по 40 фото на класс.
Q1. Что в таблице для классификации фото является целевым значением (меткой)?
Q2. Сколько столбцов признаков получится, если вытянуть цветное фото 32 × 32 в одну строку?
Q3. Для рыб правило строится по одной переменной, а правило по одному пикселю плохо работает на новых фото. Какова главная причина?
Целевое значение (target) — это ответ, который нужно угадать, а приписывание ответов человеком — это разметка. Нажав на строку таблицы фото, вы увидите, как матрица 28 × 28 приписывается строка за строкой с первой и становится одной строкой из 784 столбцов (выпрямление). По форме она становится такой же, как таблица рыб, но имя и смысл каждого столбца исчезают.
Когда у переменных есть смысл, граница проста. Посмотрим, какие линии на одних и тех же рыбах проводят перцептрон, сдвигающий линию после каждой ошибки, и SVM, прокладывающий самую широкую дорогу.
Одна точка — одна рыба. Фиолетовая линия — текущая граница, выше и правее неё — «лещ». Перцептрон просматривает рыб по одной и сдвигает линию только при ошибке. Красный кружок — рыба, на которой только что ошибся, белый — рыба, угаданная верно.
Прямых, разделяющих две группы, бесконечно много. SVM выбирает из них ту, у которой пустая дорога между группами (зазор) самая широкая. Фиолетовая сплошная линия — граница, пунктирные — края дороги. Поставьте галочку, чтобы сравнить с линией, на которой остановился перцептрон (зелёный пунктир).
У перцептрона и линейного SVM одинаковая форма границы (одна прямая, w·z + b = 0). Перцептрон останавливается, как только всё угадано, поэтому линия может пройти вплотную к одной из групп, а SVM выбирает линию, максимально удалённую от обеих групп (максимальный зазор). В коде 1 ширина зазора SVM составила 1.233 в стандартизированных единицах, а границу задали два опорных вектора: самая крупная корюшка (15.0 см, 19.9 г) и самый маленький лещ (25.4 см, 242 г).
Запомните и порядок появления: сначала перцептрон (1958), потом SVM (1990-е) [R3] [R4]. Оба метода проводят одну прямую в исходных координатах, поэтому их достаточно для таблицы рыб, где у столбцов есть смысл, но в пиксельных координатах они упираются в стену (4-3).
Машинное обучение на данных о рыбах (дерево решений, k-NN, регрессия, логистическая регрессия, кросс-валидация и др.) подробно разобрано в курсе «Машинное обучение на Fish Market Data — шаг за шагом» (Fish Market Data로 쉽게 따라하는 머신러닝). В этом выпуске мы коснёмся только «того, что нужно для перехода к классификации изображений».
Перцептрон умножает длину и массу на веса, складывает их и отвечает «лещ», если сумма больше 0. Обучение — это повторение шага «немного сдвинуть линию в сторону ошибочной рыбы». Если включить галочку на рисунке SVM, можно наложить линию, на которой остановился перцептрон, на линию SVM. Эта взвешенная сумма (w·x + b) снова появится в свёртке в 4-2 и в нейросети в 4-3.
Новая рыба (25 см, 150 г) — лещ? Метод, который спрашивает ближайших соседей, даёт противоположный ответ в зависимости от того, как измерять «близость».
Треугольник — только что пойманная рыба (начальные значения: длина 25 см, масса 150 г). Метод k ближайших соседей проводит голосование по ответам 5 ближайших рыб. Переключайтесь между «исходными единицами» и «стандартизацией» и смотрите, как меняются соседи.
Если измерять расстояние в исходных единицах, разница в длине 10 см и разница в массе 10 г входят в него с одинаковым весом. Но массы различаются на сотни граммов, поэтому расстояние почти целиком определяет масса. В итоге даже новая рыба длиной 25 см из-за массы 150 г оказывается «близкой» к корюшкам (до 20 г), и 4 из 5 соседей — корюшки. После стандартизации оба признака измеряются одной меркой, и все 5 соседей становятся лещами (совпадает с результатом кода 1).
Правило (раздел 3) смотрит только на одну переменную, поэтому от единиц не зависит. А методам, которые смешивают несколько признаков, вычисляя расстояние или взвешенную сумму, — перцептрону, SVM, k-NN — единицы нужно выравнивать. В фотографиях все клетки лежат в диапазоне 0~255, так что эта проблема невелика, зато возникает другая (раздел 7).
Метод k ближайших соседей (k-NN) проводит голосование по ответам k образцов, ближайших к новому [R5]. Он прост, но всё решает «расстояние», и если переменная с большими числами, как масса (г), забирает расстояние себе, метод выбирает не тех соседей. Пиксели фото все в диапазоне 0~255, так что проблема единиц невелика, но есть проблема серьёзнее: «разница чисел в одних и тех же позициях» не отражает смысла (4-2, раздел 3).
Как далеко можно зайти, если использовать клетки фото как переменные рыб? Результаты расходятся для пар разной формы и похожих пар.
| Пара цифр | Пиксель, выбранный правилом | Правило одного пикселя (тест) | Взвешенная сумма 64 клеток (тест) |
|---|---|---|---|
| 0 против 1 | (строка 5, столбец 5) | 98.3% | 100.0% |
| 3 против 8 | (строка 6, столбец 4) | 86.0% | 98.3% |
| 4 против 9 | (строка 5, столбец 2) | 93.9% | 98.3% |
Мы представили рукописные цифры 8 × 8 как таблицу из 64 столбцов и применили правило «переменная > порог», как для рыб. Совсем непохожие 0 и 1 почти полностью разделяются даже по одному центральному пикселю (если центр пуст — это 0). Но для похожих по форме пар вроде 3 и 8 правило одного пикселя даёт лишь 86.0%, а взвешенная сумма всех 64 клеток — 98.3%.
Чем сильнее сходство формы, тем больше нужно смотреть не на одну клетку, а на форму, которую создают несколько клеток вместе. Рукописные цифры — маленькие аккуратно выровненные изображения, поэтому для них хватает взвешенной суммы, но на реальных фото, где положение, освещение и фон каждый раз разные, и взвешенная сумма не справляется (4-2, раздел 3; 4-3, раздел 2). Поэтому классификации фото нужен шаг поиска паттернов — извлечение признаков.
Итак, для табличных данных, где переменные осмысленны, достаточно простых инструментов — правил, прямых, расстояний. В фотографиях у отдельной клетки нет смысла, поэтому нужны фильтры, ищущие узоры в соседних клетках, и слои, складывающие эти узоры в формы. 4-2 расскажет, как фото становится матрицей чисел и что такое фильтры, 4-3 — зачем складывать слои, а 4-4 — какие трудности остаются и после этого.
Оба кода используют только библиотеки, предустановленные в Colab, и встроенные данные. Нажмите «Скачать ноутбук (.ipynb)» и откройте его в Colab через Файл → Загрузить блокнот или скопируйте код и вставьте в ячейку нового ноутбука.
Вычисляет одно правило дерева решений, перцептрон и линейный SVM в стандартизированных координатах, а также предсказание k-NN для новой рыбы (25 см, 150 г) до и после стандартизации. Чтобы подставить свои данные, замените четыре списка в начале своими измерениями.
Представляет рукописные цифры 8 × 8 как таблицу из 64 столбцов и сравнивает правило одного пикселя со взвешенной суммой 64 клеток (логистическая регрессия) для пар 0 и 1, 3 и 8, 4 и 9. Чтобы подставить свои данные, измените пару цифр в compare(a, b).
Промпты для вставки в ИИ-ассистента вроде ChatGPT, Qwen или Claude. При нажатии «Копировать» выбранный код добавляется после промпта. Замените текст в 〔 〕 на описание своей ситуации.
Ответ ИИ — лишь отправная точка. Предложенные статьи, числа и функции библиотек обязательно проверяйте по первоисточникам и официальной документации. Если вы пользовались помощью ИИ в конкурсной работе или статье, укажите факт и объём использования по правилам организаторов или журнала.
Тот же словарь, что и у жёлтых пунктирных подчёркиваний в тексте. Во всей серии используются одни и те же термины. Нажмите на название раздела, чтобы перейти к месту первого упоминания.
Аналогия — первый шаг к пониманию, но и семя заблуждения. Для аналогий с глазом и мозгом человека указана степень соответствия. Прямое есть данные, что там действительно происходит то же самое · Частичное похожи лишь некоторые свойства · Нет соответствие неизвестно
| Понятие | Бытовая аналогия | Аналогия с глазом·мозгом | Где аналогия не работает |
|---|---|---|---|
| Дерево решений | Игра «20 вопросов» | Нет | Настоящее дерево решений выбирает пороги вопросов, вычисляя их по данным. Оно не придумывает «правдоподобные вопросы», как человек |
| Перцептрон | Тетрадь работы над ошибками, где пересматривают только задачи с ошибками | Частичное возник из идеи, что нервная клетка собирает входы и посылает сигнал, когда превышен порог | Настоящие нервные клетки работают с меняющимися во времени электрическими сигналами, а их правила обучения гораздо сложнее |
| Зазор SVM | Проложить самую широкую дорогу между двумя сторонами | Нет | Ширина дороги измеряется в «стандартизированных единицах». Если сменить единицы, изменится и положение самой широкой дороги |
| k-NN | Переехав, расспросить пять ближайших соседей | Нет | Соседей измеряют не «на сколько метров они далеко», а «на сколько граммов и сантиметров отличаются», поэтому без общей мерки дальний дом можно принять за ближний |
| Стандартизация | Сравнивать рост и массу тела, переведя их в «какое примерно место в классе» | Нет | Место в рейтинге сохраняет только порядок, а стандартизация сохраняет, насколько значение отстоит от среднего (интервалы) |
E-1 Об авторе · E-2 Научные источники · E-3 Источники иллюстраций·данных
Рекомендации для преподавателей, наставников OJT и репетиторов. Время указано ориентировочно — подстройте его под реальное занятие.
| Аудитория | Студенты и работающие специалисты, впервые изучающие машинное обучение. Умеют работать с таблицами Excel, но с моделями сталкиваются впервые |
|---|---|
| Необходимые знания | Среднее и стандартное отклонение, уравнение прямой на координатной плоскости. Желательно прочитать про перцептрон в 3-2 |
| Цели обучения | ① Объяснить разницу между переменной и признаком на примере рыб и фотографий ② Описать данные через образцы, признаки и целевые значения и рассказать, чем различаются способы, которыми правило, перцептрон, SVM и k-NN задают границу ③ Объяснить, когда нужна стандартизация и почему нельзя использовать отдельный пиксель как переменную |
| Ориентировочное время | Чтение 35~45 мин · демонстрация практики 20 мин · практика в Colab 25 мин (код 1 — 15 мин, код 2 — 10 мин) |
Введение 5 мин (раздел 1) → раздел 2, переменная vs признак, 15 мин → раздел 3, устройство таблицы, 5 мин → раздел 4, перцептрон, 10 мин → раздел 5, k-NN, 5 мин → раздел 6, мостик дальше, 5 мин → «Проверь себя» 5 мин.
Перерисовать разделы 1·2 на таблице данных своей компании — 20 мин → сравнить правило из раздела 3 и SVM из раздела 5 — 20 мин → найти ловушку стандартизации из раздела 6 (проверить единицы в своих данных) — 20 мин → запустить код 1 на своих данных — 30 мин.
Начинающим — только разделы 1·2·3·6. Продолжающие один раз вручную считают формулу обновления из раздела 4 и объясняют, почему опорных векторов SVM в коде 1 ровно два.
| Раздел | Вопрос, на котором стоит остановиться | Совет по работе с интерактивом |
|---|---|---|
| 1 Задача | «Чем отличаются длина 25.4 см и значение 187 в 412-й клетке?» | Сопоставьте таблицу рыб и количество чисел в фото |
| 2 Переменная vs признак | «Связана ли клетка, выбранная пиксельным правилом, с чихуахуа?» | Нажмите оба «Найти … автоматически» по очереди |
| 3 Признаки·метки | «Где в этой таблице столбец с ответом?» | Нажмите на строку фото и посмотрите на вытянутую строку |
| 4 Правило и прямая | «Почему линия не сдвигается, когда рыба угадана верно?» | Кнопкой «По одной» остановитесь на красном кружке (ошибка), а на рисунке SVM наложите линию перцептрона |
| 5 Стандартизация | «Почему соседи новой рыбы — корюшки?» | Переключите исходные единицы → стандартизация и подвигайте ползунок массы |
| 6 Пиксель — переменная? | «Почему для 0 и 1 работает, а для 3 и 8 нет?» | Сравните два столбца таблицы результатов кода 2 |
| Заблуждение | Верное объяснение | Что показать |
|---|---|---|
| Перцептрон появился, потому что SVM не справлялся | Наоборот: SVM (1990-е) появился после перцептрона (1958) | Объяснение в разделе 5 |
| Всё, что находит веса, — это перцептрон | Линейный SVM и логистическая регрессия тоже находят веса. Разница — в критерии выбора границы | Сравнение формул в разделах 4·5 |
| Если признаков много, стандартизация не нужна | У методов на расстояниях и взвешенных суммах результат переворачивается при разных единицах | (25 см, 150 г) из раздела 6 |
| Модели на правилах устарели | На табличных данных с осмысленными признаками они сильны и сегодня, и их легко объяснить | Правило в одну строку из раздела 3 |
| Фото — тоже таблица, значит, сработает тот же метод | Форма та же, но у отдельной клетки нет смысла, поэтому нужен шаг поиска паттернов | Раздел 7 и код 2 |
49 образцов (строк), 2 признака (длина·масса), целевое значение — один столбец: лещ 1 / корюшка 0.
w ← w + 0.5 × (+1) × (0.2, −0.1) = w + (0.1, −0.05). b увеличится на 0.5.
Да. У обоих это прямая w·z + b = 0. SVM выбирает из таких прямых ту, у которой зазор шире всего.
Потому что расстояние почти целиком определяется разницей в массе. По числам 150 г ближе к корюшкам (до 20 г), чем к лещам (от 242 г).
Только число порога увеличится в 10 раз, а угадываемые рыбы останутся теми же. Правило, смотрящее на одну переменную, не зависит от единиц.
Уберите StandardScaler из кода 1, обучите SVM, посмотрите, как изменятся граница и опорные векторы, и объясните это в двух предложениях, связав с разделом 6.
В коде 2 увеличьте глубину дерева решений до 1, 3, 10, сведите в таблицу точность на обучающей и тестовой выборках для пары 3 и 8 и объясните, как меняется разрыв между ними с ростом глубины.
| Начинающим | Формулы разделов 4·5 можно пропустить без потери нити. Главное — как следует выполнить практику разделов 3 и 6 |
|---|---|
| Углублённо | Пусть слушатели сравнят логистическую регрессию в такой же таблице, как в разделах 4·5, и расскажут, чем классификатор, выдающий вероятности, отличается от классификатора, выдающего только границу |
| Что изучать дальше | Машинное обучение на Fish Market Data — шаг за шагом (Fish Market Data로 쉽게 따라하는 머신러닝) (всё машинное обучение на данных о рыбах) · Сансун Ан, конспект лекций «Наука о данных для бизнеса» (비즈니스를 위한 데이터 과학) |
| Материалы для преподавателя | Критерии оценки заданий «Проверь себя» и примеры ответов к заданиям — на странице ответов для преподавателей (4-1) |
Вы дочитали выпуск «4-1 Лещ vs корюшка» до конца. Обитатели лаборатории подводят итоги — каждый по одной фразе.