TO DO
1: 지금까지의 스토리 각자 작성해오기
2: TabNet 공부하기
3: TabNet 학습해서 f1 높게 만들기
4: 샘플링 하고 학습해보기 (-> 전체 데이터로 고쳐서 0의 f1 확인)
Tabular 데이터에 특화된 딥러닝 모델
from pytorch_tabnet.tab_model import TabNetClassifier
특징
파라미터
| 파라미터 | 기본값 | 설명 |
|---|---|---|
| n_d | ||
| n_a | 8 | |
| 8 | 디코더 차원 수. feature representation 얼마나 깊이 학습할지 어텐션 계산 차원 수. 어떤 특성에 주목할지 결정 두 값 클수록 성능 좋아지지만 과적합 가능성 커짐 | |
| n_steps | 3 | 각 특성 선택하는 단계 수 (보통 3~10) |
| gamma | 1.3 | 이전 단계 정보 얼마나 반영할지 결정 가중치 조절. 학습 연속성 제어 1 시작 - 낮추면 단계 간 연결 감소, 높이면 강화 |
| lambda_sparse | 0.0001 | sparse regularization 강도 조절 |
| 커지면 희소성 강회. 모델 적은 특성만 선택하도록 유도 | ||
| optimizer_params | dict(lr=0.02) | 학습 최적화에 사용 Adam, SGD 등 최적화 알고리즘 파라미터 설정 learning_rate, weight_decay 등 포함 |
| mask_type | sparsemax | 마스킹 방법 entmax - sparse attention 위한 연산방식 sparsemax 가능 but entmax가 좀 더 부드러운 학습 |
| momentum | 0.02 | 업데이트 속도 조절. 높을수록 빠른 학습 but 진동 가능 |
| batch_size virtual_batch_size | 학습 배치 크기 큰 배치를 가상으로 나눠서 학습 | |
| scheduler_params | 학습률 동적으로 조절 |
F1 Custom Metric 설정
개요
다양한 사기가 만연해지는 요즈음 큰 재산피해를 야기하는 은행 및 금융 사기에 관한 데이터를 다뤄보려 한다. 그 중 저작권이 있는 실제 데이터이며, 변종의 데이터셋을 가진 데이터를 선택해 EDA와 모델링까지 진행하고자 한다. 유용한 정보를 통해 인사이트를 도출하고, 시각화하는 능력을 향상시킬 뿐 아니라 분류 모델링 능력을 향상시킬 수 있고, 더 나아가 다른 사기 분야에 대하여서도 활용할 수 있을것이라 생각한다.
데이터 전처리
데이터 전처리 과정 중에, 데이터 명세에 결측치가 -1이라고 명시되어 있으나 그 밖의 음수값이 많은 컬럼이 있어 드랍하였다.(’intended_balcon_amount’) 이외 다른 컬럼에 대하여 명시된 결측치는 개수가 극히 적고, 신규 계좌일 경우 결측치가 발생할 수 있다고 여겨 따로 처리하지 않고 진행하였다.
데이터 EDA
31개의 컬럼 중 범주형 변수를 가진 컬럼, 숫자 형식으로 되어 있으나 범주형 변수와 같은 컬럼, 그리고 연속형 변수를 가진 컬럼으로 분류하여 데이터 EDA를 진행하였다. 각 컬럼에 대하여 전체 사기계좌 비율 이상인 클래스를 확인하고서, 3차원 플랏을 통해 군집을 찾고자 하였다. 이 중 범주형 변수를 가진 컬럼으로부터 전체 사기 계좌 중 높은 점유율을 가지며, 전체 계좌에 대한 사기 계좌의 확률에 비해 높은 확률로 사기 계좌인 군집을 발견하였다. housing_status = ‘BA’ & device_os = ‘windows’ - 해당 군집 내 사기 계좌 = 전체 사기 계좌의 36% - 해당 군집 내 사기 계좌 비율 = 6.7% ( 전체 데이터셋 사기 계좌 비율 = 1.1% ) 먼저 이 군집에 대하여 이진분류 모델링을 설계했다.
머신러닝
다양한 모델을 사용해 모델링을 해 보고서, TabNet과 lightGBM 모델을 중점으로 발전시켜나가기로 하였다. 전체 데이터 수(1000k)에 비해 사기 계좌 데이터 수(10k)가 적기 때문에 일반 계좌에 대하여 데이터 샘플링을 해보거나, 모델 판단 시 loss를 f1-score로 보기로 하였다. 실제로 모델 테스트 중 사기 계좌에 대하여 오버샘플링하면 f1-score이 좋아진다는 사실을 발견하였다. 먼저 TabNet모델을 설계하는 중에 파라미터 조정을 통해서도 f1-score이 0.48 이상으로 좋아지지 않는 것 같아 lightGBM 모델을 사용해보기로 했다. lightGBM을 사용하였을 때, 가장 먼저 전체 데이터에 대한 모델의 경우 사기계좌에 대한 f1-score가 0.3이어서, 오버샘플링을 해보았다. 일반 계좌에 대하여 0.1~0.3 정도의 비율로 샘플링을 하여 학습시켰고, 테스트는 전체 데이터에 대하여 진행하였다.