В начале были проанализированы сущности датасета и их связи. Оказалось, что нет разницы, в каком PSX находится пользователь не смотря на то, что они по разному записывают время и трафик (последнее можно учитывать только при формировании витрин и финального результата, чтобы трафик был в единых единицах измерения). Разницы нет потому, что пользователь на протяжении всего времени датасета может находится только в одном из двух вариантов (либо в PSX с битами и GMT-5, или с байтами и GMT-6). Так как приведенный алгоритм обрабатывает всех пользователей по отдельности, то нет разницы к какому типу плана они подключены или к какому типу клиента (компания или физ. лицо) относятся
Для анализа данных были построены графики исходящего и входящего трафиков для 10 случайных взломанных и 10 случайных невзломанных клиентов (по 5 физ. лиц и компаний). По этим графикам был обнаружен устойчивый признак - у взломанных клиентов исходящий трафик начинает стабильно превышать входящий. Исходя из этого, был построен следующий алгоритм: обрабатываемые файлы сортируются по времени (крайне важный пункт), затем алгоритм проходится по этому списку файлов и собирает абсолютные значения трафика (так как было обнаружено, что некоторые значения могут быть отрицательными) пользователей в словарь в течении одного часа работы PSX -
{"IdOnPSX" :
"up" : [],
"down" : []
}
Затем полученный словарь анализируется - для каждого пользователя находится signum разницы входящего и исходящего трафика [sign(down - up)], полученная последовательность анализируется на количество идущих подряд 1, если их больше 3-ех - то пользователь считается взломанным. Затем начинается новый сбор часовых данных. Просто наличие 1-ой единицы дает много лишних срабатываний, что может быть объяснено случайными погрешностями в работе PSX
Данный алгоритм обрабатывает датасет на 100К пользователей за 3 минуты и находит 388 из 390 взломанных пользователей (без ложных срабатываний). Большой датасет на 1000К пользователей данный алгоритм обрабатывает (с созданием витрин) за 57 минут и находит 3914 взломанных пользователей
Минусом данного алгоритма можно назвать то, что если пользователь был взломан меньше чем на полчаса или в пределах сорока минут, но это время разделилось на две части при обработке, то взлом обнаружен не будет. Последнее можно исправить тем, что алгоритм не начинает новый сбор данных после часа, а удаляет первые записи о трафике и добавляет новые. Но в таком случае алгоритм будет отрабатывать дольше из-за необходимости анализа данных на каждом новом файле