들어가기 전에...
이 기록은 순전히 글쓴이 본인을 위한 것이므로 생략이 많음.
내용을 자세히 알고 싶으면 '데이터 사이언스 개론'(김화종 저)를 보세요.
6.1
분석하기 좋게 데이터를 고치는 모든 작업을 데이터 전처리(preprocessing)라고 한다.
실제로 데이터 사이언스 전 과정에서 분석 알고리즘 자체를 수행하는데 걸리는 시간보다 분석에 필요한 데이터를 수집하고 전처리하는 과정에 더 많은 시간이 걸린다.
보통 80~90%의 시간이 data preprocessing에 소요됨.
데이터 전처리 필요성
-
수집한 데이터를 탐색해보면 데이터를 손볼 곳이 많을 것이다.
중간에 데이터가 빠졌거나, 틀린 값이 들어 있거나, 데이터의 단위가 틀릴 수가 있다.
이외에도 데이터가 처리하기 좋은 형식으로 되어 있나, 데이터를 새로 가공해야 하나 파악해야 한다.
즉, 데이터의 상태와 가치를 파악해야 함.
-
문자로 된 범주형 데이터의 경우 처리를 편리하게 하기 위해 숫자로 표현을 바꾸기도 함.
예를 들면 월요일은 1로, 화요일은 2로 코딩.
또는 수치 데이터의 분포를 normalize(정규화)하기도 한다.
예를 들어 같은 대상을 평가하면서 10점 만점으로 처리한 것과 100점 만점으로 처리한 데이터를 같이 활용하려면 동일한 분포로 바꾸어야 함.
-
대부분의 데이터는 그 데이터를 최초로 얻을 때의 목적이 따로 있기 마련임.
나중에 이 데이터를 다른 목적으로 사용하려면 데이터를 가공해야 함.
-
데이터 전처리에는 여러 가지 형태가 있는데, 필요한 데이터를 골라내기 위한 데이터 filtering을 하기도 하고, 데이터의 형식을 변경하기 위해 데이터 변환(transformation)을 하기도 함.
여러 소스에서 온 데이터를 합치는 작업이 필요할 때엔 데이터 통합(integration)을 함.
데이터 전처리를 다른 표현으로, 데이터를 분석하기 좋게 오류를 걸러내고 깨끗하게 바꾼다는 의미의 data cleaning이라고도 함.
데이터 품질
- 데이터 전처리 과정은 데이터의 품질이 목적에 맞는지 확인하고 필요하면 품질을 높이는 작업이라고 할 수 있음.
데이터 품질을 나타내는 대표적인 항목은 정확성과 적시성이다.
정확성은 데이터의 값이 정확한지.
적시성은 데이터가 시간적으로 유효한 최신의 것인지.
결측치 처리
- data preprocessing에서 가장 중요한 과정은 빠진 값, 즉 결측치(missing value)를 처리하는 것.
- 크게 세 가지 방법으로 missing value를 처리.
결측치가 포함되어 있는 항목을 모두 버리거나(1), 결측치를 적절한 값으로 대체하거나(2), 아니면 결측치를 NA(not available)라고 표시하여 다음의 분석단계로 결측치 처리를 넘기거나(3).
- 1 방법이 가장 처리하기 쉬움.
하지만 missing value가 들어있는 항목의 비중이 크면 무시할 수 없음.
이 땐 반드시 원인을 생각해보고 대책을 세워야 함.
2방법은 어떤 값으로 대체할지를 선택해야 함.
대체값으로 전체 평균값을 사용할 수도 있고, 인접한 값으로 추정치를 계산할 수도 있음.
결측치를 대체할 경우엔 분석 결과가 달라질 수 있는 것에 특히 주의를 해야 함.
예를 들어 급여에 해당하는 데이터라면 평균치나 0으로 대체하면 안 됨.
결측치를 다른 값으로 대체한 경우 이런 사실을 표시해주는 별도의 범주형 변수를 새로 정의하는 방법이 유용함.(?)
나중에 데이터 분석 단계에서 이 변수를 보고 결측값이 있었고 다른 값으로 대체되었다는 사실을 추적할 수 있으므로.
3방법은 전처리 단계에서 아무 조치도 취하지 않는 것임.
그리고는 결측치 처리를 전처리 단계에서 일괄적으로 처리할 게 아니라 분석 단계로 넘겨서 상황에 맞게 처리하게 하는 게 안전.
cf) 사람이 직접 수작업으로 빠진 값을 채워 넣는 것도 가능함.
그러나 이 방법은 시간과 노력에 있어 비효율적이므로 꼭 필요한 중요한 경우에만 사용해야 함.
틀린값 처리
- 틀린(invalid) 데이터란 잘못된 값이 들어있는 것을 의미.
- 틀린 값을 처리하는 방법도 크게 나누면 missing value를 처리하는 방법과 같음.
틀린 값이 포함된 항목을 모두 버리거나(1), 틀린 값을 적절한 값으로 대체(2), 분석 단계로 틀린 값 처리를 넘기거나(3)
- missing value는 값이 없는 것이므로 명백하게 발견할 수 있으나, 틀린 값은 바로 발견할 수 없고 program에 의해서 일일이 어떤 기준에 따라 찾아내야 함.
이상치 처리
- 이상치(outlier)란 값의 범위가 일반적인 범위를 벗어나 특별한 값을 갖는 것을 말함.
이상치와 틀린 값은 다름.
- 이상치를 찾아내는 것을 이상치 검출(detection)이라고 하고, 이는 데이터 분석 과정의 하나임.
- detection은 preprocessing에서 다루는 게 아니고, 데이터 분석 단계로 넘겨야 함.
6.2
데이터 변환
데이터를 분석하기 좋은 형태로 바꾸는 작업을 말함.
데이터의 분포를 고려하여 정규화하거나 단위를 조정하거나 로그 스케일로 변환하는 것을 모두 데이터 변환이라고 함.
범주형으로 변환
- 수치 데이터를 범주형으로 변환하여 사용하는 경우가 많음.
ex) 10대, 20대, 30대, 40대... 로 나누는 것.
일반 정규화
- 분석을 정확하게 하려면 원래 주어진 수치 값을 바로 사용하는 게 타당하지 않고 정규화를 해야 하는 경우가 많음.
예를 들어 두 과목의 시험을 가지고 평가하는데 과목 A의 시험은 10점 만전이고, 다른 과목 B는 50점 만점이라고 하자.
만약 성적이 시험 A에서는 8점, 시험 B에서는 20점을 받았다면 이는 정규화하면 8/10=0.8점, 20/50=0.4점이 되고 평점은 0.6이 된다.
이와 같이 수치로 된 값들을 여러 개 사용할 때 각 수치의 범위가 다르면 이를 같은 범위로 변환해서 사용하는데 이를 일반 정규화라고 함.
z-score 정규화
- 앞의 일반 정규화는 최고값을 1로 하여 단순히 비례화된 값을 사용하는 방식이었음.
이 방식은 표준 편차를 전혀 고려하지 않은 방식으로서, 성적의 분포를 고려하지 못하고 있음.
ex) 이제 슬슬 손이 아프니.. 책 참조.
이런 문제를 정확히 설명하려면 원 점수가 아니라 표준 편차를 고려한 점수를 사용해야 함.
그게 바로 z변환(z-score transform).
z변환에서는 평균을 0점으로, 표준 편차를 1점으로 환산하는 변환임.
로그 변환
- log 변환이란 어떤 수치 값을 그대로 사용하지 않고 여기에 로그를 취한 값을 사용하는 것을 말함.
데이터 분석에서 로그를 취하는 게 타당한 경우가 종종 있는데 먼저 로그를 취하면 그 분포가 정규 분포에 가깝게 분포하는 경우가 있음.
이런 분포를 로그정규 분포(log-normal distribution)을 가진다고 함.
ex)1 국가별 수출액 분포 그래프
ex)2 사람이 느끼는 감각의 경우.
ex)3 값의 범위가 너무 큰 경우데오 로그 변환된 값이 유용하게 사용됨.
ex)4 숫자의 증가를 덤셈이 아닌 곱셈으로 처리하는 것이 직관적으로 더 편리할 때에도 수치의 절대값보다 로그값을 사용하는 게 편리함.
역수 변환
- 어떤 변수를 데이터 분석에 그대로 사용하지 않고 역수를 사용하면 오히려 선형적인 특성을 가지게 되어 의미를 해석하기가 쉬워지는 경우!
데이터 축소
- 데이터 축소(reduction)이란 같은 정보량을 가지면서 데이터의 크기를 줄이는 것을 말함.
- 데이터 축소의 방법으로 기존 데이터의 특징들을 대표하는 새로운 값을 추출하는 것을 PCA(principal components analysis)라고 함.
ex) 몸무게와 허리둘레가 항상 같은 패턴으로 변한다면 둘 중에 허리둘레 하나만 사용해도 됨.
- data reduction의 한 방법으로 주어진 여러 데이터를 대표할 수 있는 새로운 변수를 만들 수도 있다.
ex) BMI 지수
6.3
샘플링
- 구할 수 있는 전체 데이터 중에서 분석에 필요한 데이터를 취하는 것을 샘플링이라고 함.
- 최소한의 샘플 데이터를 가지고 분석의 타당성을 조사하거나 분석 모델(알고리즘)의 큰 방향을 정할 때도 샘플링이 필요함.
- data sampling에서 중요한 것은 샘플된 데이터가 전체 데이터의 특징을 계속 유지할 수 있도록 샘플링해야 한다는 것.
ex) 여러 소스에서 얻은 데이터를 다루어야 하면 각 소스에서 골고루 데이터를 취해야 하며 지리적, 인종적, 나이별, 소득별 등 여러 측면에서 고려해서 균일하게 데이터를 sampling해야 함.
훈련용과 테스트용 데이터
데이터 분석에선 모델을 만드는 과정과 모델을 검증하는 과정, 두 단계의 절차가 필요함.
-
모델을 만드는 과정을 훈련(training)이라고 함.
이때 사용되는 데이터를 훈련용 데이터(training data)라고 함.
모델은 회귀분석 모델, 의사결정 트리 모델 등을 말함.
훈련 과정은 각 모델을 구성하는 파라미터를 찾는 과정이라고 할 수 있음.
-
모델의 성능을 검증하는 것을 test라고 하고 이 때 사용되는 데이터를 test data(hold-out data)라고 함.
-
훈련용 또는 테스트용 데이터를 준비할 때 랜덤한 성질을 보장하는 것이 필요함.
이를 위해서 별도의 변수를 하나 정하고 여기에 랜덤한 숫자들을 배정하는 방법이 널리 사용됨.
(?)