학습 내용
- 데이터 탐색하기
- 결측치 처리하기
- 이상치 처리하기
- Feature Engineering
학습목표
- 수집한 데이터를 데이터 분석이나 모델링을 위한 형태로 전처리할 수 있다.
Sample 데이터를 육안으로 확인하여 데이터의 구성과 필요 유무에 대한 확인
→ head(), tail()
수치 데이터에 대한 수학적 특성 확인으로 데이터 분포 확인
→ describe()
컬럼 수, 데이터 타입 등을 확인하여 정상적 로드 확인
→ info()
0은 결측치일까요?
0은 결측치가 아니다. 실제 해당값이 0이라고 알고 있는 상태이다.
→ 좋은 성능의 AI 모델을 만드는 데 중요한 요소
추가적인 조사나 정확한 예측을 통해서 결측치를 채워야 함.
Listwise
결측치가 존재하는 전체 행 삭제
→ 최대치의 정보손실 발생
Pairwise
결측치로 존재하는 변수만 삭제
모든 변수가 결측치인 경우 해당행 삭제
다만, 결측값이 있는 변수는 향후 무시됨
→ 매번 샘플이 달라 분석을 비교할 수 없음
값 대체하기
결측치를 평균화 값으로 대체
가장 널리 사용되는 평균화 값(평균, 중앙값 최빈값)
예측하기
결측치를 상관관계 등을 예측하여 대체
결측치의 특성이 무작위로 관찰되는 것이 아니라고 가정하고, 상관관계나 예측모델을 사용하여 채움
삭제
입력 시 error거나 outlier수가 굉장히 적을 경우 그냥 삭제
대치
다른 값으로 변경
스케일링
보통 right skewed(캐글에서 0.75 이상)인 경우 log나 square oot(제곱근)을 취함
데이터를 분석하거나 AI 알고리즘을 적용하기 위해 데이터의 도메인 지식을 활용, 변수를 가공하여 데이터를 비교적 간단명료하게 만드는 것
→ Feature = 각 데이터의 특징
Data gathering (Raw Data)> Feature Engineering (Training Data)> Modeling
연속형 변수를 범주형 변수로 만드는 방법
→ 연속형 변수를 적절히 그룹을 지어주면 데이터를 이해하기가 더 쉬워짐
cut
동일 길이로 나누기
사용자가 구간값을 직접 입력
qcut
동일 개수로 나누기
사용자가 구간 개수를 입력
숫자데이터 간의 상대적 크기 차이를 제거하는 방법
→ 각 컬럼에 들어있는 데이터의 상대적 크기에 따라 분석이나 모델링 결과가 달라짐
StandardScaler()
각 특성의 평균을 0, 분산을 1로 스케일링함
즉, 데이터를 정규분포로 만듦
RobustScaler()
평균과 분산 대신에 중간 값(정렬 시 중간에 있는 값)과 사분위 값(1/4,3/4에 위치한 값)을 사용함
전체 데이터와 아주 동떨어진 데이터(이상치)에 영향을 받지 않음
MinMaxScaler()
각 특성이 0과 1사이에위치하도록 스케일링함
분류보다 회귀에 유용함
MaxAbsScaler()
각 특성의 절대값이 0과 1 사이가 되도록 스케일링 함.
즉, 모든 값은 -1과 1 사이로 표현되며, 데이터가 양수일 경우 MinMaxScaler와 같음