프로젝트/[DACON] 신용카드 사용자 연체 예측 AI 경진대회

02_ 탐색적 데이터 분석 (EDA) - 데이터 시각화 (2)

이군 2021. 5. 6. 11:54
반응형

지난 글에서 분류형 데이터 (Categorical Data) 특성 별로 시각화하여 살펴보았습니다. 전반적으로 데이터 불균형이 확인되었으며, 희소한 데이터도 많아 모델 생성 및 학습 전 이를 해결해야할 것 같습니다.

 

분류형 데이터의 EDA 및 시각화

 

01_ 탐색적 데이터 분석 (EDA) - 데이터 시각화 (1)

탐색적 데이터 분석 (Exploratory Data Analysis) 이란 본격적인 모델링을 시작하기 전, 데이터에 대한 인사이트를 얻기 위해 데이터의 종류 및 분포 등을 확인하는 작업입니다. 이 과정을 거침으로서

zngsup.tistory.com

 

이번 포스팅에서는 수치형 데이터를 (Numeric Data) 시각화해 데이터의 특성을 시각화로 확인합니다. 분류형 데이터와는 다르게 수치형 데이터는 '연속적'인 값을 가지기 때문에, 'countplot'이 아닌 'kdeplot'으로 시각화를 했습니다.

 

kde (Kernel Density Estimation, 커널 밀도 추정) 그래프란, 분포가 선형처럼 보이도록 그리는 그래프 입니다. 각 데이터마다 Kernel을 정의하여 데이터가 밀집해 Kernel 이 겹치는 구간은 '증폭'되어 밀도가 측정되는 개념입니다. 아래는 위의 설명을 도식화한 그림입니다. 참고가 되었으면 좋겠습니다.

 

 


 

3. 데이터 분포 시각화

 

Numeric Features / 수치형 데이터 분포 시각화

 

 

income_total / 연간 소득

 

income_total의 kde 그래프. income_scale은 10,000으로 나눈 값이다.

 

  • income_scale은 income_total의 값을 10,000으로 나눠준 값
  • 우측 그래프 : 500,000 이하의 데이터만 시각화
  • 100,000 ~ 300,000 구간에 데이터 치중
  • 연속 데이터의 binning을 통해 구간 불균형 해소 가능

 


 

DAYS_BIRTH / 나이

 

 

  • DAYS_BIRTH 데이터 : 측정일로 부터 기간을 음수로 표현 ( 나이 = DAYS_BIRTH * (-1) / 365 )
  • 상대적으로 고른 분포를 보이나, 20-30대의 표본이 약간 많음

 


 

DAYS_EMPLOYED

 

 

  • DAYS_EMPLOYED 데이터 : 측정일로 부터 기간을 음수로 표현 ( 재직 기간 = DAYS_EMPLOYED * (-1) / 365 )
  • 값이 0인 데이터를 대다수 포함
  • 우측 그래프 : 0인 값을 제외한 데이터의 분포 시각화

 


 

begin_month / 신용카드 계약 기간

 

 

  • begin_month 데이터 : 측정일로 부터 기간을 음수로 표현 ( 신용카드 이용 기간= begin_month * (-1) / 12 )
  • 다른 특성들에 비해 타겟에 (credit) 따라 분포 차이를 보임

 


 

특성 간 상관 간계 (Correlation) 시각화 - Heatmap plot

 

아래에 각 특성 사이의 상관 관계를 확인하기 위해 'Heatmap'으로 시각화를 했습니다. Heatmap 이란, 각 특성들이 서로에 영향을 받는지를 수치로 계산하고, 이를 색 또는 채도/명도로 표현한 그래프입니다. 행과 열의 데이터가 교차하는 곳에 상관 관계 지수가 (Correlation index) 계산되어 있고, 정도는 색으로 표현됩니다.

 

다만, 분류형 데이터의 경우 의미를 해석하지 않고 단순 'Label Encoding' 했기 때문에 해석에 심각한 오차가 있을 순 있습니다. 단지 모델을 형성하기 전, 데이터의 유사성, 영향력 등을 단순 파악하기 위해 시각화 해보았습니다.

 

 

 

  • child_num과 family_size의 아주 강한 상관관계가 확인됩니다. 특성의 의미로 비춰볼 때, 자녀의 수가 가족 구성원 수에 영향을 주는 것은 당연해 보입니다.
  • family_size와 family_type과 강한 음의 상관관계를 보입니다. 가족의 형태에 따라 가족 구성원 수가 영향을 받는 것은 당연하지만, family_type은 임의로 수치가 부여되었기 때문에, 다시 한 번 살펴봐야 합니다.
  • DAYS_BIRTH는 child_num과 family_size에 강한 상관관계를 보여줍니다. 나이가 많을 수록 자녀의 수가 더 많을 가능성이 높고, 그만큼 가족 구성원의 수가 커질 것 같습니다.
  • gender는 몇몇 특성들과 상관관계를 보여주지만, 이와 같은 조합이 타겟에 영향을 줄지는 의문입니다.
  • 모델의 target인 credit은 모든 특성과 미미한 상관관계를 보여주고있으며, 그나마 begin_month와 약한 음의 상관관계를 보여줍니다.

 


 

 

두 포스팅에 걸쳐 데이터의 기본적인 분포에 대해 확인했습니다. 다른 분들의 EDA를 확인해보면 제가 하지 못한 다양한 시각화를 통해 의미를 해석하고, 모델링에 필요한 특성을 추출하는 등의 과정이 있었습니다. 더 분발해야 할 것 같습니다. 저 또한 위의 상관관계를 참고해 여러 특성을 조합하여 분포를 확인해보면 더 좋을 것 같다는 생각을 했습니다.

 

다음 포스팅에서는 데이터 내에 발견되는 결측치 및 이상치 등을 확인하는 글을 기재하도록 하겠습니다. 여기까지 읽어주신 분들께 감사드립니다.

 

 

반응형