Data
평가 방식
ROC 곡선 아래의 영역(AUC) 평가
모델 분류
Classification(분류)
타겟(target)
isFraud
데이터 파일 구성
1. transaction(거래 데이터)
2. identity(신원 확인 데이터)
transaction 컬럼 설명
- TransactionDT: 주어진 참조 datetime의 timedelta(실제 타임스탬프가 아님), 초단위
- TransactionAMT: 거래 결제 금액(USD)
- ProductCD: 제품 코드, 각 거래에 대한 제품(categorical)
- card1 - card6: 카드 종류, 카드 카테고리, 발행 은행, 국가 등의 결제 카드 정보(categorical)
- addr: 주소(categorical)
- dist: 청구 주소, 우편 주소, 우편 번호, IP 주소, 전화 지역 등 사이의 거리
- P_ and (R__) emaildomain: 구매자 및 수신자 이메일 도메인(categorical)
- C1-C14: 결제 카드와 관련된 것으로 확인된 주소 수 등과 같은 계산. 실제 의미는 마스킹됩니다.
- D1-D15: 이전 트랜잭션 사이의 날짜 등과 같은 timedelta
- M1-M9: 카드의 이름 및 주소 등과 같은 일치
- Vxxx: Vesta는 순위, 계산 및 기타 엔터티 관계를 포함하여 풍부한 기능을 설계했습니다. IP 및 이메일 또는 주소와 연결된 결제 카드가 24시간 동안 몇 번 나타났는지 등
identity 컬럼 설명
- Transactionid: 트랜잭션 관련 ID
- DeviceType [Categorical]: 트랜잭션에 사용되는 장치 유형
- DeviceInfo [Categorical]: 사용된 장치에 대한 자세한 정보
- id 1 - 38 [Categorical+numeric]: 네트워크 연결 정보, 브라우저 정보 등(id 12 - 38은 범주 정보)
EDA
- DateTime을 1시간 단위로 정리
- 우리는 이것들로부터 4개의 범주형 값을 만들 수 있습니다.
- 높음 :(6,7,8,9) : 오전 6시부터 9시까지 입니다.
- 중간 : (3,4,5,10,11)입니다.
- 낮음 : (11,12,16-0,1-2)입니다.
- 매우 낮음 : (13,14,15)입니다.
- DateTime을 1시간 단위로 정리
- 우리는 이것들로부터 4개의 범주형 값을 만들 수 있습니다.
- 높음 :(6,7,8,9) : 오전 6시부터 9시까지 입니다.
- 중간 : (3,4,5,10,11)입니다.
- 낮음 : (11,12,16-0,1-2)입니다.
- 매우 낮음 : (13,14,15)입니다.
feature engineering
transaction + identity 데이터셋을 merge했습니다
train 데이터와 test 데이터의 id 컬럼명에 오차가 있어서 수정을 했습니다
결측치 비율이 70%이상인 컬럼들을 제거합니다
interpolate() 와 dropna()를 활용하여 결측치를 채웁니다
object타입의 데이터를 라벨인코딩했습니다
모델 학습을 위한 train, valid 데이터 나눴습니다
train_test_split()했습니다
isFraud(target)의 데이터 불균형을 확인했습니다
데이터 불균형을 해결하기 위해 다운샘플링을 했습니다
7가지 모델을 학습하고 평가를 했습니다
Models
모델 평가 (train / test)
- DecisionTreeClassifier: (0.84 / 0.70)
- RandomForestClassifier: (0.98 / 0.84)
- AdaBoostClassifier: (0.85 / 0.83)
- GradientBoostingClassifier: (0.89 / 0.85)
- XGBClassifier: (0.89 / 0.85)
- 🥇 LGBMClassifier: (0.96 / 0.86)
- LogisticRegression: (0.70 / 0.71)