Menu
CoddyTech

카드 사기 감시

Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 49번째.

신용협동조합의 카드 팀은 하루에 몇 건의 결제만 직접 확인할 수 있습니다. 지난달에는 사기 결제가 가장자리에서 나타났습니다:

지난달의 카드 결제 300건. 가로축은 하루 중 시간, 세로축은 로그 척도의 결제 금액입니다. 회색 정상 결제는 낮 시간대 중앙에 모여 있고, 빨간색 십자표는 신고된 사기 결제 12건을 표시합니다. 밤에는 아주 적은 금액의 결제가, 어느 시간대에나 매우 큰 금액의 결제가 나타납니다.

하지만 고객이 몇 주 후에 불만을 제기하기 전까지는 누구도 사기를 알아채지 못합니다. 따라서 두 탐지기가 레이블이 전혀 없는 결제 중에서 이상한 결제를 찾아야 합니다.

이번 주의 불만 사항이 접수되었습니다. 어떤 탐지기가 더 많이 잡아냈을까요?

challenge icon

챌린지

어려움

이번 주의 결제 400건은 payments.csv에 있으며, 프로그램은 팀이 확인할 수 있는 건수인 budget을 읽습니다.

  1. 네 가지 특성의 스케일을 조정합니다.
  2. 격리 포레스트(random_state=0)와 로컬 이상치 요인(이웃 20개)을 사용해 budget건의 결제를 이상치로 표시합니다.
  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 컴파일러