Вопрос или проблема
У меня есть данные с двумя колонками, и обе они сильно коррелируют, например, если в колонке1 значение ABC, то колонка2 должно быть XYZ, т.е. ABC–>XYZ. Если в колонке2 будет что-то другое, это аномалия. Соответственно, существует тысячи комбинаций. Я уже пробовал кластеризацию KModes, где количество кластеров = уникальным значениям в колонке1. Однако каждый кластер не имеет равной плотности, поэтому некоторые плохие данные с высокой плотностью классифицируются как нормальные, а хорошие данные с низкой плотностью отмечаются как аномальные.
Я хочу иметь неуправляемый алгоритм, где я могу заставить его использовать колонку1 в качестве основного критерия для кластеризации. Тот, у кого наибольшая частота данных колонка2 для каждого уникального значения колонки1, является хорошими данными. Остальное – аномалия. Пожалуйста, подскажите, какой алгоритм будет лучшим и как подойти к этой проблеме.
Один из вариантов – подсчет паттернов. Затем определять менее часто встречающиеся паттерны как аномалии.
Подход с подсчетом детерминированный, в то время как кластеризация вероятностная. Это может решить вашу проблему. Если нет, это по крайней мере предоставит сводную статистику и базовую модель.
Вы можете создать карту (набор данных) нормальных комбинаций, а затем классифицировать новые образцы как аномальные, если они не найдены в наборе данных нормальных комбинаций. Вам не нужно использовать машинное обучение для вашей проблемы. Вы можете, но это не обязательно. Если вы настаиваете на использовании машинного обучения, вы можете построить регрессионную модель, которая предсказывает второе значение (XYZ) на основе первого значения (ABC), и если реальное второе значение не равно предсказанному значению, вы можете отметить его как аномальное. Снова, это не обязательно, поэтому я рекомендую просто использовать карту и простой скрипт.
Ваша проблема на самом деле является задачей регрессии, а не общей кластеризацией, вы ищете значения, которые далеки от линии регрессии, выбросы в смысле регрессии. Поэтому подгоните линию регрессии и фильтруйте значения с наибольшими остатками, которые являются вашими “плохими” значениями в смысле несоответствия корреляционной структуре, заданной вашими двумя переменными.
Ответ или решение
Обнаружение аномалий с использованием кластеризации высококоррелированных категориальных данных
Ваша задача заключается в выявлении аномалий в данных, где два столбца имеют четко установленную взаимосвязь. Например, если значение в столбце 1 равно "ABC", то значение в столбце 2 должно быть "XYZ". Все отклонения от этого соотношения можно считать аномалиями. Давайте обсудим, как можно подойти к этой проблеме, рассматривая различные методы и алгоритмы.
Понимание проблемы
Ваши данные имеют строгие правила, определяющие, какое значение в столбце 2 соответствует значению в столбце 1. Это создает четкую структуру, которую легче проверить, чем пытаться кластеризовать данные, поскольку подача данных в кластеризацию часто приводит к неравномерному распределению классов. Вы уже пробовали алгоритм KModes, но столкнулись с проблемой, когда плотные кластеры классифицируют плохие данные как нормальные и наоборот. Это может произойти из-за различий в плотности и гетерогенных данных.
Подход к решению
-
Создание отображения нормальных комбинаций: Один из простейших и наиболее эффективных способов решения вашей проблемы — создать словарь (или карту) нормальных комбинаций значений. Этот подход позволит вам быстро классифицировать новые образцы данных, проверяя их на наличие в предопределённом наборе нормальных комбинаций. Если образец не соответствует известным комбинациям, это служит сигналом о том, что он может быть аномальным.
-
Регрессионный анализ: Если вы все-таки хотите применить машинное обучение, регрессионный анализ будет хорошим вариантом. Вы можете использовать столбец 1 как независимую переменную и столбец 2 как зависимую, обучив модель для предсказания значений второго столбца на основании значений первого. Если предсказанное значение не соответствует фактическому значению, регистрируйте это как аномалию. Такой подход позволит вам четко выявить те случаи, когда данные не следуют вашим ожиданиям.
-
Частотный анализ: Вы также можете воспользоваться частотным анализом. Сначала определите частоту появления значений в столбце 2 для каждого уникального значения в столбце 1. Затем можно задать порог для классификации значений как аномальных в зависимости от их редкости. Чем реже значение, тем выше вероятность его аномальности.
-
Проблема скорелированности: Учтите, что ваша задача — больше регрессионная, нежели кластеризационная. Поэтому использование методов, которые учитывают корреляцию между переменными и помогают вычислить отклонения от ожидаемого, будет более подходящим. Это позволит вам не только обнаруживать аномалии, но и лучше понять структуру данных.
Заключение
Хотя кластеризация — мощный инструмент в мире машинного обучения, для вашей задачи более эффективны подходы, основанные на частотном анализе или регрессионных методах. Надеюсь, представленные вами рекомендации помогут вам выбрать правильный путь для выявления аномалий в ваших высококоррелированных категориальных данных. Оставайтесь настойчивыми и исследуйте каждую из указанных стратегий, чтобы найти наилучшее решение вашей проблемы.