수년 동안 사기꾼들은 신용 카드나 직불 카드에서 숫자를 가져 와서 빈 플라스틱 카드에 인쇄하여 오프라인 상점에서 사용했습니다. 그러나 2015년에 Visa와 Mastercard는 은행과 가맹점에 EMV(칩 카드 기술)를 도입하도록 의무화했으며,이를 통해 가맹점은 각 거래에 대해 PIN을 요청할 수 있었습니다.
그럼에도 불구하고 전문가들은 온라인 신용 카드 사기가 2020년에 무려 32 억 달러까지 치 솟을 것이라고 예측했습니다.
이 금액은 Coca-Cola (20 억 달러), Warren Buffet의 Berkshire Hathaway (240 억 달러), 그리고 JP Morgan Chase (235 억 달러)와 같은 일부 전 세계 우량 기업의 2017년 수익보다 큰 금액입니다.
칩 카드 기술을 구현하는 것 외에도 기업은 사기 거래를 탐지하기 위해 다른 기술에 막대한 투자를하고 있습니다.
분류 문제
머신 러닝에서 사기 탐지와 같은 문제는 일반적으로 분류 문제로 정의되며, 주어진 입력 데이터에 대해서 개별 클래스 라벨 값을 예측합니다.
생각할 수 있는 분류 문제의 예로는 스팸 탐지기, 추천 시스템, 그리고 대출 불이행 예측이 있습니다. 신용 카드 결제 사기 탐지에 대해 이야기하면 분류 문제는 금액, 판매자, 위치, 시간 및 기타와 같은 거래 세부 정보를 기반으로 거래가 정상인지 사기인지 분류하는 모델을 만드는 것과 관련이 있습니다.
전 세계의 해커와 사기꾼은 매 순간 금융 사기를 저지르는 새로운 방법을 항상 모색하고 있습니다. 금융 사기를 감지하기 위해 규칙 기반의 전통적으로 프로그래밍된 시스템에만 의존하는 것은 적절한 시장 출시 시간을 제공하지 않습니다. 여기에서 머신 러닝이 이러한 유형의 문제에 대한 고유한 솔루션으로 빛을 발합니다.
사기 탐지를 분류 문제로 모델링 할 때 가장 큰 문제는 실제 데이터에서 대부분의 거래가 정상이며 사기건은 거의 없다는 데 있습니다. 이를 데이터 불균형의 문제라고 합니다.
불균형 데이터
당신이 선생님이라고 상상해보십시오. 학교 책임자는 각 학생의 최종 학년 결과(합격 또는 실패)에 대한 예측 보고서를 생성하는 작업을 제공합니다. 성적, 결석, 참여 도와 함께 최종 결과, 목표 변수(합격 또는 불합격 일 수 있음)와 같은 이전 학년의 학생 데이터를 분석하여 이러한 예측을 제시해야합니다. 몇 분 안에 보고서를 제출해야합니다.
여기서 “문제”는 당신이 아주 좋은 선생님이라는 것입니다. 그 결과, 시험에 통과하지 못한 학생들이 거의 없었습니다. 학생들의 99%가 기말 시험에 합격했다고 가정 해 보겠습니다.
이제 당신은 어떻게 하시겠습니까?
이 경우 진행하는 가장 빠르고 직접적인 방법은 모든 학생의 100%가 합격 할 것이라고 예측하는 것입니다. 이 경우 정확도는 지난 몇 년 동안 시뮬레이션 할 때 99%가됩니다. 나쁘지 않죠?
이런 방식의 “모델”은 미래의 모든 학생 인구의 특성에 관계없이 정확하고 결함이 없는 걸까요?
확실히 아니죠! 아마도 여러분은 이러한 예측을 수행하는 데 교사가 필요하지 않을 것입니다. 이러한 예측은 아무런 가치가 없습니다. 그리고 데이터 과학자의 가장 중요한 임무 중 하나는 데이터에서 비즈니스 가치를 창출하는 것입니다.
사기 감지의 실제 사례를 살펴보고 데이터 불균형 문제를 해결하는 방법을 알아 봅니다.
신용카드 사기 데이터
신용카드 사기 데이터 세트에는 2013년 9월 유럽 카드 소지자가 신용 카드로 만든 거래가 포함되어 있습니다. 이 데이터 세트는 2일 동안 발생한 거래를 보여 주며, 284,807건의 거래 중 492건의 사기가 있습니다. 전체 거래의 0.172%만이 사기로 매우 불균형한 데이터입니다.
기밀성 때문에 데이터가 익명화되었습니다. 변수 이름은 V1부터 V28까지 V1, V2, V3로 이름이 변경되어 있습니다. 또한 Amount 및 Class 변수를 제외하고 대부분은 스케일링되었으며 Class는 0과 1로 되어 있는 이진 데이터이며, 정상 또는 사기가 표시 되어 있는 대상 변수입니다.
우리의 예측 모델과 분석을 진행하기전에 탐색적 데이터 분석(Explorative Data Analysis, EDA)를 수행하는 것이 좋습니다. 그러나 이것은 대부분의 변수가 익명화되어 컨텍스트를 추가하지 않는 고유한 경우이므로 불균형 데이터 처리라는 문제로 바로 건너 뛰겠습니다.
불균형 데이터를 처리하는 방법에는 여러 가지가 있습니다. 다음 접근 방식에 중점을 둘 것입니다.
- 오버 샘플링 — SMOTE
- 언더 샘플링 — RandomUnderSampler
- 결합된 클래스 메서드 — SMOTE + ENN
방법1: 오버 샘플링(SMOTE)
불균형 데이터를 처리하는 한 가지 인기있는 방법은 오버 샘플링입니다. 오버 샘플링이란 데이터에서 과소 표현되는 클래스에 속하는 데이터 세트에서 관측치를 인위적으로 생성하는 것을 의미합니다.
일반적인 기술 중 하나는 SMOTE — 합성 소수 오버 샘플링 기술(Synthetic Monority Over-sampling Technique, SMOTE)입니다. 높은 수준에서 SMOTE는 소수 집단 (이 경우 사기 거래)에 대한 종합적인 관찰을 생성합니다. 낮은 수준에서 SMOTE는 다음 단계를 수행합니다.
- 소수 클래스 관측치에 대한 k-최근접 이웃 찾기 (유사한 관측치 찾기)
- k- 최근접 이웃 중 하나를 무작위로 선택하고 이를 사용하여 유사하지만 무작위로 조정 된 새로운 관측치를 생성합니다.
많은 SMOTE 구현이 있습니다. 이 경우에는 imblearn 라이브러리의 SMOTE 클래스를 활용합니다. imblearn 라이브러리는 불균형 데이터 문제를 처리하는 데 매우 유용한 도구 상자입니다.
방법2: 언더 샘플링
언더 샘플링은 우세 클래스를 샘플링하여 샘플 수를 줄이는 방식으로 작동합니다. 언더 샘플링의 한 가지 간단한 방법은 과도하게 표현된 클래스에서 소수의 샘플을 무작위로 선택하는 것입니다.
imblearn 라이브러리의 RandomUnderSampler 클래스는 대상 클래스의 데이터 하위 집합을 무작위로 선택하여 데이터의 균형을 맞추는 빠르고 쉬운 방법입니다. 대다수 클래스에서 k-평균 클러스터링을 수행하고 고밀도 중심에서 데이터 포인트를 제거하는 방식으로 작동합니다.
방법3: 결합된 클래스 메서드
SMOTE는 한계 이상 값과 내부 값 사이에 새로운 포인트를 삽입하여 잡음이 있는 샘플을 생성 합니다. 이 문제는 오버 샘플링 후 얻은 결과 공간을 정리하여 해결할 수 있습니다.
이와 관련하여 SMOTE를 편집된 가장 가까운 이웃(ENN)과 함께 사용합니다. 여기서는 더 깨끗한 공간을 얻기 위해 SMOTE 오버 샘플링 후 데이터를 정리하는 방법으로 ENN을 사용합니다. 이것은 imblearn의 SMOTEENN 클래스를 사용하여 쉽게 달성 할 수있는 것입니다.
초기 결과
우리 모델은 사기 거래를 예측하기 위해 Random Forests Classifier를 사용합니다. 불균형 데이터 문제를 해결하기 위해 아무것도하지 않고도 우리 모델은 네거티브 클래스 레이블에 대해 100 % 정밀도를 달성 할 수있었습니다.
이는 불균형 데이터를 다루기 때문에 예상된 것이기 때문에 모델의 경우 모든 것을 네거티브 클래스로 예측하면 오류가 줄어든다는 것을 쉽게 알 수 있습니다.
두 클래스를 모두 고려할 때 Precision에 대한 좋은 결과가 있습니다. 그러나 Recall은 사기의 정확도 만큼 좋지 않습니다.
분석에 차원을 하나 더 추가하고 AUROC (Receiver-Operating Characteristic) 값을 확인하겠습니다. 직관적으로 AUROC는 모델이 두 클래스의 관측치를 구별 할 가능성을 나타냅니다. 즉, 각 클래스에서 하나의 관측치를 무작위로 선택하는 경우 모델이 올바르게 "순위를 매길"수있는 확률은 얼마입니까?
우리의 AUROC 점수는 이미 꽤 괜찮은 수준입니다. 더 개선 할 수 있었습니까?
이제 끝?
불균형 데이터를 처리하기 위해 오버 샘플링, 언더 샘플링 및 결합 된 클래스 접근 방식을 사용한 후 다음과 같은 결과를 얻었습니다.
데이터를 오버 샘플링하기 위해 SMOTE를 사용하여 일부 혼합 된 결과를 얻었습니다. 긍정 등급에 대한 Recall을 5% 개선 할 수 있었으며 False Negative를 줄였습니다. 그러나 그에 따른 대가가 따랐습니다. 우리의 Precision은 이제 이전보다 5% 더 나쁩니다. 기계 학습에서 상충 관계를 기억하는 것은 일반적입니다. 이 특정한 경우에 이것이 우리에게 재정적으로 어떤 영향을 미칠지 분석하는 것이 중요합니다.
한쪽에서는 False Negative의 양을 줄 였을 것입니다. 반면 오탐의 증가로 인해 거래를 사기로 잘못 분류하고 발금된 신용 카드가 취소됨, 새 카드 인쇄, 그리고 고객에게 게시하는 데 드는 운영 비용 증가로 인해 고객을 잃을 가능성이 있습니다.
AUROC 측면에서 약간 더 나은 점수를 받았습니다.
RandomUnderSampler
언더 샘플링은 이 문제에 대한 잘못된 접근 방식으로 판명되었습니다. 회상 점수는 향상되었지만 긍정 클래스의 정확도는 거의 사라졌습니다.
위의 결과는 불균형 데이터 문제를 처리하기 위해 언더 샘플링을 사용하는 것이 좋은 전략이 아님을 보여줍니다.
SMOTE + ENN
SMOTE + ENN은 우리 시나리오에서 최상의 접근 방식임이 입증되었습니다. Precision은 SMOTE와 마찬가지로 5% 페널티를 받았지만 Recall 점수는 7% 증가했습니다.
AUROC 메트릭의 경우 결과도 더 좋았습니다.
요약
이 게시물에서는 불균형 데이터를 처리하기위한 세 가지 접근 방식을 보여주었습니다. 모두 imblearn 라이브러리를 활용합니다.
- 오버 샘플링 (SMOTE 사용)
- 언더 샘플링 (RandomUnderSampler 사용)
- 결합된 접근 방식 (SMOTE + ENN 사용)
핵심 사항
불균형 데이터는 예측 기능에 영향을 미치고 모델이 그렇게 좋지 않다는 사실을 가릴 수 있기 때문에 예측 모델을 구축하는 데 심각한 문제가 될 수 있습니다.
- Imblearn은 불균형 데이터를 처리하기 위한 몇 가지 훌륭한 기능을 제공합니다.
- 데이터에 따라 SMOTE, RandomUnderSampler, 또는 SMOTE + ENN 기술을 사용할 수 있습니다. 각 접근 방식은 다르며 어떤 방식이 다루고 있는 데이터에 더 적합한지 이해하는 것이 중요합니다.
- Precision과 Recall 사이의 균형과 비즈니스 결과를 고려하여 가능한 경우 우선 순위를 지정할 항목을 결정하는 것이 중요합니다.
참고) 위 글의 원문은 아리 링크에서 읽어볼 수 있습니다.
'데이터과학 > 데이터 분석 실습' 카테고리의 다른 글
Step-by-step understanding LSTM Autoencoder layers (0) | 2021.09.08 |
---|---|
LSTM 또는 CNN을 이용한 주가 예측 (1) | 2021.01.31 |
기계 학습 기반의 신용평가 모형 개발과 신용 점수 계산 (1) | 2021.01.20 |
AWS SageMaker를 이용해서 모델 빌드, 배포, 예측하기 (0) | 2021.01.19 |
Prophet을 이용한 주가 예측 (0) | 2021.01.04 |