Menu
CoddyTech

Поиск мошенничества с картами

Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 49 из 51.

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

300 карточных платежей за прошлый месяц: по горизонтали — час суток, по вертикали — сумма в логарифмическом масштабе; серые точки — обычные платежи, заполняющие середину дневного диапазона, красные крестики отмечают 12 выявленных мошеннических платежей: небольшие ночью и очень крупные в любое время суток

Но о мошенничестве никто не узнаёт, пока клиент не пожалуется — через несколько недель. Поэтому два детектора должны находить подозрительные платежи вообще без меток.

Жалобы за эту неделю поступили. Какой детектор обнаружил бы больше?

challenge icon

Задание

Сложно

400 платежей за эту неделю находятся в payments.csv; программа считывает, сколько платежей команда может проверить, — budget.

  1. Масштабируй четыре признака.
  2. Пометь budget платежей с помощью изоляционного леса (random_state=0) и локального коэффициента выбросов (20 соседей).
  3. Только теперь проверь fraud: выведи, сколько платежей обнаружил каждый список и сколько честных платежей команда проверила.
  4. Отправь команде список, который обнаружил больше мошеннических платежей: the isolation forest's list или the local outlier factor's list, иначе either list, they tie.

За прошлый месяц и при бюджете 10:

Budget: 10 of 300 payments
Isolation forest: caught 6 of 12 frauds, 4 honest payments checked
Local outlier factor: caught 10 of 12 frauds, 0 honest payments checked
Send the team: the local outlier factor's list

Попробуйте сами

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor

# Одна строка на каждый платёж картой; fraud равно 1 для платежей, о которых клиенты сообщили спустя несколько недель
payments = pd.read_csv("payments.csv")
features = ["amount_eur", "hour", "km_from_home", "minutes_since_last"]

# Сколько платежей команда может проверить вручную
budget = int(input())

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Обучение без учителя

Потренируйтесь самостоятельно: Онлайн-компилятор Python