Menu
CoddyTech

Wykrywanie oszustw kartowych

Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 49 z 51.

Zespół kart kredytowych w kasie oszczędnościowo-kredytowej może ręcznie sprawdzić tylko kilka płatności dziennie. W zeszłym miesiącu oszustwa kryły się na obrzeżach:

300 płatności kartą z zeszłego miesiąca, godzina w ciągu dnia na osi poziomej, a kwota na osi pionowej w skali logarytmicznej: szare uczciwe płatności wypełniają środkową część dnia, czerwone krzyżyki oznaczają 12 zgłoszonych oszustw, drobne w nocy i bardzo duże o dowolnej porze

Ale nikt nie wie o oszustwie, dopóki klient nie złoży skargi, kilka tygodni później. Dlatego dwa detektory muszą znaleźć nietypowe płatności bez żadnych etykiet.

Skargi z tego tygodnia już wpłynęły. Który detektor wykryłby ich więcej?

challenge icon

Wyzwanie

Trudny

Te 400 płatności z tego tygodnia znajdują się w pliku payments.csv; program odczytuje liczbę płatności, które zespół może sprawdzić — budget.

  1. Przeskaluj cztery cechy.
  2. Oznacz budget płatności za pomocą lasu izolacyjnego (random_state=0) oraz lokalnego współczynnika odstających (20 sąsiadów).
  3. Dopiero teraz otwórz fraud: wypisz, ile oszustw wykryła każda lista i ile uczciwych płatności zespół musiał sprawdzić.
  4. Przekaż zespołowi listę, która wykryła więcej oszustw: the isolation forest's list lub the local outlier factor's list, a w przeciwnym razie either list, they tie.

Dla poprzedniego miesiąca i budżetu wynoszącego 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

Spróbuj swoich sił

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

# Jeden wiersz na każdą płatność kartą; fraud wynosi 1 dla płatności zgłoszonych przez klientów kilka tygodni później
payments = pd.read_csv("payments.csv")
features = ["amount_eur", "hour", "km_from_home", "minutes_since_last"]

# Ile płatności zespół może sprawdzić ręcznie
budget = int(input())

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nienadzorowane

Poćwicz samodzielnie: Kompilator Python online