Binning
Binning
Binning이란 연속적인 수치 데이터를 구간별로 범주화하는 기법으로 Bucketing이라고도 한다. Binning은 데이터의 세부적인 차이를 줄이고, 주요 패턴이나 경향성을 더 명확하게 파악할 수 있도록 도와준다.
Binning의 장점
이상치의 영향 감소
연속형 변수로 이루어진 특정 피처에 극단적인 값이 다수 포함되어 있어 모델에 큰 영향을 미칠 가능성이 우려된다면, Binning을 통해 이상치의 영향력을 완화시킬 수 있다. 몇몇 극단적인 값으로 인해 분석 결과가 왜곡될 가능성이 있을 때, Binning을 적용하여 데이터 내의 이상치로 인한 왜곡을 줄이는 동시에 각 범주간의 차이를 보다 명확히 비교가능하다.
비선형 패턴 포착
피처변수와 타겟변수 사이에 선형적인 관계 패턴이 보이지 않고 복잡한 관계를 형성한다면, Binning은 두 데이터 간에 숨겨진 비선형 관계를 효과적으로 드러낼 수 있는 수단이 될 수 있다.
모델 해석의 용이성 증가 및 변수간 관계의 단순화
연속적인 수치 데이터를 명확한 범주로 나눔으로써 모델이 내놓은 결과를 좀 더 직관적으로 해석 할 수 있다. 특히나 데이터의 분산이 클 때, Binning을 통해 핵심적인 특성을 강조하고, 복잡한 관계를 보다 단순하게 표현할 수 있다.
Binning 구현
빈도 기반 범주화(qcut)
df['target_column_qcut'] = pd.qcut(df['target_column'], q=6)
display(df['target_column_qcut'].value_count().sort_index()
위 코드는 타겟 컬럼의 분포를 6개로 균등하게 나타내는 새로운 범주형 컬럼을 만들고 확인한다.
값 기반 범주화(cut)
bins = [0, 10, 20, 30, 40, 50, 60]
df['target_column_cut'] = pd.cut(df['target_column'], bins=bins)
display(df['target_column_cut'].value_count().sort_index()
위 코드는 미리 지정해 둔 범위를 기반으로 타겟 컬럼을 새로운 범주형 컬럼으로 생성한다.
Binning 시각화
Binning을 통해 생성된 변수는 일반적으로 boxplot을 통해 시각화한다. boxplot은 데이터의 중앙값, 사분위수 범위, 이상치 등을 보여주어 분포의 형태를 파악할 수 있다.
fig, ax = plt.subplots(figsize=(8, 4))
sns.boxplot(x='target_column_cut, y='target', data = df, ax=ax)
Enjoy Reading This Article?
Here are some more articles you might like to read next: