PROBLEM
Problem info
competition
월간 데이콘 신용카드 사기 거래 탐지 AI 경진대회
Theme
Unsupervised Anomaly Detection
metric
Macro f1 score
Notes
- 신용 카드 거래 내역을 학습하여 사기 거래 내역(이상치)를 탐지하는 비지도 이상치 탐지 문제입니다.
- PCA, SVD 등의 차원축소기법 활용이 주요한 문제입니다. Feature selection, outlier detection 모두에 필요합니다. 이러한 기법들을 최대한 활용하는 것을 권장드리되 NN, Autoencoder 등 다양한 접근 또한 환영입니다.
- Anomaly detection에 대한 여러 최신 알고리즘이 대회에 활용되었습니다. 이런저런 관련 paper 찾아보는 재미도 있을 듯 합니다.
refer
Review
- 신용 카드 거래 내역 데이터가 주어지고, 그 중 사기 거래 내역(이상치)를 탐지하는 문제다.
- Train data에는 거래 내역이 사기인지 정상인지 label이 되지 않은 데이터만 주어진다.
- Labeling이 된 validation data가 주어지고(평가에만 사용), test data가 주어진다.
- 즉, 비지도 기법을 활용해 모델을 학습하고, validation data를 이용해 평가 후 tuning을 하는 방식으로 과제를 해결해야 한다.
- PCA, SVD 등의 차원축소 기법 외에도 auto encoder 등의 분류기반, NN 기반, 군집화, 통계적 기법 등을 활용하는 다양한 접근방식이 존재한다.
- 비지도 학습이기 때문에 군집화, PCA 등의 방식이 general한데, validation data를 간접적으로 이용한 auto encoder 방식의 도입이 많은 코드에서 눈에 띄었다.
- MissForest를 이용해 labeling 안된 train data를 validation data와 합친 후 missing label을 imputing하는 접근방식이 있었다. RandomForest 모델과 유사한 방식으로 missing label을 유추하여 imputing하고, 이후 지도 학습 모델을 적용하는 방식이었다. 이러한 느낌의 접근방식이 꽤 많았다. 엄밀히 보면 data leakage 아닌가 하는 의문이 드는데, 주최측도 입장을 모호하게 하여 실제 상위권 팀들 코드가 다 이런 느낌이었다.
- Auto encoder을 이용한 이상치 탐지가 흥미로웠다. 오히려 더 많은 차원으로 늘렸다가 차원을 축소하는 과정에서 noise가 별개의 feature로 분리 후 축소하는 과정에서 제거된다는 발상인데, 실제 auto encoder의 활용이 critical한 성능을 보였던 것 같다.
- 내가 발제한 문제라 직접 풀어보진 못했지만, 비지도학습의 영역이라 역시 더 다양한 모델과 접근방식이 있어 흥미로웠던 것 같다. 별개로, data leakage에 대해 계속 여러가지 의문이 드는 것도 사실.
스터디 논의 내용
Point Biserial Correlation
continuous + categorical => linear regression? → 적합할 수도 or 안 좋을 수도
→ general method X
- correlation between continuous and categorical data
- point biserial correlation
- biserial correlation
PBC : categorical 데이터를 0, 1로 encoding하고 pearson 상관계수 구한 것과 같음
https://lh6.googleusercontent.com/lj2cLk5_ktSW-_p_cQKGaJMGsvYibEFLY4o3nqQRYxumePkXaq9QRG_EgUV4VwXu9HYvcgYTfXkxHGqARtMm842VT1X8HHzGY7Cp_jV_Y-mhZVkO2PvIP3uMN3ZimZu51HcUkXCKqdycWHMdrBuVtkm573DjIYPqZSbuP6hXyeXoV1H8ZZ0liytnGvj5BA
M0 = the mean of the data from group 0.
M1 = the mean of the data from group 1.
Sy = the standard deviation of the continuous data.
n0 = the number of items in group 0.
n1 = the number of items in group 1.
n = the number of items in both groups together (aka the total rows in the data set).
PyOD
Anormaly dection library
SMOTETomek
imbalance data 처리 library → upsampling + downsampling
Topic
SVD & PCA
Code
Github