Репозиторий проекта:
Ссылка
Диаграммы: Подробная диаграмма структуры генератора
Ноутбук:
Генерируется фрод под несколько антифрод правил. Это значит, что транзакции генерируются с такими значениями, чтобы попадать под придуманные антифрод правила. Транзакции при генерации сразу помечаются под какое они правило. В итоговой таблице это просто выглядит как-будто был детект по конкретному антифрод правилу.
Правило выбирается случайно, но у правил есть веса, но их можно изменить т.к. правила берутся из класса с конфигами, а класс с конфигами берет их из файла.
Список правил
fast_geo_change
- быстрая смена геопозиции между
транзакциями, при том фрод транзакция - оффлайн. Метрика это просто
скорость с которой нужно перемещаться между совершением транзакций,
чтобы вписаться по времени в расстояние между ними. В конфиг файле под
этот фрод - compr.yaml
- выставляется пороговая скорость
км/ч, например 800, выше этого порога - фрод по этому правилу.fast_geo_change_online
- то же самое что и первое, но
для онлайн транзакций т.е. когда текущая транзакция это онлайнnew_device_and_ip
- транзакция с незнакомого устройства
и IP-адреса. IP-адрес при этом отличного от клиента города. Отличается
от правил с гео скачком, тем что при создании времени учитывается
расстояние между координатами транзакций и порог скорости - скорость
всегда ниже или равна пороговой, чтобы не попадать под гео правило.new_device_and_high_amount
- транзакция с незнакомого
устройства и IP-адреса. Но при этом IP-адрес совпадает
по городу с городом клиента. Также транзакция на большую сумму - у
compromised фрода свои параметры для сумм по категориям покупок.trans_freq_increase
- внезапное учащение транзакций.
Серия из более чем n транзакций с интервалами например до 5
минут. n это порог с которого частые транзакции “детектятся” по
этому правилу, например, 4 транзакции. n выставляется в конфигах
- compr.yaml
. Там же выставляется мин. и макс. возможные
интервалы между транзакциями при таком фроде, по умолчанию это 1 и 5
минут.Все правила кроме trans_freq_increase
подразумевают генерацию одной транзакции на клиента. Для
trans_freq_increase
в конфиг файле выставляется мин. и
макс. возможное число транзакций в серии для одного клиента. Мин.
значение является также порогом с которого происходит “детект” по этому
правилу.
Сгенерированные транзакции пишутся в отдельный файл.
Также как и в легальных транзакциях у compromised фрода есть свои конфиги и данные в которых он нуждается для генерации. Все это точно также упаковывается в конфиг класс и передается в функции и классы относящиеся к compromised фроду.
ComprClientFraudCfg
- конфиг классComprConfigBuilder
- конструктор конфиг класса - конфиг
билдерВремя всегда основывается на времени последней легальной транзакции.
Т.к. координаты создаваемой транзакции генерируются до создания её
времени, то при создании времени считается дистанция между координатами
последней легальной транзакции и текущей. И в соответствии с правилом и
выставленным порогом скорости перемещения высчитывается разница во
времени между последней легальной и фрод транзакцией - в случае с
trans_freq_increase
между последней легальной и первой фрод
в серии транзакций, последующие фрод транзакции уже отталкиваются от
времени предыдущей фрод транзакции и прибавляют случайную небольшую
разницу в соот-вии с конфигами.
Функции
generate_time_fast_geo_jump
- генерация времени для
фрода с резкой сменой геолокацииgen_time_for_frequent_trans
- генерация времени для
фрода с резким учащением транзакцийderive_from_last_time
- создать время основываясь на
времени предыдущей транзакции. Обеспечивает генерацию времени не
попадающего под фрод с резкой сменой гео. Или также может просто
прибавлять фиксированный и случайный интервал для генерации
времени.get_time_fraud_txn
- конечная функция генерации времени
для compromised фрода, использует все функции вышеТакже как и для легальных транзакций, часть данных транзакции
генерируется отдельным объектом. В случае с compromised фродом это: ID
мерчанта, координаты, город, id устройства, канал транзакции, тип
транзакции. Этим занимается отдельный класс -
FraudTxnPartData
. Этот класс генерирует эти данные в
соответствии с выпавшим антифрод правилом.
Разница с легальными транзакциями в том что:
new_device_and_high_amount
Для compromised фрода сумму генерирует отдельный класс -
TransAmount
. В него передается объект конфиг класса в
котором есть информация о категориях покупок и характеристиках их сумм
чисто под фрод. Также в конфиг классе содержатся отдельные
характеристики сумм под правило trans_freq_increase
Функция gen_purchase_fraud_txn
. В
основном использует отдельные функции и классы для генерации данных
TransAmount
FraudTxnPartData
calc_distance
get_time_fraud_txn
is_fraud
,
метку правила определят сама.Функция gen_multi_fraud_txns
trans_freq_increase
то выбирает
случайное число транзакций и генерирует это кол-во при помощи
специальной функции обертки для функции создания одной транзакции -
trans_freq_wrapper
gen_purchase_fraud_txn
FraudTxnsRecorder
Для compromised фрода есть отдельный класс
оркестратор - ComprRunner
, который получает на вход данные
конфиг файлов и путь к директории текущего запуска. Исходя из этих
данных он создает объект конфиг билдера, через билдер создает объект
конфиг класса и объекты других нужных классов.
При вызове run()
метода оркестратора происходит полный
процесс генерации compromised fraud транзакций.