삼성SDS Brightics/브라이틱스 서포터즈

[삼성SDS Brightics] FDS 이상거래 탐지 #5편- 머신러닝 모델링 (Random Forest, XGB, AdaBoost)

비전공생's 2022. 11. 1. 21:23

 

안녕하세요

삼성SDS Brightics 서포터즈 3기, 비전공생입니다!

 

 

지난 주에는 Decision Tree Classification 모델을 통해 학습을 진행해보았는데요.

이상거래인 label 1을 기준으로 보았을 때, Precision 1%, Recall 41%로 안좋은 결과를 보였습니다.

이번에는 Random Forest, XGB, AdaBoost 분류 모델 3가지를 모두 진행해보고,

성능을 비교해보는 시간을 가져보려고 합니다!

그 전에, 제가 지난 주에 Test 데이터에 정규화를 적용할 때

Train과 동일한 모델로 적용하는 것을 놓쳤기 때문에,

그 부분을 먼저 수정하고 진행하도록 하겠습니다.

0. Noramalization Model

Train Set에서 진행한 정규화를 기반으로, 모델을 선택해줍니다.

​아래의 모습처럼 화살표로 이어주면 되겠죠!

 

테이블에는 Test 데이터가, 모델에는 Train 데이터를 정규화했던 모델이

아래의 모습처럼 잘 들어갔다면, 완료입니다!

오늘 비교해볼 3가지 모델링의 흐름도를 먼저 넣어보았습니다.

Random Forest, XGB, AdaBoost 순으로 학습을 진행해보겠습니다!

 

1. Random Forest Classification

첫번째로, 랜덤 포레스트 분류 모델로 Train 데이터를 학습시켜보겠습니다.

지난 주 오버샘플링을 진행했던 Train 데이터를 table로 선택한 후 학습을 진행했습니다.

랜덤 포레스트 학습 결과값입니다.

영향력이 높은 변수들을 확인할 수 있는데요!

V4, V11, V14가 상위권에 포함되어 있네요.

학습된 모델을 기반으로, Test 데이터에 적용해보겠습니다!

앞에서 Train 데이터와 동일한 모델로 정규화를 진행한 Test 데이터를 테이블로 선택하고,

모델은 방금 전 학습시킨 Random Forest Classficaiton Train을 선택해줍니다.

Evaluate Classificaiton 함수를 통해 평가 지표를 확인해보겠습니다.

Accuracy 99%, f1 83%, Precision 86%, Recall 81%의 결과가 나왔습니다!

지난 주 트리 모델 성능과 비교하면 정말 많이 개선된 것 같습니다 :)

불균형 데이터에서는 f1 지표가 중요한 것으로 알고있는데요.

Recall이 올라갈수록, Precision이 내려갈 수 있기 때문에

f1이 그 둘의 밸런스(?)를 설명한다고 볼 수 있을 것 같습니다.

Recall 혹은 Precsion이 0에 수렴할수록, f1도 0에 수렴하게 되는 구조입니다.

2. XGB Classification

다음으로는, XGB 분류 모델을 통해 Train 데이터를 학습시켜보겠습니다.

마찬가지로 정규화된 Train 데이터를 table로 선택한 후 학습을 진행합니다.

중요도가 높은 Feature들을 아래와 같이 확인할 수 있습니다.

위와 동일하게 V4, V14가 중요도가 높게 나오네요!

마찬가지로 이번엔 Test 데이터에 조금 전 학습시킨 XGB 분류 모델을 적용해보겠습니다.

그 결과를 평가 지표로 확인해보겠습니다.

이번엔 Accuracy 98%, f1 21%, Precision 12%, Recall 91%의 결과가 나왔습니다!

랜덤 포레스트에 비해 Recall(재현율)은 90%대로 올라갔지만,

위에서 말씀드린 것처럼, Precision은 급격히 낮아졌습니다.

그래서 f1값을 보시면, 21%로 낮아진 것도 확인할 수 있습니다.

3. AdaBoost Classification

마지막으로, AdaBoost 분류 모델을 통해 Train 데이터를 학습시켜보겠습니다.

위 2 모델과 동일하게 정규화된 Train 데이터셋을 선택해 진행합니다.

이번에도 중요한 Feature 상위권에 V14, V4가 포함되어 있네요.

마찬가지로 학습시킨 AdaBoost 모델을 Test 데이터에 적용하였습니다.

그 결과를 평가지표로 확인해보겠습니다.

이번에는 Accuracy 98%, f1 14%, Precision 7%, Recall 90%의 결과로,

마찬가지로 Recall(재현율)은 90%대를 유지하고 있지만, XGB보다도 Precision(정밀도)가 낮아졌고

그에 따라 f1도 더 낮아진 것을 확인할 수 있습니다.

4. 모델 성능 비교

이번 주에는 3가지 모델로 Train, Test를 진행해보았는데요.

그럼 간단히 3가지 모델의 평가 지표를 비교해보도록 하겠습니다.

 

 

 

이렇게 정리가 되었는데, 랜덤포레스트는 4가지 지표 모두 80% 이상으로 안정적인 한편,

XGB와 AdaBoost는 Recall은 90%로 더 높지만, Precision이 너무 낮고, 이에 따라 f1도 낮은 결과를 얻었습니다.

 

따라서 저는 랜덤포레스트 모델로 선정을 하고, 거기서 어떻게 더 성능을 높일 수 있을지,

그리고 추가로 불균형 데이터 처리 기법을 다르게 하였을 때의 결과값 비교를 진행해서

마지막 정리를 해보도록 하겠습니다!

 

 

***

그리고 추가로!

브라이틱스 서포터즈 3기의 활동으로,

팀원들과 함께 열심히 촬영하고 편집한 영상이 업로드가 되어서,

홍보 차 내용을 공유드립니다.

https://www.youtube.com/watch?v=DvC7OUwfLSo&list=PLc50BLDT6Bv7-G5UO5Y4zBgJr9488coa1&index=3

 

 

많이 민망 머쓱했찌만, 팀원 모두가 열심히 연기에 참여하였답니다!

재밌게 시청해주시고, 좋아요와 댓글까지 부탁드려요~!

그럼 오늘도 긴 글 읽어주셔서 감사드리고,

다음주에 다시 찾아뵙겠습니다!

*본 포스팅은 삼성SDS Brightics 서포터즈 3기 활동의 일환으로 작성하였습니다.

#삼성SDS_Brightics #Brightics_Studio

#브라이틱스#모델링#데이터분석#datascience

#브라이틱스#서포터즈 #노코드AI오픈소스