본문 바로가기

Brightics 서포터즈 3기

[삼성 SDS Brightics Studio]#1-1 브라이틱스로 고객 이탈 여부 예측하기!(전처리.. 왜 필요한 거지?)

 

안녕하세요~ 드디어 3주간 진행되는 개인 분석 프로젝트를 시작합니다!

저는 캐글과 공공데이터 셋을 활용한 미니 프로젝트를 진행할 예정입니다. 이번에는 간단히 실습 겸 고객 이탈 여부 데이터를 가지고 전처리 해보려고 합니다.

1. 분석하고 싶은 데이터 셋을 직접 확보하여 Brightics Studio를 활용한 데이터 분석

2. 하나의 데이터 셋을 활용한 데이터 분석 프로젝트 또는 각각 다른 데이터 셋을 활용한 미니 프로젝트로 진행

3. 캐슬, 공공 데이터 포탈과 같은 오픈 데이터 셋 사이트를 활용

분석에 앞서서 이론을 먼저 정리하고 들어가면 데이터 분석에서 왜 이러한 과정을 거치는지 알 수 있어서 이론을 조금 정리하고 데이터 실습 들어가겠습니다

데이터 전처리(피처 엔지니어링)란?

목적은 모델의 성능을 향상시키는 것을 목적으로 하며, 큰 데이터는 모델의 추정 시간을 줄이는 부가적인 목적을 가지고 있습니다.

주요 피처 엔지니어링 기법들

  • 범주형 변수(Categorical Encoding)의 더미 변수(Dummy encoding)
  • 연속형 변수의 범주화(discretization, binning), 순위화(ranking)
  • 연속형 변수의 표준화(standardization), 정규화(normalization), 로그 변환(transform)
  • Handling Outliers: 결측값 제거, 대체(imputation)
  • Feature Splitting: 변수 분리
  • Creating Features: 변수 만들기

* 머신러닝에서 피처 엔지니어링

머신러닝에서 대부분 데이터의 양이 크기 때문에 각 변수를 원래의 단위로 사용하는 경우는 거의 없습니다

연속형 변수는 범주 화해야 학습 시간을 줄일 수 있고, 변수 변환 시 예측 성능이 높아지는 경우가 많습니다

단, 학습 데이터의 변환 기준을 동일하게 테스트 데이터에 적용해야 합니다

되도록 피처의 수를 줄여 학습시간을 줄이고, 과적합되는 것을 방지해야 합니다.

과적합(Overfitting)이란

과적합은 모델 학습 시, 과도하게 학습 데이터에 적합(fit)하는 것으로 학습 데이터는 잘 맞추는 반면 새로운 데이터는 잘 맞추지 못하는 상태를 의미합니다

https://kimdingko-world.tistory.com/100

결측치란

데이터가 존재하지 않는 것을 말합니다

결측치를 포함하는 데이터는 머신러닝 모형에 적합하지 않은 경우가 많다고 합니다. 데이터 셋을 처음 접했을 때 해야 하는 것은 각 열에 결측치가 존재하는지 확인하는 것 입니다.

(선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 책 참고)

https://www.kaggle.com/

본격적인 분석에 앞서!! 캐글에 들어가서 먼저 회원가입을 하고 로그인을 해주세요.

Search에서 telco customer churn 이라고 검색해 줍니다.

다운로드 버튼을 클릭해 줍니다.

아직 Brightics studio를 설치 안 하신 분들은 아래의 블로그 링크를 참고해 주세요

[Brightics Studio] 데이터 분석.. : 네이버 블로그 (naver.com)

데이터 소개

customerID : 소비자의 식별자

gender : 성별

SeniorCitizen : 노인인지의 여부

Partner : 배우자의 유무

Dependents : 자녀의 유무

tenure : 고객의 가입 기간 (개월 수)

PhoneService : 휴대폰 서비스를 가입했는지의 여부

MultipleLines : 여러 개의 통신선을 서비스 받고 있는지의 여부

InternetService : 인터넷 서비스 제공자 (DSL, Fiber optic, No)

OnlineSecurity : 온라인 보안 서비스를 가입했는지의 여부

OnlineBackup : 온라인 백업 서비스를 가입했는지의 여부

DeviceProtection 기기 보호 서비스를 가입했는지의 여부

TechSupport : 기술 서포트 서비스를 가입했는지의 여부

StreamingTV : TV 스트리밍 서비스를 가입했는지의 여부

StreamingMovies : 영화 스트리밍 서비스를 가입했는지의 여부

Contract : 계약 유형 (Month-to-month, One year, Two year)

PaperlessBilling : 전자 고지서 여부

PaymentMethod : 요금 지불 방법 (Electronic check, Mailed check, Bank transfer (automatic), Credit card (automatic))

MonthlyCharges : 매달 고객에게 청구되는 금액

TotalCharges : 고객에게 청구된 총 금액

Churn : 지난 한 달 내에 떠난 고객인지의 여부

New를 클릭합니다.

Default를 클릭하고 OK 버튼을 누릅니다.

파일명에 _ 가 들어가 있으면 인식을 하지 못하기 때문에 바꿔줍니다.

Statistic Summary (결측치 확인)

Input Columns에서 select all을 클릭해 주고 taget static에서는 null count를 설정해 줍니다!

실행을 했더니 null_count에 결측치가 11개 있는 걸 볼 수 있네요

Delete Missing Data(결측치 제거)

결측치 처리 방법

결측치에 대한 충분한 해석이 이루어졌다면, 해당 특성을 아예 삭제할 것인지, 새로운 특성으로 변환할 것인지, 기존 특성을 유지하면서 결측치를 치환할 것인지를 판단해야 하며, 비율에 따라서는 다음 표와 같이 처리할 수 있습니다.

결측치 비율
처리 방법
10% 미만
제거 또는 치환
10% 이상 20% 미만
모델 기반 처리
20% 이상
모델 기반 처리

이 데이터에선 결측값이 11개로 대체보다는 제거를 선택했습니다.

Input Column에서 null 값이 있었던 TotalCharges를 선택해 주고 Run을 클릭합니다

짜라 잔! Row 옆에 있는 개수를 비교해 봤을 때 오른쪽에서 결측값이 있던 11개의 열이 제거된 것을 볼 수 있습니다

다음에는 범주형 변수 변환과 모델링 등을 이용한 캐글 고객 이탈 여부 예측 미션 2탄으로 돌아오겠습니다!