본문 바로가기

Kaggle, Dacon, 공모전

# project : EDA_Prediction_Telco_Customer_Churn

Introduction

한 통신사에서는 고객의 다양한 경험을 위해 여러 가지의 product로 service를 제공합니다. 이 기업은 데이터 분석을 통해 서비스를 이탈하는 고객을 막고 이용하는 고객을 유지시키려고 합니다. data는 고객의 특성을 설명해줍니다. 코드 참고 : Kaggle.

Columns explanation

- 고객의 정보로는 성별, 배우자 유무, 부양 가족 유무, 고객이 기업 서비스를 이용한 월 수, 전자 청구서 사용 유무, 계약 조건(매달, 일년, 이년), 결재 방식, 납부 요금, 총 납부 요금  등이 있습니다.

- 기업의 service로는 핸드폰 서비스, 다회선 통신, 인터넷 서비스, 인터넷 보안, 온라인 백업, 기기 보안 가입, 기술 보조 가입, 스트리밍 TV와 영화 가입 등이 있습니다.

- target variable인 Churn feature는 한달 이내에 이탈한 고객과 현재 이용하고 있는 고객으로 나뉩니다.

 

Questions

어떤 고객이 이탈하는 가? / 어떤 고객이 남는가?

이탈한 고객은 어떤 서비스를 이용하는가?

Hypotheses

특정 서비스가 마음에 안든 고객

월 페이가 높은 고객

서비스를 단기 동안 이용한 고객

Proof

  • 기업의 신규 고객일수록 이탈 확률이 높아집니다. 가입 기간 29개월을 기준 이하 약 1394명, 29개월 이상 475이탈. 이는 약 약 3배수치이며 장기 고객일수록 이탈을 하지 않는 경향을 보이며 장기 계약(1year or 2years)으로 이어지는 특징을 확인할 수 있습니다. (밑의 그래프를 통해 다시 확인해보겠습니다.)
  •   성별로 나누어 비교했을 때, 남녀 성비는 50.5 : 49.5로 거의 차이가 없었으며 다른 특성과 비교했을때에도 아무런 연관성이 없었습니다.
  • phone service는 이 기업에서 제공하는 기본적인 서비스이므로 특정 변수와의 연관성이 없습니다.

EDA

계약 기간이 29개월 미만(low tenure), 29개월 이상(high tenure).                                                     장기 고객의 계약 방식

 

 

 

  • 대부분의 이탈한 고객은 남아있는 고객보다 요금을 더 지불하고 있었습니다.

이탈 고객 / 남은 고객

이탈 고객과 남은 고객이 이용하는 서비스를 나타내보았습니다. 남은 고객의 수가 월등히 많기 때문에 가늠하기 힘들지만 눈에 띄게 이탈 고객이 많이 이용한 서비스은 OnlineBackup, InternetService, PaymentMethod인 것을 알 수 있습니다.

 

단기 고객 / 장기 고객

단기 고객의 이탈율이 높기 때문에 장기 고객과 이용하는 서비스를 비교해 보았습니다. 쉽게 확인 할 수 있듯이 단기 고객이 다양한 서비스를 이용하는 비율은 장기 고객에 비해 낮았습니다.

 

Missing value processing.

- 고객이 총 지불한 금액이 적혀있는 column에 빈 값이 들어있어서 0으로 바꾸어주었습니다.

 

 

Build a model

-먼저 불필요한 ID variable를 제거하고 종속 변수인 Churn을 numeric으로 바꿔주었습니다. 그리고 나머지(대부분이 bool)는 dummy variables로 만들어 주었습니다. 

df2 = df.iloc[:,1:]
df2['Churn'].replace(to_replace='Yes', value=1, inplace=True)
df2['Churn'].replace(to_replace='No',  value=0, inplace=True)
df_dummies = pd.get_dummies(df2)

 

-Scaling은 Standardization(MinMaxScaler)로 해주어 모든 feature가 0과 1사이에 위치하도록 하였습니다.

 

-사용한 알고리즘은 총 4가지로 LogisticRegression, RandomForestClassifier, AdaBoostClassifier, XGBClassifier입니다.

 

각각의 정확도는 

LogisticRegression / 0.7984386089425124

 

AdaBoostClassifier / XGBClassifier

이며 전체적으로 정확도가 높지 않네요..ㅎㅎ 아직 많이 부족한가 봅니다.

가장 높은 정확도를 보여준 알고리즘은 LogisticRegression였습니다.!

 

 

 

감사합니다~!