FDS 관련 세션들의 후기
카카오페이, 카카오게임즈
# 카카오페이
FDS란
평소와 다른 금융 패턴을 감지하는 시스템(이상거래 탐지)
기본 구조
송금, 결제 등 액션 <-> HTTP <-> FDS * 실시간 처리
FDS는 형태정보 등 DB와 연동하여 실시간으로 이상거래 탐지
하지만 이상거래를 적극적이고 실시간으로 확인하는데 어려움을 겪어 카카오는
RMS(Risk management system : 잠재적인 위험 관리 시스템)를 개발함
RMS 개발 요구조건
1. 서비스와 최소한의 디펜던시
2. 룰 + 모델을 활용한 실시간 모니터링
3. 모든 지표를 파악할 수 있는 대시보드 필요
이걸 활용하기 위해 Kafka / Akka를 활용한 Event driven 아키텍쳐를 활용.
RMS 아키텍쳐의 구성
Kafka
Wormhole / Rule Engine / Dashbord
Airflow/MLflow / Goldenbell
Data Warehouse
Rule Engine 구성
Kafka로 데이터 들어옴(이벤트) ->
Akka Stream ->
Rule Fame shard ->
Cluster ->
Filer Condition(이벤트 단건) / Redis, Druid Condition(DB활용) / Model Condition(모델링 활용)
아는 내용이 아니라서 잘 모르겠다.
데이터는 Redis에 올리고, 방식은 Airflow를 사용했다고 한다.
RMS의 DB
Redis / Druid(실시간 통계 조회 *{롤업 등} 이 쉬움) / Mysql
FDS에서 사용하는 모델
비지도 / 지도 / 룰베이스
비지도학습
군집에서 벗어난 이상치를 검출하는 방식
장점 : 기존에 확인하지 못한 새로운 행동 관찰, 새로운 사기수법 인지 후 차단
단점 : 평가 기준 부재, 무언가를 잡는다는 목적으로는 위력이 약함
지도학습
장점 : 높은 정확도
단점 : 라벨링 데이터 확보 문제, 변화하는 사기방법에 대한 유연한 대응이 불가능
룰 베이스
장점 : 빠른 대응, 명확한 이해
단점 : 유연성이 떨어짐. 사람이 많이 필요함.
이 3가지로는 부족하다 판단, 한 계좌에서의 탐지가 아닌 전체 계좌간의 관계를 파악해보고자 했다.
관계(Relation)
Graph Network를 만듬
계좌들간의 군집을 통해(계좌 네트워크 생성) 수상한 계좌를 판단하여 추적.
추가로 사기도박의 경우 생성/소멸 주기의 특이점을 찾을 수 있었음.
가정 : 급격한 소멸 계좌 = 급격한 상승 계좌
이 역시 관계를 이용하여 계좌 네트워크를 추적할 수 있었음.
거래 데이터를 통해 네트워크 파악 후 그래프 임베딩을 통해 Network Feature 추출 / 블랙리스트 파악, 추적 작업을 함
추출된 Network Feature를 통해 관계 위험도를 산출, 모델에 활용하였다.
또한 과거의 행적을 반영해보고 싶었다.
행적(History)
헬릭스(Helix) 구조로 접근해보았다.
나선계단(1층 당 24시간) 형식으로 과거 행적을 시각화해서 모니터링했다.
주요 거래 시간 등을 DBSCAN등을 활용하여 확인할 수 있었다.
거래 속도를 파악하기 위해 라디안 거리(?)와 위와 같이 DBSCAN을 활용하였다.
전체적인 구조는
거래 데이터(ID, Amount, Day, Radian) ->
Helix 구조 형성(Pyspark 시각화) ->
거래속도 파악(평균, 최소) / 주요 거래시간 파악(DBSCAN 활용) / 단기간 연속거래횟수 파악(DBSCAN 활용) ->
행적관련 Feature 생성
다양한 방법으로 Feature를 생성한 것이 대단하다는 생각이 들었다.
# 카카오게임즈
1. AutoEncoder를 사용(행동데이터)
유저 하나하나당 row(Action) columns(Time)을 사용 CNN 모델을 돌린다.
AutoEncoder를 사용해 입력된 데이터와 출력된 데이터 간 차이가 발생한 값을 찾을 수 있다.
해당 값들이 발생한 실 데이터를 활용하여 이상거래를 탐지한다.
또한 Test Set에서 모델을 돌릴 때 Loss가 갑자기 높아지는 지점의 실 데이터를 확인할 수 있다.
2. CNN(행동 + 이득 데이터)
행동과 이득의 밸런스를 파악하여 유사행동의 이득을 학습, 이상치를 검증한다.
즉 1번과 똑같은 방식을 사용하지만 추가로 모델의 최종 결과값과 유사행동의 예상 이득간의 차이를 확인한다.
3. CNN + GAN
불균형 데이터라 생기는 문제점인 정확도, 과적합, 해석의 어려움 등을 해결하기 위해 GAN을 응용한 방법을 사용했다.
Fake Data를 함께 학습시켜서(Dropout, Regulazation 과 같은 레벨이라고 말한다.) 조금 더 높은 성능을 얻었다고 한다.
성능의 순서는 당연히 1 < 2 < 3이라고 한다.