Вопрос или проблема
У меня есть набор данных, в котором я должен обнаружить аномалии. Сейчас я использую подмножество данных (назовем это подмножество 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). Этот подход кажется логичным, но есть несколько нюансов, которые требуют внимания.
Возможные риски и проблемы
-
Утечка данных: Один из главных рисков — утечка данных. Она возникает, когда информация из тестового набора влияет на процесс обучения, что приводит к переоценке эффективности модели. Убедитесь, что никакие данные из оставшейся части не используются ни в каком виде до обучения модели на наборе A.
-
Проблемы с несбалансированностью данных: Высокий показатель ROC-AUC (около 0.99) может указывать на дисбаланс в данных между аномалиями и неаномалиями. Проверьте распределение классов и убедитесь, что модель учитывает все категории.
-
Особенности DBSCAN: DBSCAN чувствителен к параметрам ‘eps’ и ‘min_samples’. Ваш выбор этих параметров для набора A может не соответствовать реальным данным в оставшейся части, что может привести к ненадежным меткам.
-
Недостаточное разнообразие данных: Если область набора A ограничена и не отражает всей вариативности данных, полученная модель может иметь проблемы с генерализацией.
Рекомендации
-
Создание контрольного набора: Создайте и храните контрольный набор, который не участвует в обучении ни на одном этапе, чтобы объективно оценить качество модели после её обучения.
-
Стратификация выборки: При разделении данных на обучение и тестирование используйте стратификацию по меткам, чтобы сбалансировать пропорции классов в разных наборах. Это может быть выполнено с использованием параметра
stratify
в функцииtrain_test_split
из библиотеки scikit-learn. -
Анализ результата: Используйте методики кросс-валидации, чтобы убедиться в устойчивости результатов. Дополнительно рассмотрите различные метрики для оценки модели, особенно когда данные несбалансированы.
-
Оптимизация параметров: Протестируйте различные параметры для DBSCAN на подмножестве и оцените их влияние на распределение меток. Это может потребовать возможностей параллельного вычисления или оптимизированных алгоритмов.
Подход в целом интересный, но требует тщательно продуманного подхода для исключения ошибок. Постоянно проверяйте и валидацию ваших шагов, чтобы убедиться в честности вашего решения.