Machine Learning

Machine Learning - 주성분 분석과 Logistic Regression을 이용한 Credit Card Fraud 파악하기

electronicprogrammer 2020. 10. 19. 17:08

데이터 출처 : www.kaggle.com/mlg-ulb/creditcardfraud

 

Credit Card Fraud Detection

Anonymized credit card transactions labeled as fraudulent or genuine

www.kaggle.com

 

github 주소 : github.com/sangHa0411/DataScience/blob/main/Credit%20Card%20Fraud%20Detection.ipynb

 

sangHa0411/DataScience

Contribute to sangHa0411/DataScience development by creating an account on GitHub.

github.com

 

이번 포스팅에서는 Credit Card 결제에서 Fraud에 있는 데이터를 분석해보고 이를 이용해서 Credit Card에서 Fraud를 탐지할 수 있는 Machine Learning에서의 Logistic Regression기반 모델을 만들어보도록 하겠습니다.

 

먼저 데이터를 구조를 확인해보곘습니다.

원본 데이터에 개인 신상 정보가 있기 때문에 이를 주성분 분석하고 이에 대한 데이터가 속성으로 존재하는 것을 확인할 수 있습니다.

주성분 분석에 대해서는 나중에 정리하도록 하겠습니다.

 

먼저 위 데이터를 분석해보도록 하겠습니다.

위에서 확인 할 수 있듯이 데이터에서 fraud에 해당되는 데이터가 0.17%로 매우매우 작다는 것을 확인할 수 있습니다.

 

여기서 주성분 분석된 각 column의 데이터를 분석하기 위해서 fraud와 noraml 데이터를 분할하도록 하겠습니다.

 

이제 분할된 데이터에서 각 성분의 값들에 대한 Histogram을 그림으로써 fraud와 normal에 차이가 많은 성분을 Logisitic Regression을 훈련하기 위한 특성을 선택해보도록 하겠습니다.

 

 ax가 주어지면 해당 ax에 fraud데이터의 인자로 주어진 속성에 대한 histogram

그리고 해당 ax에 normal데이터의 인자로 주어진 속성에 대한 histogram 을 그리는 함수를 정의하였습니다.

 

먼저 첫번째 속성부터 15번째 속성까지 fraud 데이터와 normal 데이터 속성에 대해서 histogram을 그려보도록 하겠습니다.

 

 

 

 

 

 

이제 나머지 남은 속성들에 대해서 Histogram을 그려보겠습니다.

 

 

이제 이렇게 구한 Histogram에서 fraud와 normal의 차이가 많이나는 속성들만을 선택해서 해당 속성들로 Logistic Rregression을 훈련시킬 계획입니다.

예를 들어서 아래와 같이 11번째 주성분 분석된 속성에 대해서는 fraud와 normal의 Histogram의 차이가 분명하니. 이는 중요한 속성으로 여겨집니다. 

그에 비해서 13번째 속성은 fraud와 normal의 차이가 별로 없어보이니 이 속성은 fraud와 normal를 구별하기에는 그렇게 좋은 속성이 아닙니다.

 

이제 속성들을 선택하고 나서 데이터를 훈련데이터 및 테스트 데이터로 분할하도록 하겠습니다.

먼저 속성들을 선택합니다.

데이터를 훈련데이터 및 테스트 데이터로 분할합니다.

 

이제 분할된 데이터의 shape을 확인해보겠습니다.

 

이제 이를 이용해서 Machine Learning에서의 Logistic Regression기반 모델을 훈련해보도록 하겠습니다.

먼저 데이터를 StandardScaler를 이용해서 전처리하도록 하겠습니다.

그 다음 훈련데이터를 이용해서 Logistic Regression 모델을 학습시킵니다.

 

이제 훈련된 Logistic Regression을 이용해서 테스트 데이터를 예측해보고 이를 실제와 비교해보록 하겠습니다.

정확도가 0.999로 매우 높게 측정이 되었습니다.

하지만 구체적으로 파악해보면 True Positive Rate 즉 Fraud 데이터를 실제 Fraud로 분류할 가능성이 47.5%입니다.

그에 비해서 False Positive Rate가 0.1% 즉 Farud 데이터가 아닌데 Fraud라고 분류할 가능성이 0.1%로 매우 작습니다.

이에 Noraml 데이터가 Fraud 데이터보다 훨씬 많기 때문에 모델의 실제 정확도가 99.9%가 된 것으로 분석할 수 있습니다.

 

이번 포스팅에서는 주성분 분석이 이미 된 데이터를 이용해서 Machine Learning을 통해서 Credic Card 결제에서 Fraud를 탐지 해보는 문제를 다루어 보았습니다.

 

다음에 기회가 되면 주성분 분석의 이론에 대해서 정리해보도록 하겠습니다.

 

참고자료 : www.yes24.com/Product/Goods/70969329

 

파이썬 라이브러리를 활용한 머신러닝

사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현 현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없습니다. 사이킷런(scikit-learn)과 같은 훌륭한

www.yes24.com