Автор: Картик [LinkedIn]

AI пришел, чтобы обнаруживать мошенничество при транзакциях с кредитными картами. Это краткое изложение реализации модели XGBoost.

Цель: обнаружение мошенничества в транзакциях клиентов.

Ключевые слова: прогнозирование, обнаружение мошенничества, классификация, RandomizedSearchCV, XGBoost, машинное обучение.

Процедура:

  1. Опишите проблему
  2. Описание данных
  3. EDA и корреляционный анализ [образец]
  4. Подготовка данных
  5. Определение модели - XGBoostClassifier
  6. Отправьте модель на kaggle (убедитесь, что оценка ›0,93)

Конкурс организован IEEE Computational Intelligence Society через платформу Kaggle. Исследователи из IEEE-CIS хотят улучшить систему предотвращения мошенничества и обеспечить удовлетворенность клиентов за счет беспроблемных транзакций. Это сократит потери бизнеса от мошенничества и увеличит доход.

Метрическая функция: Прогнозы оцениваются на основе площади под кривой ROC относительно наблюдаемой цели.

1. Определение проблемы:

Банковская отрасль терпит убытки в миллионы долларов из-за мошенничества с кредитными картами. Вопрос в том, почему. Почему банк должен терпеть убытки, а не клиент? Это потому, что банкам необходимо одобрять каждую транзакцию. Таким образом, он должен отклонить мошенническую транзакцию. Если они одобряют мошенническую транзакцию, мошенничество лежит на банке. Таким образом, возникает потребность в более точном обнаружении мошенничества. Что ж, это можно сделать, отправив оповещения для каждой транзакции. Это приемлемо? Нет. Клиенты будут раздражены, увидев множество предупреждений. Таким образом, IEEE - CIS с Vesta ищут модели машинного обучения, которые обучаются на крупномасштабном наборе данных. Данные поступают из реальных транзакций электронной коммерции Vesta и содержат широкий спектр функций, от типа устройства до характеристик продукта.

Цель: повысить производительность системы оповещения о мошеннических транзакциях с помощью эталонных моделей машинного обучения. (Чтобы предоставить лучшую модель)

Результат: снижение потерь от мошенничества, увеличение доходов, беспроблемные транзакции (меньше ложных срабатываний).

Цель модели машинного обучения: учитывая идентификатор транзакции с ее функциями, предсказать, является ли транзакция мошеннической. (Двоичная классификация)

Источник: https://www.kaggle.com/c/ieee-fraud-detection/overview
Источник данных: https://www.kaggle.com/c/ieee-fraud-detection/data

2. Описание данных:

Целевая функция «isFraud» является двоичной целью.

Данные разбиты на два файла: идентичность и транзакция. Не все транзакции имеют соответствующую идентификационную информацию.

Категориальные особенности:

- Сделка

*     ProductCD
*     card1 - card6
*     addr1, addr2    -  Purchaser billing region, billing country
*     P_emaildomain
*     R_emaildomain
*     M1 - M9

- Личность

*     DeviceType
*     DeviceInfo
*     id_12 - id_36

Остальные - числовые характеристики.

Cx, Dx, Mx, Vx - это спроектированные функции.

Шаг: Импортируйте библиотеки и загрузите данные

3. Исследовательский анализ данных

Описание данных (подробности и обсуждение)

  • TransactionDT: timedelta от заданного ссылочного даты и времени (не фактическая метка времени)
  • TransactionAMT: сумма платежа транзакции в долларах США
  • ProductCD: код продукта, продукт для каждой транзакции
  • card1 - card6: информация о платежной карте, такая как тип карты, категория карты, банк-эмитент, страна и т. д.
  • адрес: адрес
  • dist: расстояние
  • P_ и (R__) emaildomain: домен электронной почты покупателя и получателя
  • C1-C14: подсчет, например, количество адресов, связанных с платежной картой, и т. Д. Фактическое значение замаскировано.
  • D1-D15: timedelta, например количество дней между предыдущей транзакцией и т. Д.
  • M1-M9: совпадение, например, имена на карте, адрес и т. Д.
  • Vxxx: Vesta разработала богатые возможности, включая ранжирование, подсчет и другие отношения сущностей.
  • Переменные в таблице идентификации обозначают - информацию о сетевом подключении (IP, ISP, прокси и т. Д.) И цифровую подпись (UA / browser / os / version и т. Д.), Связанную с транзакциями.

В комментариях к теме обсуждения на Kaggle представлена ​​подробная информация об атрибутах.

EDA для этого набора данных в основном выполняется для корреляционного анализа.

Наблюдение: количество значений атрибута ‘isFraud’ показывает, что набор данных сильно несбалансирован. На этикетке isFraud 96,5% отрицательных точек данных и 3,5% положительных точек данных.

Пример EDA по числовым данным

Образец EDA по категориальному атрибуту

— — — — — — — — — — — — — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — — — —

Некоторые важные атрибуты и их анализ: (на основе важности функции в окончательной модели машинного обучения)

— — — — — — — — — — — — — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — — — —

Наблюдения EDA:

  1. TransactionAmt: у этого атрибута нет пропущенных значений. Он слабо коррелирован со всеми другими атрибутами в фрейме данных. Среднее значение суммы транзакции в наборе данных поезда составляет 135 долларов, и это значение вместе со стандартным отклонением будет использоваться при проектировании функций. Таким образом, это важный атрибут для обучения модели.
  2. ProductCD: Этот атрибут представляет собой категориальный атрибут, содержащий код продукта. Есть 5 уникальных кодов товаров. Атрибут ProductCD несбалансирован. Доли каждого ProductCD в наборе данных поезда с мошенническими и не мошенническими транзакциями одинаковы. ProductCD "W" чаще встречается в наборе данных.
  3. card1: Частотное распределение показывает, что этот атрибут широко распространен в своем диапазоне. Коробчатая диаграмма показывает, что мошеннические и не мошеннические значения card1 перекрываются. Это означает, что одна карта card1 не может разделять мошеннические и не мошеннические транзакции. В этой функции нет пропущенных значений, и она слабо коррелирует со всеми другими атрибутами.
  4. card2: Атрибут распределяется по диапазону нелинейно. В этом атрибуте отсутствует небольшой процент значений. Мошеннические и не мошеннические значения card2 имеют одинаковое распределение. Атрибут становится важным из-за отсутствия сильной корреляции со всеми другими атрибутами.
  5. card3: Частотное распределение card3 демонстрирует уникальное поведение. Отсутствуют значения 26,5%, и он имеет сильную корреляцию с некоторыми атрибутами V. 50% IQR полностью заполняется значением 150 в наборе данных поезда. Такое поведение показывает, что атрибут избыточен. Но из-за избыточности V-функций, наблюдаемой позже, атрибут card3 сохраняется. Кроме того, во время проектирования функции удаляются только атрибуты Vxxx.
  6. card4: - это категориальный атрибут, который имеет 4 уникальных значения и имеет высокую изменчивость значений. Он показывает высокую изменчивость как мошеннических, так и не мошеннических значений.
  7. card5: - числовой атрибут, в котором отсутствуют 72% значений. Он слабо коррелирует со всеми остальными атрибутами. Более 25% не пропущенных точек данных атрибута имеют значение = 226.
  8. addr1: - числовой атрибут с высокой изменчивостью. Поскольку коэффициенты корреляции близки к 0, этот атрибут является уникальным.
  9. addr2: - числовой атрибут. Более 50% точек данных имеют значение addr2 = 87.
  10. dist1: числовой атрибут с 60% пропущенных значений и более 75% непропущенных значений, лежащих ниже 24. Максимальное значение составляет 10286. Мошеннические транзакции имеют среднее значение dist1, равное 174, в то время как не мошеннические транзакции имеют среднее значение dist1 на 117. Он слабо коррелирует со всеми другими атрибутами.
  11. dist2: похоже на поведение dist1. 93% значений отсутствуют. Нет корреляции между dist1 и dist2. При этом dist2 очень слабо коррелирует со всеми остальными атрибутами.
  12. P_ и R_ emaildomain: категориальные атрибуты с разными значениями. По отдельности они не могут различать мошеннические и немошеннические транзакции, поскольку распределение по категориям схоже. В 76% точек данных отсутствуют значения R_emaildomain.
  13. Cxx: C1 - C14 - атрибуты счетчиков. График C3 (уникальный атрибут среди атрибутов Cxx) показывает, что мошеннические транзакции не имеют значения C3 больше 3 в наборе обучающих данных. В то время как транзакции без мошенничества имеют значения C3 от 0 до 26. Более 75% значений C3 равны 0, и атрибут не имеет пропущенных значений. Все остальные атрибуты C имеют значительные вариации и перекрытия в мошеннических и не мошеннических транзакциях. Более 75% не пропущенных значений атрибутов C равны 0. У них высокая корреляция между собой. (Корреляционный анализ даст более четкую картину). Эти атрибуты в основном избыточны.
  14. Dxx: D1 – D15 - это дельты во времени. D1 и D2 сильно коррелированы. D1 имеет 21% пропущенных значений, а D2 имеет 47,5% пропущенных значений. Хотя идеально удалить D2, но распределение частот показывает, что атрибут D2 имеет больше вариаций. Подобное поведение можно наблюдать между другими коррелированными атрибутами D. Но следует помнить, что более 50% атрибутов Vxxx удаляются позже при корреляционном анализе. Таким образом, основываясь на частотном распределении, мы не принимаем никаких решений по выбору функций. Большинство атрибутов D имеют большие вариации, а также высокий процент пропущенных значений.
  15. Mx: M1 – M9 - это логические атрибуты, которые показывают, совпадают ли идентификационные данные, такие как имена, или нет. Эти атрибуты достаточно различаются, что не позволяет четко разграничить мошеннические и немошеннические транзакции. Отсутствуют более 50% значений M.
  16. Vxxx: компания разработала атрибуты V1 – V339, созданные над необработанными функциями (от TransactionAmt до M9). Между этими атрибутами наблюдаются сильная корреляция (›0,90) и большие вариации. Таким образом, я приступил к корреляционному анализу на основе подобия NAN для определения того, какие атрибуты Vxxx являются избыточными. Более 50% точек данных без пропущенных значений имеют значения V = 0.

Корреляционный анализ: удаление избыточных атрибутов с порогом корреляции 0,75: (Группировка атрибутов основана на подобии структуры NAN)

Кредиты: https://www.kaggle.com/cdeotte/eda-for-columns-v-and-id

Поиск NAN:

Примечание. Вышеупомянутый поиск NAN используется для формирования групп атрибутов с похожей структурой NAN. Приведенные ниже тепловые карты корреляции будут использоваться для формирования подгрупп среди этих похожих групп NAN для удаления избыточных атрибутов.

Пример: V1 - V11, D11

Среди V2 и V3, V2 имеет 9 интегральных значений, а V3 имеет 10 интегральных значений (см. График распределения выше). В каждом из атрибутов V2 и V3 отсутствует 47,29% значений, тогда как корреляция между ними составляет 0,77. Таким образом, V2 и V3 образуют подгруппу, а V2 становится избыточным.

Этот процесс повторяется до тех пор, пока не будут выбраны следующие атрибуты.

4. Подготовка данных

Как было предложено в записной книжке, опубликованной на Kaggle, агрегирование функций использовалось для повышения производительности модели с функциями UID.

Список функций, выбранных для обучения модели:

'TransactionAmt', 'ProductCD', 'card1', 'card2', 'card3', 'card4', 'card5', 'card6', 'addr1', 'addr2', 'dist1', 'dist2', 'P_emaildomain ',' R_emaildomain ',

‘C1’, ‘C2’, ‘C3’, ‘C4’, ‘C5’, ‘C6’, ‘C7’, ‘C8’, ‘C9’, ‘C10’, ‘C11’, ‘C12’, ‘C13’, ‘C14’,

‘D1’, ‘D2’, ‘D3’, ‘D4’, ‘D5’, ‘D6’, ‘D7’, ‘D8’, ‘D9’, ‘D10’, ‘D11’, ‘D12’, ‘D13’, ‘D14’, ‘D15’,

‘M1’, ‘M2’, ‘M3’, ‘M4’, ‘M5’, ‘M6’, ‘M7’, ‘M8’, ‘M9’,

‘V1’, ‘V3’, ‘V4’, ‘V6’, ‘V8’, ‘V11’, ‘V13’, ‘V14’, ‘V17’, ‘V20’, ‘V23’, ‘V26’, ‘V27’, ‘V30’, ‘V36’, ‘V37’, ‘V40’, ‘V41’, ‘V44’, ‘V47’, ‘V48’, ‘V54’, ‘V56’, ‘V59’, ‘V62’, ‘V65’, ‘V67’, ‘V68’, ‘V70’, ‘V76’, ‘V78’, ‘V80’, ‘V82’, ‘V86’, ‘V88’, ‘V89’, ‘V96’, ‘V98’, ‘V99’, ‘V104’, ‘V91’, ‘V107’, ‘V108’, ‘V111’, ‘V115’, ‘V117’, ‘V120’, ‘V121’, ‘V123’, ‘V124’, ‘V127’, ‘V129’, ‘V130’, ‘V136’, ‘V138’, ‘V139’, ‘V142’, ‘V147’, ‘V156’, ‘V160’, ‘V162’, ‘V165’, ‘V166’, ‘V169’, ‘V171’, ‘V173’, ‘V175’, ‘V176’, ‘V178’, ‘V180’, ‘V182’, ‘V185’, ‘V187’, ‘V188’, ‘V198’, ‘V203’, ‘V205’, ‘V207’, ‘V209’, ‘V210’, ‘V215’, ‘V218’, ‘V220’, ‘V221’, ‘V223’, ‘V224’, ‘V226’, ‘V228’, ‘V229’, ‘V234’, ‘V235’, ‘V238’, ‘V240’, ‘V250’, ‘V252’, ‘V253’, ‘V257’, ‘V258’, ‘V260’, ‘V261’, ‘V264’, ‘V266’, ‘V267’, ‘V271’, ‘V274’, ‘V277’, ‘V281’, ‘V283’, ‘V284’, ‘V285’, ‘V286’, ‘V289’, ‘V291’, ‘V294’, ‘V296’, ‘V297’, ‘V301’, ‘V303’, ‘V305’, ‘V307’, ‘V309’, ‘V310’, ‘V314’, ‘V320’, ‘V332’, ‘V325’, ‘V335’, ‘V338’,

id_01, id_02, id_03, id_04, id_05, id_06, id_07, id_08, id_09, id_10, id_11, id_12, id_13 ',' id_14 ',' id_15 ',' id_16 ',' id_17 ',' id_18 ',' id_19 ',' id_20 ',' id_21 ',' id_22 ',' id_23 ',' id_24 ',' id_25 ', 'id_26', 'id_27', 'id_28', 'id_29', 'id_30', 'id_31', 'id_32', 'id_33', 'id_34', 'id_35', 'id_36', 'id_37', 'id_38 ',' Тип устройства ',' Информация об устройстве ',

'cents', 'addr1_FE', 'card1_FE', 'card2_FE', 'card3_FE', 'P_emaildomain_FE', 'card1_addr1', 'card1_addr1_P_emaildomain', 'card1_addr1_FE',
'card1_emailtaction_card' /> 'TransactionAmt_card1_std', 'TransactionAmt_card1_addr1_mean', 'TransactionAmt_card1_addr1_std', 'TransactionAmt_card1_addr1_P_emaildomain_mean'
'TransactionAmt_card1_addr1_P_emaildomain_std', 'D9_card1_mean'
'D9_card1_std', 'D9_card1_addr1_mean', 'D9_card1_addr1_std',
'D9_card1_addr1_P_emaildomain_mean'
'D9_card1_addr1_P_emaildomain_std', 'D11_card1_mean'
'D11_card1_std', 'D11_card1_addr1_mean', 'D11_card1_addr1_std'
'D11_card1_addr1_P_emaildomain_mean'
'D11_card1_addr1_P_emaildomain_std', «uid_FE ',
' TransactionAmt_uid_mean ',' TransactionAmt_uid_std ',' D4_uid_mean ',
' D4_uid_std ',' D9_uid_mean ',' D9_uid_std ',' D10_uid_mean ',
' D10_uid_mean ',
' D10_uid_mean ',
'D15_uid_std', 'C1_uid_mean',
'C2_uid_m ean ',' C4_uid_mean ',' C5_uid_mean ',' C6_uid_mean ',
' C7_uid_mean ',' C8_uid_mean ',' C9_uid_mean ',' C10_uid_mean ',
' C11_uid_mean ',
' C11_uid_mean_mean , C14_uid_mean,
M1_uid_mean, M2_uid_mean, M3_uid_mean, M4_uid_mean,
M5_uid_mean, M6_uid_mean, M7_uid_mean,
M7_uid_mean,
M9_uid_mean ',' uid_P_emaildomain_ct ',' uid_dist1_ct ',
' uid_DT_M_ct ',' uid_id_02_ct ',' uid_cents_ct ',' C14_uid_std ',
' uid_C13_Vid ',' uid_C13_Vid ',' uid_C13_Vid ',' uid_C13_Vid ',' uid_C13_V12ct ',' uid_C13_V12ct ',' uid_C13_Vid ',' ,
'uid_V309_ct', 'uid_V307_ct', 'uid_V320_ct'

Эти 288 функций будут использоваться для обучения модели XGBoost.

5. Построение модели.

RandomizedSearchCV используется для настройки гиперпараметров для модели XGBoost.

6 Fold-обучение реализовано для обучения XGBoostClassifier на первых 75% обучающих данных и проверки на последних 25% обучающих данных.

Публикация на Kaggle:

Резюме:

  1. Модель XGBoostClassification разработана для обнаружения мошенничества при транзакциях с кредитными картами. Google Colab используется для экспериментов и обучения моделей.
  2. Первоначально исследовательский анализ данных выполняется с анализом корреляций, частотного распределения и коробчатых диаграмм. Было замечено, что большинство атрибутов «V» коррелированы друг с другом. На основе подобия NAN формируются группы V-атрибутов, и на основе корреляций 211 V-атрибутов были определены как избыточные и исключены из обучения модели. Для этого используются корреляционные тепловые карты. (Обсуждения на Kaggle говорят о том, что PCA уступает этой технике уменьшения атрибутов)
  3. Этап подготовки данных состоит из нормализации функций временной дельты D, категориальных атрибутов кодирования меток и заполнения пропущенных значений с помощью -1. Испытываются различные наборы кодировок функций, и те, которые улучшают AUC при локальной проверке, сохраняются. 288 функций передаются через XGBoostClassifier. Проектирование функций, ориентированных на клиента, было выполнено, когда UID были сгенерированы, как было предложено Крисом Деоттом: (https://www.kaggle.com/cdeotte/xgb-fraud-with-magic-0-9600)
  4. Через RandomizedSearchCV были настроены гиперпараметры XGBoostClassifier. 6-кратное обучение используется для обучения настроенного XGBoostClassifier.
  5. Прогноз модели получил AUC 0,932005 в частном наборе данных на Kaggle.

Использованная литература:

Разработка функций: (спасибо @cdeotte и @ alijs1)

  1. Https://www.kaggle.com/alijs1/ieee-transaction-columns-reference
  2. Https://www.kaggle.com/cdeotte/eda-for-columns-v-and-id

Определение UID и построение модели:

3. https://www.kaggle.com/cdeotte/xgb-fraud-with-magic-0-9600

Вычислительная платформа:

4. https://colab.research.google.com/

Курс:

5. https://www.appliedaicourse.com/course/11/Applied-Machine-learning-course