BLOG

인사이트/블로그

Pitney Bowes, 머신러닝 예측모델을 통해 사기주문을 적발하다(하)- DAVinCI LABS

루이
2022-03-10

피트니 보우스의 해외배송 사기주문을 잡아낸 이야기를 간단하게 알아보았습니다. 정확히 어떤 알고리즘을 거쳤는지, 어떤 과정이 있었는지 자세히 알기 위해 이번에도 역시 다빈치랩스를 돌려보지 않을 수 없겠죠?


구글 AutoML Tables에 사용됐을 데이터를 가져와 아일리스의 AutoML 솔루션 다빈치랩스에 적용시켜봅시다!


다빈치랩스 모델 구현은 크게 3단계: 데이터 업로드- 모델 생성- 테스트 로 나뉩니다.


아일리스의 AutoML 솔루션 다빈치랩스 

데이터 업로드부터 목표 변수 도출까지 모두 책임진다


1. 데이터 업로드 및 목표변수 선택

 Train-Test 데이터를 8:2 비율로 나누는 것 기억하기


거래정보(Transaction)와 신상정보(Identity)를 하나의 파일로 합쳤습니다. 그리고 나서 이 파일을 학습을 위한 데이터 80%, 테스트를 위한 데이터 20%로 나눠봅니다.

 ※train: test의 파레토 비율에 대한 설명은 Lending Club (하) 편에 있습니다. 다음 포스트에서 더욱 면밀히 다룰 예정입니다. 


train: test = 80:20 비율로 csv 쪼개기 완료!


 이제 이 따끈따끈한 데이터를 다빈치랩스에 업로드해봅시다. 사기여부를 구한다는 목표를 확실히 설정하고 출발하는 첫 단계입니다. 


사기탐지 데이터 업로드

사기탐지 지도학습 프로젝트 추가

 주어진 데이터를 올려 미리보기로 잘 골랐는지 확인하고, 새 프로젝트를 생성합니다.


 다빈치랩스는 데이터에 대한 전문지식 없이도 양질의 데이터를 table data형식으로 구비하고 있다면 쉽고 빠르게 원하는 값을 얻을 수 있도록 설계되어 있습니다. 디바이스에 저장된 자료를 첨부해 새 프로젝트를 추가한다는 버튼을 클릭함과 동시에 바로 다빈치랩스가 다음 단계로 안내합니다.


사기탐지 타겟필드 선택하기

사기탐지 isfraud 타겟 설정하기


타겟필드, 즉 목표변수를 선택합니다. isFraud(사기여부)가 우리가 얻고자 하는 값!

입력변수 가짓수가 433개나 됩니다 세상에...


입력변수가 x축에 있다면, 도출되는 목표변수는 y축에 있는 지표겠지요? 우리가 목표로 하는 값은 사기주문인가 아닌가이므로 "isFraud"를 타겟 필드로 선택합니다. 


▶▶ 무시변수 설정하기

거래 ID는 의미가 없는 변수이므로 '무시함'을 선택합니다. 

머신러닝 데이터 필요 없는 데이터 무시하기

거래 ID는 중요치 않으니 무시변수로 처리


▶▶ 상관관계 차트 확인하기


머신러닝 상관관계 차트

언제나와 같이 변수들간 상관관계를 파악할 수 있도록 차트가 제공됩니다. 


이렇게 다빈치랩스에서는 한 눈에 변수 간 관계가 들어올 수 있도록 상관관계 차트를 제공하고 있습니다. 변수간 관계를 파악해서 추후 데이터를 가공하거나 더 유용한 곳에 쓰일 수 있도록 하죠.

왼쪽 상단의 선명한 빨간색 직사각형이 보이시나요? C10, C4, 12, 그리고 C10, C8,C4,C7,C12는 서로 완전한 상관성을 띕니다. 변수상관성이 1인거죠. 아마 실제로 아주 끈끈하게 엮인 카드정보들일 가능성이 농후합니다. 


데이터를 업로드해 새 프로젝트를 만들었으면 이제 본격 학습으로 들어가볼까요?




2. 모델 생성

클릭 몇 번으로 손쉽게 모델 탄생 


다빈치랩스가 이번 모델에는 13가지의 분석 알고리즘을 제공하네요. 모두 다 돌려보아 가장 적합한 후보군을 추려보겠습니다. 


머신러닝 알고리즘의 종류

열세가지 알고리즘 다 돌려볼거야 놓칠 수 없어 (오토튜닝 옵션도 제공되지만 기본 설정대로 진행해도 충분합니다)


머신러닝 데이터 분할 옵션 언더샘플링 오버샘플링

데이터 옵션, 출력옵션 등등이 모두 제공됩니다. 편의를 위해 전부 디폴트 설정으로 진행합니다!


개발 세트와 검증세트가 80:20 비율로 나뉜 것 보이시죠? 

이제 이 모든 데이터를 학습시키도록 하겠습니다! 

미안 이번엔 공부량이 좀 많지..?ㅎ그치만 시험보려면 열심히 배워라 다빈치랩스!


3. 테스트

몇 번의 클릭으로 추천받은 모델을 몇 번의 클릭으로 테스트하자


gradient boosting machine 머신러닝 학습 결과

Gradient Boosting Machine이 제일 적합하다고 추천하네요!


학습을 완료한 기계가 10개 이상의 분석틀 중 'Gradient Boosting Machine'을 추천합니다. 그 다음으로 성능이 좋다고 뜨는 것은 선형 모델, 릿지 회귀, 그리고 로지스틱 회귀 등이 있네요. 가장 적합하다고 뜨는 'Gradient Boosting Machine'으로 테스트 모델을 돌려보겠습니다!


이때 잊으면 안되는 것이 있죠: 바로 트레인 데이터가 아닌 새로운 테스트 데이터로 모델을 돌려야 한다는 것! 80대 20의 비율로 학습량과 시험분량을 나누는 이유, 이전 포스트에서 말씀드렸는데요, 이와 함께 많이들 헷갈려하시는 검증(validation) 세트에 대한 포스팅은 다음 시간에 다루도록 할게요. 


테스트 데이터 불러오기

기존에 사용한 자료는 train, 즉 학습용이니 이제 새로운 데이터 원본을 올려야죠! 빨간 상자 부분을 클릭해 test.csv를 올립니다.


테스트 데이터세트 불러오기

새로운 데이터셋 입력 완료! train이 아니라 test라고 떠있는 것 보이시죠?


이렇게 새 데이터 원본 버튼을 클릭해 피트니 보우스 관련 정보의 테스트 데이터를 올리고 나면 새로운 데이터셋으로 이제 다빈치랩스는 시험을 보게 됩니다. 결과를 함께 봅시다.


머신러닝 테스트세트 검토 결과

학습과 시험의 결과가 서로 다르다고 하네요! 이런 문제는 학습데이터와 신규데이터에서 동일한 범주형 필드의 구성비가 달라지면 나타나기도 합니다. 하나의 파일에서 랜덤으로 80:20으로 데이터를 추출하는거라 전부 자료가 균일하다고 볼 수 없겠죠. 그리 문제될 것이 아니므로 넘겨도 좋습니다. 


머신러닝 학습세트와 테스트세트 비교

상이한 통계 수치를 파악할 수 있도록 데이터 원본을 비교한 파일도 제공하는 센스!


테스트를 거쳐 산출된 타겟 필드값을 한번 볼까요? Is_Fraud 예측값을 살펴봅니다. 


타겟예측값 다운로드 target prediction

사기주문 5번 당신 딱 걸렸어


1의 확률로 사기주문일 것이라는 5번 결과가 보이시나요? 이런 경우 서비스팀은 바로 5번에 대한 수사망을 좁혀 잡아내게 됩니다. 나머지 결과값들은 괜찮아보이네요. 이렇게 예측모델을 통해 5번이라는 사기주문을 포착해내게 됩니다. 




이렇게 피트니 보우스가 방대한 양의 자료를 기계에 학습시켜 원하던 산출물을 얻어내는 과정을 아일리스의 머신러닝 솔루션 다빈치랩스를 통해 구현해보았습니다. isFraud= 0이면 정상주문, 1이면 사기주문이라는 직관적인 결과에 수렴한다는 것이 굉장히 흥미롭네요. 


input과 output이 명확하게 설정된다면 그리고 데이터 퀄리티가 좋다면 뭔들~


 다빈치랩스의 인공지능 오토 머신러닝 솔루션의 구현과정을 지켜보신 소감, 어떠신가요? 생각보다 쉽지 않나요? 


분석 알고리즘의 과정을 이해하지 못하더라도, 전문적인 지식이 없더라도, x값과 y값이 무엇인지 명확히 규명한 깔끔한 데이터가 있다면 1. 변수들간 상관관계뿐만 아니라 2. 예측값도 새롭게 얻어낼 수 있다! 또 3. 가장 확실한 예측값을 얻어내기 위한 최고의 분석틀도 추천받을 수 있다! 다빈치랩스가 제공하는 기능들입니다.


피트니 보우스의 배송 사기주문 적발 사례를 통해 AutoML에 대한 이해에 한 발짝 더 가까워지셨길 바라며 다음 시간에 train, validation 그리고 test에 대한 포스트를 가지고 찾아오겠습니다!