728x90
- 성인 인구의 수입 분석 : 정형 데이터 분석
- 학습 목표 : 차원 축소 / 스케일링 / 이상치, 범주형, 결측치 처리
- 본 모델에 들어가기까지의 데이터 전처리(?)
Overview

-
데이터 사이언스로 돈을 버는 법 : 흥미, 관심사 > 조회수를 높일 만한 결과 도출하기
-
문제점 : 생각만큼 데이터 품질이 좋지 않다
- Kaggle의 경우 매우 정제가 잘 된 편
- 실제로는 데이터 '만' 많은 경우가 많음 : 쓸모가 없거나, 품질이 좋지 않거나
-
데이터 분석의 약 70% 가량이 전처리
-
왜?
- 데이터 수집/처리기가 불안정하거나
- 데이터의 수집, 가공, 저장 비용
- 데이터 형태가 너무 많아짐(시계열, 음성, 영상 등등...)
- 수집된 데이터와 컴퓨터로 분석 가능한 형태 사이의 간극 존재
-
Data Science
- 데이터의 수집, 가공, 서비스 적용, 다시 수집, ...
- EDA 전에 전처리가 우선되어야 함 : EDA시 잘못된 데이터로 인한 오해가 있을 수 있기 때문
Data
-
데이터 : 정형 vs 비정형 / 수치형 vs 범주형
-
정형 데이터 : Table 형태로 존재 (주로 SQL로 처리)
-
비정형 데이터 : 이미지, text 등등
-
수치형 데이터 : 양적 정보
-
범주형 데이터 : Categorical data
-
데이터 사이언티스트의 업무
- 내가 다룰 데이터가 어떤 구조로 이루어지는가?
- 데이터 변형 시 어떤 변화가 이루어지는가?
- 이 데이터가 내가 원하는 목적과 얼마나 부합하는가?
-
데이터 처리 시의 문제
- 용량은 작은데 불러올때 메모리 사용량이 어마어마한 이유는?
- 실제 데이터는 0, 1꼴의 작은 값이지만, 실제 계산 시에는 Int64/Float64형태로 불러옴, 이로 인해 차지하는 메모리 용량이 실제 값보다 더 커짐
Data Preprocessing
-
데이터 전처리
- missing value : 어떻게 해서 생기게 되었는지?버려도 되는 값인지?
- outlier : 분포를 크게 벗어난 값
- dependent / independet value : kaggle의 경우 target이 정해져 있음 - 현업의 경우 어떤 값을 target으로 할지 직접 정해주어야 함
- train / test split
- scaling
-
missing vlaue : 존재하지 않는 값 / 시스템 오류로 인한 비정상 값
- '', '#N/A', 'NaN', 'NULL' 등
- dataset의 ? : missing value인가? 무직인가? ...?
- 다수 column에 ?가 있다면 서로 간의 상관관계가 있을 수 있을까?
- 결측치의 처리 : 삭제 or 대치
- 삭제 : 대부분이(ex. 80%) missing인 경우 / 기본 dataset이 많아서 몇 개 빠져도 상관 없는 경우
- 대치 : 다른 sample 분포로 예측 가능한 경우 / 의미적 추론이 가능한 경우
-
Outlier : 동 feature 샘플들과 비교할 때 비정상적으로 떨어진 관측치
- Outlie의 처리 : 삭제, 대치, 로그변환
- 대치 : 의미상 다른 값(보통 최대/최소) 로 대체해도 무관한 경우
- 삭제
- 극단적인 Outlier의 경우 삭제하는 것이 유의미할 수 있음
- 다른 cluster에 속하는 새로운 유의미한 data일 가능성 역시 있음 - 이 경우 scaler 등을 통해 처리하는 쪽이 더 나음
- Outlie의 처리 : 삭제, 대치, 로그변환
-
Scaling
- 같은 수치형이라도 평균/최대/최소값은 서로 다름
- 수치 데이터들의 range가 다를 경우, 각 feature를 그대로 학습시키면 결과값에 미치는 영향력이 서로 달라질 수 있음
- min-max scaler : 정규화(normalization)
- standard scaler : 표준화(standardization
- Data Leakeage : test data는 일어나지 않은 일 > scale된 train과 다른 분포가 나타날 수 있지만, 같은 분포를 갖고 있음을 가정
Feature Engineering
-
Feature : 모델 예측에 사용될 수 있는, 데이터를 표현하는 모든 변수, 개체, 특성
-
Feature Engineering : 더 나은 모델 알고리즘을 위한 Raw data에서 Feature를 만들어내는 과정
-
인코딩
- 컴퓨터가 이해하기 힘든 형태의 데이터를 처리 가능한 형태로 변환하는 과정
- one-hot encoding : 범주형 변수를 독립적 feature로 변환
- label encoding : 순서가 있는 변수를 숫자 형태로 numbering
- mean encoding : 분포를 바탕으로 값 mapping - 학습은 빠르나 overfitting 위험
-
차원의 저주
- feature수가 늘어남에 따라 해당 target을 설명하는 data 수가 줄어드는 현상
- 차원이 낮을수록 모델 성능이 높아짐
- 모델 복잡도 감소 / overfitting 회피 : 특성 선택 vs 추출
- 특성 선택 : 높은 성능을 나타내는 feature를 선택 (with greedy algorithm)
- 특성 추출 : feature를 바탕으로 새 feature 구성 (with PCA, LDA)
-
PCA(주성분 분석)
- 고차원 feature 중 중요 몇 가지를 추출
- 비지도 학습의 일종
- 큰 분산 = 많은 정보
- 데이터 분산을 표현하는 벡터 > 표현력이 큰 벡터 선별 후 원본 데이터 투영 > k (k < d)인 데이터 셋으로 재구성
- 단점 : 새로 만들어진 feature가 갖는 의미는 불확실해짐
Before Modeling
-
Kaggle조사에서
- 가장 좋아하는 ML/DL method: 딥러닝, 인공신경망, 시계열 분석, ...
- But 실무에서 사용되는 DL Method : 데이터 시각화, Logistic Regression, Cross-Validation, 결정 트리, Random Forest, ...
- 의외로 고전적 분석법들이 잘 동작하는 경우가 많음
-
이렇게 배운 걸 모두 활용해야 하는가?
- 모든 도구들이 항상 필요한 건 아니지만, 배워 두면 언젠가 쓸 일이 생긴다
- 사용법을 숙지하면 다른 작업에 활용될 여지도 있다
728x90