1. 배경: 라벨이 없는 1,000만 건
COMEUP 2020 인공지능 챔피언십에서 우아한형제들이 제시한 과제였습니다. 1,000만 건이 넘는 비식별 주문·리뷰·평점 로그에서 조작된 리뷰와 비정상 거래 패턴을 찾아내는 것이 목표였습니다.
데이터를 열어보고 바로 두 가지를 알았습니다. 데이터는 아주 많고, 정답 라벨은 거의 없습니다.
이는 이상탐지 문제에서 거의 항상 마주치는 상황입니다. 정상 거래는 수백만 건씩 쌓이지만, "이는 조작입니다"라고 확정된 건은 극소수입니다. 확정하려면 사람이 조사해야 하는데 그 비용이 크기 때문입니다.
2. 문제 정의: 기지 패턴에 한정된 탐지
첫 접근은 지도학습이었습니다. 확보된 라벨로 분류 모델을 학습시켰습니다. LightGBM을 썼습니다. 표 형태 데이터에서 성능이 좋고, 학습이 빠르며, 어떤 피처가 판단에 기여했는지 볼 수 있기 때문입니다.
알려진 패턴에 한해서는 유효한 결과를 얻었습니다.
다만 이 접근에는 구조적인 한계가 있었습니다. 지도학습 모델은 학습 데이터에 있던 패턴만 배웁니다. 조작 수법은 계속 바뀌는데, 새로운 방식이 등장하면 모델은 이를 정상으로 봅니다. 라벨이 만들어지려면 누군가 그 수법을 발견하고 조사해서 확정해야 하는데, 그동안 모델은 계속 놓칩니다.
이미 아는 것만 잡는 탐지기는, 가장 중요한 것을 놓칩니다. 새로운 수법이야말로 아직 대응책이 없어서 피해가 큰데 말입니다.
3. 기술적 난점
라벨 불균형이 극심했습니다. 정상이 압도적으로 많으니, 모델이 전부 "정상"이라고 답해도 정확도가 99% 넘게 나옵니다. 정확도라는 지표 자체가 의미가 없어지는 구간입니다.
"정상"의 정의도 모호했습니다. 어떤 가게에 리뷰가 갑자기 몰리는 게 조작일 수도 있지만, 방송에 나왔거나 이벤트를 했을 수도 있습니다. 단일 신호로는 판단이 안 됐습니다.
미지의 유형은 정의상 예시가 없습니다. 앞으로 나올 수법의 데이터를 미리 모을 방법은 없습니다. 그러니 "새로운 것을 찾는" 능력은 라벨로부터 배울 수 없습니다.
4. 대안 검토
1안. 지도학습만 쓰고 라벨을 더 모은다
- 장점: 구조가 단순하고 알려진 패턴에 정확합니다.
- 단점: 라벨링 비용이 계속 듭니다. 그리고 아무리 모아도 미지 유형은 원리적으로 커버되지 않습니다. 항상 한 발 늦습니다.
2안. 비지도 이상탐지만 쓴다
정상 데이터의 분포를 학습하고 거기서 벗어나는 것을 이상으로 봅니다.
- 장점: 라벨이 필요 없고 새로운 유형도 잡습니다.
- 단점: 오탐이 많습니다. "평소와 다르다"가 곧 "조작입니다"는 아닙니다. 정상적인 이례 현상까지 전부 걸러내면 운영이 불가능합니다. 그리고 왜 이상인지 설명하기 어렵습니다.
3안. 둘을 결합합니다
지도학습으로 알려진 패턴을, 비지도 이상탐지로 미지 유형을 잡습니다.
- 장점: 서로의 사각지대를 덮습니다.
- 단점: 두 모델을 관리해야 하고, 결과를 어떻게 합칠지 정해야 합니다.
5. 설계 결정 및 근거
3안, 하이브리드 구조를 골랐습니다.
결정의 근거는 두 모델의 실패 방식이 다르다는 점이었습니다.
- 지도학습(LightGBM)은 아는 것에 강하고 모르는 것에 약합니다.
- 비지도 이상탐지(Deep SVDD)는 모르는 것을 잡지만 정상을 자주 오해합니다.
실패하는 지점이 겹치지 않으니, 합치면 서로를 보완합니다. 반대로 비슷한 성격의 모델 두 개를 앙상블했다면 같은 것을 함께 틀렸을 것입니다.
모델별 역할 분담
LightGBM · 알려진 패턴 담당. 확정된 라벨로 학습시켜, 이미 파악된 조작 수법을 높은 정확도로 걸러냅니다. 여기서는 왜 걸렸는지 설명할 수 있다는 점이 중요했습니다. 트리 기반이라 어떤 피처가 판단에 기여했는지 볼 수 있어서, 운영자가 조사할 때 근거가 됩니다.
Deep SVDD · 미지 유형 담당. One-Class 방식입니다. 정상 데이터만 가지고 "정상들이 모여 있는 영역"을 학습한 뒤, 그 영역에서 멀리 떨어진 것을 이상으로 봅니다. 조작 데이터를 전혀 안 보고도 동작한다는 게 핵심입니다. 라벨이 없어도 되니 라벨링 병목에서 자유롭습니다.
피처 엔지니어링
모델 선택보다 시간을 많이 쓴 건 피처를 만드는 일이었습니다.
원본 로그는 개별 주문과 리뷰의 나열입니다. 그 자체로는 조작 여부를 알 수 없습니다. 조작은 한 건에서 드러나지 않고 패턴에서 드러납니다. 그래서 도메인 지식을 바탕으로 파생 변수를 만들었습니다. 시간대별 집중도, 계정과 가게 사이의 관계 특성, 평점 분포의 치우침 같은 것들입니다.
여기서 배운 게 있습니다. 개별 레코드를 보면 아무것도 아닌데 집계하면 이상해 보이는 것이 이상탐지에서 찾는 신호였습니다. 어떤 단위로 묶어서 볼 것인가가 모델 선택보다 결과에 큰 영향을 줬습니다.
6. 실험 결과
이 솔루션으로 COMEUP 2020 인공지능 챔피언십 배달의민족 부문 우승과 중소벤처기업부 장관상을 받았습니다. 평가는 알고리즘 정확성만이 아니라 서비스 실현 가능성과 사업성을 함께 봤습니다.
기술 스택은 이랬습니다.
| 구분 | 사용 기술 |
|---|---|
| 데이터 처리 | Python, Pandas, NumPy |
| 지도학습 | LightGBM |
| 비지도 이상탐지 | Deep SVDD (One-Class) |
| 규모 | 1,000만+ 건 비식별 로그 |
기술 검증에서 끝내지 않고 실제 운영 시스템에 어떻게 붙일지까지 설계한 것이 평가에 크게 작용했습니다. 탐지 결과를 어떤 임계값으로 자를지, 걸린 건을 누가 어떤 순서로 검토할지, 오탐이 났을 때 어떻게 되먹임할지를 함께 제안했습니다.
7. 결론 및 시사점
앙상블은 성능이 아니라 실패 방식을 기준으로 짜야 합니다. 초기에는 "정확도가 높은 모델 두 개를 합치면 더 좋아지겠지"라고 막연히 생각했습니다. 실제로 효과가 있었던 건 서로 다른 이유로 틀리는 모델을 합쳤을 때였습니다. 같은 데이터를 같은 방식으로 보는 모델을 여러 개 두면 함께 틀립니다.
라벨이 없다는 건 제약이지 한계 조건일 뿐입니다. 라벨이 부족하면 보통 "데이터를 더 모으자"로 갑니다. 하지만 정상 데이터만으로 배울 수 있는 것이 있습니다. 무엇이 이상한지 배우는 대신 무엇이 정상인지 배우는 것으로 문제를 뒤집으면, 라벨 없이도 갈 수 있는 길이 열립니다.
이상탐지에서는 정확도가 지표가 되지 못합니다. 불균형이 심하면 아무것도 안 잡아도 99%가 나옵니다. 무엇을 놓쳤는지와 얼마나 잘못 걸었는지를 따로 봐야 하고, 그 둘의 균형점은 기술이 아니라 운영이 감당할 수 있는 검토량이 결정합니다. 모델을 만들 때 "이 결과를 누가 어떻게 처리하는가"를 같이 생각해야 한다는 걸 이때 배웠습니다.
