주어진 목적 기반의 올바른 결과 획득을 위하여 원시 데이터를 데이터 분석에 용이하도록 형태 변환
| 빠른 특성 파악 | 분석 알고리즘 적용 |
|---|---|
| 데이터의 특성을 빠르게 파악 가능 | 변수 간 범위가 다를 경우 알고리즘 적용 시 영향력의 차이가 발생함 |
| 파생 변수 생성 및 단순화를 통한 결과 리포팅 등 활용 | 올바른 학습을 위해 다른 범위를 지닌 변수들의 변환 필요 |
| 지정 길이 기반 구간 정의 | 분포 기반 구간 정의 |
|---|---|
| 사용자 기준으로 데이터 범위의 간격을 구분하여 관측치를 나누는 방안 | 관측치가 각 구간 내 동일한 개수로 구분되도록 나누는 방안 |

| 최대-최소 정규화 | Z-점수 정규화 |
|---|---|
| - 데이터 구간을 0~1사이로 변환 - 특정 데이터의 위치 파악 | - 0을 중심으로 양쪽으로 데이터 분포시킴 - 특정 데이터가 평균과 얼마나 떨어져 있는지 파악 |
구간화 방안
1. 지정 길이 기반 구간
2. 분포 기반 구간
click_copy.descrie() #데이터 기술통계량 확인
#지정 길이 기반 구간화
#클릭 수 기반으로 기사 관심도 정의 기반 범주형 변환 - 3개구간설정
#cut 함수
bins = [0, 100, 500, np.max(click_copy['num_click'])]
names=[ , , ]
click_copy['pref'] = pd.cut(click_copy['num_click'], bins, labels=names)
#구간결과확인
click_copy['pref'].value_cunts()
click_copy.head(15)
#분포 기반 구간화
#qcut 함수 - 동일한구간 분할, 구간수로 나누게됨 / 구간수 = n
n = 3
click_copy['pref_qcut'] = pd.qcut(click_copy['num_clik'], n, labels=names)
print(click_copy['pref_qcut'].value_counts())
qcut 실행시 발생하는 오류
- 데이터가 극단치의 Skewed한 경우 발생
- 데이터의 각 구간은 동일할 수 없을때
- qcut 보다 사용자 기준 기반 범주화 or 구간 개수 변화 고려
기계학습 알고리즘의 각 변수 별 영향력의 차이를 조정할 필요 존재함
- 각 변수 별 범위가 다를 경우 학습 안정성이 떨어질 수 있으므로 간격 조정 필요
1. 최대-최소 정규화
2. z-score 정규화
#최대-최소 정규화
#변수 값을 0~1의 값으로 변환 - sklearn 라이브러리
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
#데이터 copy
#변환
click_copy['minmax_values'] = scaler.fit_transform(click_copy[['num_click']])
click_copy.head(15)
#요약
click_copy.describe()
#z-score 정규화
#변수를 평균이 0, 표준편자 1인 표준정규분포로 변환 - sklearn 라이브러리
from sklearn.preprocessing import StandardScaler
std_scaler = StandardScaler()
#변환
click_copy['std_values'] = std_scaler.fit_transform(click_copy[['num_click']])
click_copy.head(15)
어느 방안이 더 나은가?
- 상황에 따라 다름, 정규화 수행과 수행하지 않은 결과의 차이가 큰 것이 중요함
- 연속형 데이터를 기계학습 모델링에 적용하기 위해서 변수 간의 상대적 크기 차이를 제거할 필요가 존재함