삼성 SDS Brightics 서포터즈 3기

[Brightics 서포터즈] 팀 분석 프로젝트 (3편)

시워내 2022. 8. 31. 00:09

 

 

안녕하세요! 우주선 탑승 승객 예측하기

팀 프로젝트 세 번째로 찾아왔어요.

오늘은 EDA와 전처리를 진행했던

지난 시간에 이어서, 2차 전처리와

모델링까지 포스팅을 할 예정입니다.

먼저 2차 전처리 과정을 살펴보도록 해요.

 

 

< 두 번째 전처리 >

EDA와 첫 번째 전처리 했던 것을 바탕으로

예측에 더 도움이 될 수 있는 방향으로

전처리를 진행하고자 했어요.

이를 위해, 변수마다 어떤 패턴이 있는지

의견을 나누고 캐글 코드를 찾아보았습니다.

먼저 추가적인 파생 변수를 생성하였어요.

Α. 우주선 탑승객들이 이용한 편의 시설의

사용 총 금액 변수 생성

(Roomservice, spa, vrdeck, foodcourt, shoppingmall)

B. vip 변수를 추가 드롭

C. Passengerld에서 grop, grop size 피처 생성

D. Cabin에서 Cabin_deck, side 피처 생성

 

 

 

다음으로는 결측치 처리를 진행했는데요.

처리해야 하는 결측치는 아래와 같았습니다.

[Homplanet, Destination]

만일, Homeplanet이 결측치고

Destination의 목적지 변수가 TRAPPIST-1e라면

TRAPPIST-1e에서 가장 많은 비율을 차지하는

Homplenet 변수로 결측치를 대체하였습니다.

두 변수의 상관관계를 통해 처리한 것인데요,

이를 위해 브라이틱스 Stacked Column

그래프를 그려 각각의 비율을 확인했습니다.

Homeplanet None 값 중,

목적지가 TRAPPIST-1e라면 Earth로 대체

목적지가 PSO J318.5-22라면 Earth로 대체

목적지가 55 Cancri e라면 Europa로 대체

어떻게 비율을 확인할 수 있을지 고민이

되었는데 브라이틱스의 그래프 기능 덕분에

결과를 손쉽게 알 수 있었습니다!

Add Column을 이용해 조건을 넣어주었고,

null 값이 없는 Homplanet 변수를 최종적으로

만들 수 있었답니다. Destination도 위와 같은

방식으로 처리를 진행했어요.

[Cabin]

Cabin 변수는 컬럼별 최빈값을 도출

결측치를 대체하였는데요. 이 부분은

팀원 중 한 분께서 파이썬 스크립트

이용하여 처리해 주셨어요.

브라이틱스는 자유 자재로 코드 또한

이용이 가능해서 편리하다는 생각을

또 한 번 했답니다 😳

[CryoSleep]

다음은 CryoSleep 변수의 결측치 처리입니다.

지난번 멘토님께서 CryoSleep 변수에 대해

더 살펴보면 좋을 것 같다고 코멘트해 주셨는데요,

회의를 진행하다 보니 한 가지 패턴을

알 수 있었습니다.

CryoSleep는 쉽게 생각해 냉동인간 상태인데요.

냉동인간으로 우주선에 탑승한 사람들의

서비스 사용을 살펴보니 0 혹은 결측치만

존재하였습니다.

당연히! 냉동 수면 중이니 룸서비스, 스파,

쇼핑물 같은 편의 시설을 이용하지 못했겠죠.

 

다만 서비스를 이용하지 않았다고 해서

모두가 냉동인간인 것은 아니니 이 부분을 주의해

나머지 결측치 처리를 진행했습니다.

 

 

< 모델링 >

마지막 단계인 모델링 부분입니다.

모델 선택을 위해 캐글 코드 공유 부분에서

사람들이 사용했던 모델들을 리스트업 하고,

브라이틱스에서 사용 가능한 모델 두 가지를

선별하였습니다.

( Random Forest, XGB 모델 )

모델링을 위해서

Add Function Columns 함수를

사용해 로그 변환을 진행하였는데요,

0쪽으로 치우친 변수를 고르게 분포시키기 위해

소비 변수들에 로그 변환을 적용합니다.

라벨 인코더 함수를 통해 범주형 변수들을

CryoSleep, Destination, Transported, Cabin_Deck, Cabin_Side, Homeplanet2

숫자 변수로 변환해 주었습니다.

마지막으로 두 가지 모델을 선택해

요리조리 잘 이어준 다음에

Select Column을 통해 최종 예측 결과를

확인할 수 있었습니다!

 

이번 분석에서는 전처리 부분이 꽤 길었는데요.

회의를 하며 다양한 아이디어를 주고받았고,

여러 가지 방법을 적용해 보느라 그랬네요.

확실히 팀 회의를 진행하니 혼자서는

발견할 수 없었던 부분을 여러 방면에서

캐치할 수 있게 되는 것 같아요.

소감을 마지막으로 이번 팀 프로젝트는

여기서 마무리하겠습니다! 다음 주에도

흥미로운 주제로 포스팅을 이어나갈게요.

그럼 모두 안녕!

 

 

마지막으로 남기고 싶어서 올리는

열쩡 넘치는 회의의 흔적 ….

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