В классификации есть заранее определённая цель
Пусть у карточек записаны длина листа, его ширина и проверенная метка вида растения. Классификатор учится связывать признаки с этой меткой, чтобы затем предсказывать вид для новых наблюдений. Важно, чтобы целевой ответ был определён независимо от будущего предсказания. В Python признаки обычно представляют матрицей X, а метки отдельным массивом y. Строки должны соответствовать одним и тем же объектам в одинаковом порядке. Случайная перестановка только одного массива разрушает смысл обучающих примеров.
Кластеризация ищет сходство по выбранным признакам
Теперь уберём названия видов и попробуем сгруппировать карточки по измерениям. Алгоритм может объединить растения с похожей формой листа, даже если их виды различаются. Номер кластера обозначает найденную группу, а не ботаническую истину. Переименование группы ноль в группу один не меняет разбиение. Результат зависит от признаков, масштаба измерений и выбранного метода. Две красивые области на рисунке не доказывают, что в природе существуют ровно два нужных нам класса.
Отделите обучение от проверки
Для классификации часть наблюдений оставляют для независимой итоговой оценки. Если вычислить параметры масштабирования по всей таблице до разделения, сведения из проверочной части попадут в обучение. В scikit-learn преобразования, которые обучаются на данных, настраивают только по обучающей части; к проверочной применяют уже полученное преобразование. Pipeline помогает объединить подготовку признаков и модель в согласованную последовательность. Однако он не исправит ошибочный смысл столбца, например признак, который появляется лишь после того, как уже известен целевой ответ.
Выберите проверку под вопрос
У классификатора можно сопоставить предсказанные и известные ответы, отдельно изучить виды ошибок. Для кластеризации без разметки нужны другие вопросы: насколько устойчивы группы, чем они отличаются и полезны ли для исследования. Если позже появились экспертные метки, сравнение возможно, но номера кластеров нельзя механически считать номерами классов. В учебном отчёте полезно сохранить описание данных, порядок подготовки и ограничения вывода. Один удачный запуск показывает результат конкретного эксперимента, а не универсальное качество метода.
Попробуйте на практике
Спроектируйте два эксперимента с шестью вымышленными карточками растений, сначала на бумаге.
- Придумайте шесть пар длины и ширины листа в одинаковых единицах. Добавьте условные метки двух видов, причём хотя бы два разных вида сделайте похожими по размеру.
- Сформулируйте отдельные вопросы: предсказать условный вид по измерениям и найти группы карточек со сходными измерениями. Укажите, где потребуется y.
- Покажите, какие строки попадут в обучение и итоговую проверку классификатора. Для реального исследования такая маленькая выборка недостаточна; здесь проверяется только схема.
- Запишите порядок будущих действий на Python: разделение данных, обучение преобразования и модели, применение к проверочной части, сравнение с ответами.
- Для кластеризации скройте метки видов и сгруппируйте карточки по выбранному вами правилу сходства. Затем верните метки и опишите несовпадения без объявления их ошибкой природы.
Как проверить результат. Две постановки имеют разные цели и способы оценки. Подготовка классификатора не использует проверочные строки для обучения, а номера кластеров не выдаются за известные классы.
Частые вопросы
Кластеризация всегда нужна, когда отсутствуют метки?
Нет. Сначала нужен исследовательский вопрос и подходящие признаки. Отсутствие меток само по себе не делает любое разбиение полезным.
Можно ли сравнивать модели только по общей доле верных ответов?
Это может скрывать важные различия между ошибками и классами. Стоит изучать, какие объекты модель путает и насколько такие ошибки существенны для конкретной задачи.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.