Credit Card Fraud Detection

hyoring·2022년 3월 24일
1

ML/DL

목록 보기
1/6

Jupyer Notebook 코드링크 입니다.

1. 개요

오늘은 신용카드 이상 거래 탐지에 대해 확인하고 ML, DL을 활용해 문제를 해결하려 합니다.

게임과 같은 산업에서는 부정 어뷰징과 같은 이상현상들이 나타나는 것을 체크하여 유저가 더이상 부정행위를 못하도록 계정을 정지시키기도 합니다. 금융 업계 또한 디지털 전환 시대인 만큼 해커들과 다양한 사기 행위에 노출되어 있습니다.

이상 거래 탐지는 전자상거래 비즈니스에서 매우 중요합니다. 한번의 사기에도 많은 손실이 생길 수 있기 때문입니다. 이 해결을 위해 AI가 얼마나 노력하고 있는지 확인해봅시다!

이 사례 연습을 위해 책을 판매하는 전자 상거래 상점이 있다고 가정하겠습니다. 
지난 몇년동안 이 회사는 수천권의 책을 팔았다고 가정하겠습니다. 
이 거래 내역을 사용하여 이상 거래 탐지 시스템을 구축할 것입니다.

이를 위해 공개적으로 사용가능한 데이터 셋을 익명화된 실제 신용카드 거래와 함께 사용합니다.

😒신용카드 이상 거래 탐지의 가장 큰 문제점 중 하나는 보안 코드와 유효기간이 적힌 신용카드의 15~16자리를 도용할 수 있다는 것입니다.

여기서 이상 거래 탐지를 결정하는 요소는

  • 사용자가 첫 구매인지 확인
  • 구매액이 500달러 이상인지 확인
  • IP가 중국에서 왔는지 확인 ( 신용카드는 미국에서 발급, 사용자 주소는 영국 )

신용카드를 실제로 가지고 있는 사람이 물건을 구입하는건지 훔친사람이 물건을 구입하는 건지 구분하는 것이 목표입니다.

문제는 대다수의 사용자들이 사기를 치지 않을 것이라는 것입니다.
이는 이용 가능한 정보의 근본적인 패턴을 발견하는 것을 어렵게 합니다. 즉 데이터 세트의 불균형이 생깁니다.!

따라서 다른 샘플링 기술을 적용하고
99%의 정확도와 같이 높은 기준치를 사용해야 할 것입니다. 신용카드 사용의 0.1% 정도가 사기인 것으로 추정됩니다. 하지만 매일 일어나는 거래량을 고려하면 0.1%도 아주 많은 금액이겠죠?

😎최종목표는 새로운 거래가 주어지면 그에 상응하는 신뢰도로 사기 여부를 판단할 수 있는 분류기를 구축하는 것입니다.😎

딥 러닝 네트워크를 구축하여 사기 여부를 판단하고 랜덤 포레스트 같은 전통적인 머신러닝 알고리즘을 사용할 것입니다.

2. 데이터

실제 익명의 신용카드 거래 데이터 입니다. 이 데이터 셋은 30만건 이상의 거래와 해당 라벨을 포함하고 있습니다. 익명으로 처리되어 열에는 숫자만 있는 모습을 볼 수 있습니다. 이와 같은 시스템을 구축할 때는 사용자의 개인정보를 보호해야 합니다.

  • class : 1 부정거래, 0 부정거래가 아닌 일반거래

3. Sampling

여기서는 class1의 수가 현저히 적습니다. 위에서 말했듯이 사기를 치는 사람들은 많지 않습니다. 그래서 우리는 샘플링을 통해 균형을 맞춰할 필요가 있습니다.
샘플링의 종류에는 크게 undersampling, oversampling 이 있습니다. 예를들어 6명의 남자와 3명의 여자가 있다고 하겠습니다.

  • undersampling : 3명의 여성과 6명 중 남자 3명만 데려오는 것. 정보가 손실될 수 있고, 이중엔 중요한 정보가 있을 수 있습니다.

    언더 샘플링을 한다면 어떤 정보를 지워야 할지 선택해야합니다. 보통 무작위 샘플로 정하지만 항상 그렇지는 않습니다. 언더 샘플링 후 남는 정보는 전체 데이터 세트를 대표해야 합니다.

  • oversampling : 남성 6명 전원과 여성 3명을 추가로 복제해서 데려옵니다. 존재하지 않는 정보를 만드는 것입니다.

    새로운 정보를 만들어야 합니다. 오버 샘플링 기술 중 smote samle라는 것이 있는데 이것을 문제해결에 사용할 것입니다. 이 기술은 합성 소수 샘플링 기술입니다.

4. 딥러닝 tool

주로 사용할 툴은 TensorFlowKeras 입니다.

  • tensorflow는 우리가 필요로 하는 모든 것을 구현해 줄것입니다. 심층 신경망을 만들고 학습시킬 수 있습니다.
  • keras는 이 과정을 쉽게 만들어 준다 생각하면 됩니다. 몇 줄의 코드로 신경망을 만들고 학습시킬 수 있습니다.
    주피터 노트북을 사용하는 저의 경우
    !pip install tensorflow
    !pip install keras 로 다운받았습니다.

자세한 딥러닝 관련한 포스팅은 따로 해야할 것 같습니다 양과 어려움이 .. 엄청나기때문에 ...

5. 마무리 하며

신용 카드 부정거래 탐지 문제 해결법을 살펴봤습니다. 이를 위해 익명화된 실제 신용카드의 실제 거래 내역 데이터를 사용했습니다. 기존사용자는 방해하지 않으면서 부정 탐지자를 가려내야하는 분류기를 정하는 것이 중요했습니다. 또한 데이터 세트가 불균형하여 즉 정상 거래수가 압도적으로 많았기 때문에 분류기가 학습하는데 더욱 힘들었을 것입니다. 그래서 under and over 샘플링을 해봤습니다!
결정트리, 랜덤 포레스트을 포함한 머신러닝 알고리즘 딥러닝 알고리즘을 사용해봤습니다.
딥러닝 알고리즘에서는 함수인자를 이용해 퍼셉트론과 활성화 함수를 조합하여 밀집레이어를 구축했으며 중간 과적합을 방지하기 위해 드랍아웃 또한 넣어줬습니다. 이로인해 딥 신경망을 구축하고 학습할 수 있었습니다.

아직 딥러닝, 머신러닝 parameter에 관한 함수 인자에 대한 공부가 많이 필요할 것 같습니다. 다음 부터는 시각화에 유용한 tablau와 딥러닝 강의를 시청하며 공부를 시작할까 합니다. 부족함이 많으니 열심히 나아가 보겠습니다.

profile
hyoring2

0개의 댓글