Безопасно ли использовать метки, созданные с помощью модели без учителя, для обучения модели с учителем, используя те же данные?

Вопрос или проблема

У меня есть набор данных, в котором я должен обнаружить аномалии. Сейчас я использую подмножество данных (назовем это подмножество A) и применяю алгоритм DBSCAN для обнаружения аномалий в наборе A. Как только аномалии обнаружены, используя метки DBSCAN, я создаю переменную метки (аноминальность: 1, не-аноминальность: 0) в наборе данных A. Теперь я обучаю управляемый алгоритм на наборе данных A, чтобы предсказать аномалии, используя метку в качестве зависимой/целевой переменной, и, наконец, использую обученную управляемую модель для предсказания аномалий на остальной части данных (комплемент A).

Хотя это кажется мне разумным подходом, я просто интересуюсь, нет ли утечки данных на каком-либо этапе. Обратите внимание, что я использую один и тот же набор переменных/функций на обоих этапах (неконтролируемый и контролируемый). Причина публикации заключается в том, что когда я обучаю управляемую модель, я получаю очень высокий ROC-AUC балл, который составляет около 0.99XX, и это вызывает подозрения.

Обратите внимание, что я не могу использовать алгоритм DBSCAN для всего набора данных из-за вычислительных ограничений. Я не могу использовать управляемую модель, так как у меня нет меток.

Пожалуйста, не забудьте о стратификации при выборке данных для обучения. Вы должны упомянуть stratify = y в train_test_split.

Высокий ROC-AUC может указывать на несбалансированный набор данных – when-is-an-auc-score-misleadingly-high

Также посмотрите это – k-fold-cross-validation-auc-score-vs-test-auc-score

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

Однако 99+%-sh оценки часто скрывают проблемы в моделях. Чтобы исключить проблему утечки данных: прежде чем делать что-либо, начните с того, чтобы оставить набор для удержания, который не участвует ни в неконтролируемом обучении, ни в контролируемом, и оцените на нем.

Ответ или решение

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

Концепция обработки данных

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

Возможные риски и проблемы

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

  2. Проблемы с несбалансированностью данных: Высокий показатель ROC-AUC (около 0.99) может указывать на дисбаланс в данных между аномалиями и неаномалиями. Проверьте распределение классов и убедитесь, что модель учитывает все категории.

  3. Особенности DBSCAN: DBSCAN чувствителен к параметрам ‘eps’ и ‘min_samples’. Ваш выбор этих параметров для набора A может не соответствовать реальным данным в оставшейся части, что может привести к ненадежным меткам.

  4. Недостаточное разнообразие данных: Если область набора A ограничена и не отражает всей вариативности данных, полученная модель может иметь проблемы с генерализацией.

Рекомендации

  • Создание контрольного набора: Создайте и храните контрольный набор, который не участвует в обучении ни на одном этапе, чтобы объективно оценить качество модели после её обучения.

  • Стратификация выборки: При разделении данных на обучение и тестирование используйте стратификацию по меткам, чтобы сбалансировать пропорции классов в разных наборах. Это может быть выполнено с использованием параметра stratify в функции train_test_split из библиотеки scikit-learn.

  • Анализ результата: Используйте методики кросс-валидации, чтобы убедиться в устойчивости результатов. Дополнительно рассмотрите различные метрики для оценки модели, особенно когда данные несбалансированы.

  • Оптимизация параметров: Протестируйте различные параметры для DBSCAN на подмножестве и оцените их влияние на распределение меток. Это может потребовать возможностей параллельного вычисления или оптимизированных алгоритмов.

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

Оцените материал
Добавить комментарий

Капча загружается...