실제 세상의 데이터는 매우 더럽다. (dirty) 아래 여러 이유가 있다.
- Incomplete
- missing value가 종종 존재한다.
- 예를 들어, 분석가는 고객의 주소가 중요하다고 생각하여 데이터를 조회했지만, 처음 DB를 구축한 사람은 그것이 중요하지 않다고 생각할 수 있기 때문이다.
- Noisy
- noise, error, outliers
- salary = -10 과 같이 음수가 될 수 없는 attribute에 음수가 저장될 수 있다.
- Inconsistent
- 값 자체는 문제가 없지만, 다른 attribute와 비교했을 때 오류가 있는 경우
- age=40인데, birthday=03/01/2020 인경우, age와 birthday는 문제없지만 현재 2023년과 비교했을 때 40세는 명백한 오류다.
- 과거에는 평점을 1, 2, 3으로 했다가 어느순간 시스템이 바뀌어 A, B, C로 저장하고 있는 경우
- Intentional
- (미국 데이터) Alabama 주에서 태어난 정보의 경우, 사실은 Alabama가 시스템의 초기값일 수 있다. (첫번째 주이기 때문)
- 생일이 1월 1일 인 경우, 높은 확률로 팝업 리스트의 첫번째 값을 저장했을 가능성이 있다.
Missing Data
많은 경우에 missing data가 발생한다.
장비가(센서 등) 잠시 고장났거나, 정보가 모이지 않거나, 수입의 경우 어린이에게는 해당되지 않거다 등 다양한 이유로 missing data는 생길 수 밖에 없다.
그리고 missing data는 함부로 추측해서는 안된다.
How to handle missing data?
- 해당 tuple을 무시한다. 그러나 많은 경우에 효과적이지 않다.
- 수동으로 값을 채운다. 그러나 노가다이다. (tedious, infeasible)
- 자동으로 값을 채운다.
- global constant 사용: "unknown", 또는 $\infty$로 저장
- attribute mean
- 같은 class에 해당하는 attribute mean
- Baysian formula나 decision tree 등의 inference-based를 이용 (e.g. 사람의 연봉은 직업과 나이로 어느정도 추측이 가능하다)
Noisy Data
Noise는 random error이거나 random variance이다.
- Binning
- 데이터를 정렬한 수, 적당히 partition을 나눈다.
- smothing by bin mean/median/boundary 등의 방법을 이용할 수 있다.
- Regression
- regression function을 구하여 데이터를 fit한다.
- Clustering
- outlier를 탐지하고 이를 제거할 수 있다.
- Combined computer and human inspection
- 의심되는 값을 찾고, 이를 사람에게 검증한다. (관련 팀원 등)
Binning
데이터를 정렬하여 다음의 배열을 생각하자
\[ [4, 8, 15, 21, 21, 24, 25, 28, 34] \]
Partition into (equal-frequency) bins
9개의 데이터를 3개로 쪼개면 다음과 같다.
\[ [4, 8, 15], [21, 21, 24], [25, 28, 34] \]
Smoothing by bin means
각 파티션의 평균값으로 모든 값을 대체한다.
\[ [9, 9, 9], [22, 22, 22], [29, 29, 29] \]
Smoothing by bin boundaries
각 값들은 가장 가까운 경계 값으로 대체된다.
\[ [4, 4, 15], [21, 21, 24], [25, 25, 34] \]
Other Examples of Handling Noisy Data
Map matching
GPS의 좌표 데이터는 오차가 10-20m 정도 발생할 수 있다. 이때 자동차의 위치를 조절하는 방법으로는 가까운 road segment로 projection하여 자동차가 인도가 아닌 도로 위에 위치할 수 있도록 한다.
Clamp transformation
이상치를 제거하기 위해 특정 threshold를 정하여 lower보다 작으면 lower로, upper보다 작으면 upper로, 그 외의 경우 원래 값을 사용할 수 있다.
Imputation
Missing value를 채울 때 median으로도 채울 수 있다.
'스터디 > 데이터사이언스' 카테고리의 다른 글
[Data Science] Data Preprocessing (4) - Data Reduction (0) | 2023.03.28 |
---|---|
[Data Science] Data Preprocessing (3) - Data Integration (0) | 2023.03.28 |
[Data Science] Measuring Data Similarity and Dissimilarity (0) | 2023.03.22 |
[Data Science] Data Preprocessing (1) - Overview (0) | 2023.03.21 |
[Data Science] 상관계수, Pearson, Spearman, Kendall (0) | 2023.03.17 |