Обнаружение аномалий в правах доступа пользователя - PullRequest
1 голос
/ 18 февраля 2012

Я пытаюсь провести анализ данных о правах доступа компании. Я пытаюсь объединить разные группы в группы в соответствии с доступом, который у них есть, а затем определить, является ли чей-то доступ подозрительным, потому что ни один из его групповых пиров не имеет такого доступа. Я просто ищу алгоритм, который может помочь мне в этом. Это в значительной степени система обратных рекомендаций (т. Е. Netflix, Amazon). Вот простой пример:

    Person 1 has access to files A, B, E
    Person 2 has access to files A, B
    Person 3 has access to files A, B
    Person 4 has access to files C, D, E
    Person 5 has access to files C, D
    Person 6 has access to files C, D, E

Я хочу иметь возможность распознать, не классифицируя это (неконтролируемое обучение), что Лица 1-3 и Лица 4-6 функционируют одинаково и, вероятно, находятся в одной группе из-за их одинакового доступа к файлам (кластеризация). После того, как мы идентифицируем кластеры, мы отмечаем аномальный доступ, который является человеком 1 с файлом E.

Я попытался заглянуть в рубиновую библиотеку AI4R, но зашел в тупик. Есть так много алгоритмов на выбор. Мне просто нужно указать правильный путь. Спасибо.

1 Ответ

0 голосов
/ 18 февраля 2012

Прямой способ сделать это - построить векторы признаков для каждого человека и использовать косинусное сходство / точечное произведение как меру сходства между ними.Вектор объекта будет что-то вроде (A = 1, B = 0, C = 1 ...) и так далее.Когда вы вычисляете Если ваши данные слишком скудны, т. Е. Слишком много вариантов доступа, у вас может получиться очень низкий уровень подобия.

Вы также можете построить эталонную (характеристическую) матрицу того, как два объекта / доступа связаны друг с другом, то есть насколько они похожи друг на друга (скажем, значение от 0 до 1).Мера сходства между двумя векторами может быть немного разумнее, если принять средневзвешенное значение: Sum (f1, f2) / (nr (f1) * nr (f2)), где f1 - это элемент функции / доступа для лица 1, и f2это функция / доступ от человека 2. nr (f1) = общие характеристики человека 1, и nr (f2) общие характеристики человека 2.

Скажем, теперь у вас есть измерения того, как каждый человек относится к другому человеку,Теперь вы можете использовать стратегию агломерационной кластеризации , которая позволит вам получить заранее определенное (то есть установить этот предел) количество кластеров.Или вы можете установить правила для максимальной дельты между центроидами кластеров, чтобы учесть агломерацию, которая могла бы остановить процесс на некоторой непредсказуемой стадии (т. Е. Вы получите неопределенное количество кластеров).

Этоочень простые стратегии.Матрица функций требует знания предметной области и требует времени для сборки, особенно если у вас много функций / типов доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...