개인 공부

데이터 과학 - 8. Data Preprocessing(1)

Beige00 2024. 4. 14. 02:27

왜 우리는 데이터 전처리를 해야할까? => real world의 데이터는 많은 오염이 되어있기 때문이다.

- Incomplete : attribute value들의 종류 부족, 중요한 attribute의 부족, aggregate 데이터만 있는 경우.

- Noisy : 오류 또는 outlier들의 다수 포함.

- Inconsistent : 데이터 자체가 불일치성을 포함하고 있음.(ex: 성적을 집계하는데 어떤 데이터는 100점, 어떤 데이터는 A)

 

이러한 오염된 데이터는 데이터 마이닝의 결과에 심한 영향을 준다. 오염된 데이터가 판단의 결과에 영향을 준다는 것이다.

 

* 데이터 오염도를 측정하는 measure들 :

- multi-dimensional view : accuracy, completeness, consistency, timeliness, interpretability... etc

- Broad categories : intrinsic, contextual, representational, accessibility.

 

* Major Tasks

- Data cleaning : 결측 값 채우기, 노이즈 데이터 정리, outlier 제거, Inconsistency 해결

- Data Integration : 데이터들을 하나로 모으기

- Data Transformation : 정규화

- Data Reduction : 일부를 제거해서 데이터의 크기를 줄이나, 전체적인 경향성을 유지

- Data Discretization

 

* Key Data Properties to EDA(Exploratory Data Analysis)

1. Structure : 데이터 파일의 구조

2. Granularity : 각 데이터가 얼마나 세밀하게 측정되었는지

3. Scope : 데이터가 얼마나 완전하게 표현하고자 하는 대상을 설명하는지

4. Temporality : 데이터가 시간에 따라 어떻게 분포하는지

5. Faithfulness : 데이터가 현실을 얼마나 잘 반영하는지

 

1. Structure : 데이터의 구조

- Variable은 특정 concept을 측정한 값이다.

- Data type/Storage type : variable들이 저장되는 방식. (integer 등)

- Variable type/Feature type:정보가 어떤 가치를 지니는지.(정보의 개념화된 측정)-데이터를 Visualization하고 해석에 영향

 

* Variable Feature Types

- Feature type은 크게 2가지로 나뉜다. (정량적, 정성적)

정량적인 Variable들은 다시 Continuous, Discrete로 나뉜다.

정성적인 Variable들은 Ordinal, Nominal로 나뉜다.

Continous는 무한한 범위의 값을 측정하므로 소수점 이하의 값을 포함한다. 임의의 기준에 의해 측정된다.(가격, 온도)

Discrete는 유한한 가능한 값을 가지며 주로 정수 값을 가진다.

 

Ordinal은 Category가 순서를 가지지만, Category간의 차이에 일관된 의미는 없는 것을 의미한다.(선호도 등)

Nominal은 Category들의 순서가 없는 경우이다.

 

즉, Structure는

어떤 format으로 정리되어있는지(표 데이터, Nested Data 등), 

어떻게 구성되어있는지(neted),

해당 데이터가 다른 데이터와 관련이 되어있는지(join/merge 결정),

각 records의 field는 무엇인지(strings, numbers...) 를 의미하는 것읻.ㅏ

 

2. Granularity : 상세도

- 각 record가 어떤 것을 의미하는지. (Ex: a person)

- 모든 data가 동일한 수준에서 수집된 것인가? (일부 데이터는 요약된 것이 데이터로 포함된다.)

- 데이터가 개략적으로 서술하는 경우, 어떻게 가공된 것인가?(Ex: Sampling)

개별로 상세할 수록 Fine, 요약되어서 서술될 경우 Coarse이다.

 

3. Scope : 데이터가 얼마나 완전한지.

- 데이터가 목적으로 하는 관심 영역을 커버하는가? (Ex: 캘리포니아 조사하는데 버클리 데이터)

- 데이터가 너무 비대한가? (Ex: A 수업의 데이터가 필요한데 모든 수업의 데이터가 있다.) => 필터링으로 수정 필요

- 데이터가 적절한 time frame을 포함하는가?

 

4. Temporality : 데이터가 시간에 따라 어떻게 위치하는가.

- Data Changes : 데이터가 언제 마지막으로 업데이트 됐는가?

- Periodicity : 데이터가 주기적으로 분포하는가?

- "event"가 언제 일어났는가?, 데이터가 수집된 시점은?, 데이터가 DB에 복사된 시간.

- 시간은 수집된 장소와 연관이 있는 데이터이다.(시차, daylight savings)

- 지역마다 시간 표기법이 다르다.

 

5. Faithfulness : 얼마나 데이터가 현실 세계를 잘 표현하는가.

- 데이터가 비현실적인 값을 가지는가?

- 명백한 종속 관계를 위반하는가? (Ex: 나이와 출생 년도가 일치하지 않음)

- 수기로 입력한 데이터의 경우 철자 오류 가능.

- 데이터가 위조의 정황이 있는가?

 

=> 누락된 데이터를 대처하는 법.

1. 결측치가 있는 데이터를 드롭한다. (드롭된 값에 의한 데이터 편향은 조심해야한다.)

2. 그냥 NaN으로 냅둔다.

3. 내삽법 : 결측치를 추론하는 방법이다. 주변 평균으로 대채하는 방법을 사용 가능하다.

=> 선택은 편향을 유발할 수 있으므로 신중해야하며, 기록이 누락된 이유를 명확히 알고 있어야한다.

 

=> 데이터는 어떻게 처리되어야하는가?

1. 데이터와 메타데이터 검토하기 : 데이터의 날짜, 크기, 구조는 무엇인가?

2. 각 필드/속성/차원 검토하기

3. 관련 차원 쌍 검토하기 (Ex: 전공별로 성적 분해하기)

=> 이런식으로 데이터를 시각화하고 변환, outlier 처리 등을 거치는데 이 과정은 모두 어딘가에 기록해두는 것이 좋다.

(돌려야하는 경우가 발생함.)


* Data Cleaning

Data Cleaning tasks

1. 결측치 추론. (이전 Faithfulness에서 다룸)

2. Outlier들 식별 및 noisy data 보간

3. Correct inconsistent data

4. 서로 다른 데이터를 통합할 때 발생할 수 있는 중복 데이터 문제를 해결하기

 

- Outlier들 실벽 및 noisy data 보간:

=> Noise : 측정된 데이터에서 random error or variance.

=> Noise가 낀 불완전 attributes value들은 데이터 전송, 데이터 입력 등 여러 곳에서 예측치 못한 에러를 발생시킨다.

=> Noise외에는 중복 기록, 불완전 데이터, inconsistent 데이터 등이 Data cleaning의 대상이다.

 

- Data Cleaning ALG.

1. Binning method : 먼저 data를 정렬하고 동등한 깊이의 bin들로 분해한다. 그 뒤 각 빈들의 평균, 중간 값, 구간 경계 값들을 이용해 데이터들을 smoothing할 수 있다. 또한 Binning은 데이터를 카테고리화 하는데도 사용된다.

2. Regression : 회귀 함수를 사용해 데이터를 fitting 시킨다.

3. Clustering : 클루스터링을 통해 Outlier를 찾아내서 제거할 수 있다.

4. Combined computer and human inspection : 컴퓨터로 의심 값을 찾아내고 사람이 확인하며 Outlier 처리.

예시를 확인해보자. 기존 데이터를 정렬 후, 3개의 bin으로 나누었다. 그 후 각 bin의 중앙값으로 bin을 보간할 수도, bin 경계 값에 가까운 쪽으로 변환 시켜버릴 수도 있다.

 

그 외에도 Commercial tool들을 사용하거나 meta data를 사용하여 데이터 불일치를 감지할 수도 있고, Null 규칙, Consecutive 규칙 등 규칙에 따라 cleaning을 할 수도 있다. 


* Data Integration

=> 여러 출처로부터의 데이터를 하나의 일관된 저장소에 결합하는 과정이다. 내가 따로 학부연구생 과정에서 네트워크 시뮬레이션 결과를 COLAB에 가져와 하나의 csv로 합친 것도 해당 과정에 속할 것이다.

-> Schema intergration : 여러 소스에서 구해진 metadata를 구조를 일치시켜 통합하는 것을 의미한다.

-> Entity identification problem : 다수의 데이터 소스에서 실제 세계의 엔티티를 식별하는 문제이다.

(Ex : BEIGE = Kim BEIGE?)

-> 이렇게 데이터 소스들을 한 저장소로 몰다보면, 동일한 실세계의 entity에 대해 속성 값들이 다를 수 있다.

이를테면 scale이 다르게 측정됐거나 표현 방식이 다르거나 하는 문제이다.

더보기

다른 데이터를 설명해주는 데이터를 "Meta data"라고 한다. 데이터에 대한 구조적인 정보를 제공하며, 데이터를 이해하고 관리하고 사용하기 위한 참조로써의 역할을 한다.

예를 들어 한 데이터베이스의 cust_id와 다른 데이터베이스의 customer_number가 동일한 고객을 가르키는 식별자인지를 메타데이터를 통해 알 수 있다.

- Data Integration을 하면 자주 마추칠 수 있는 문제는 같은 객체를 다른 scale이나 이름으로 묘사하여 object identification이 필요한 상황이나, 월급 데이터가 있어서 연봉 데이터는 이미 유도가 가능한 데이터였을 경우.(둘 중 하나만 있어도 되는) 등이 있다. 이러한 중복 속성은 Pearson 상관 계수로 상관 관계 분석을 통해 detection 가능하다.(numerical 일 때.)

만약 categorical data일 경우 X2(chi-square)test를 하면 된다. 이는 관측된 빈도와 기대 빈도가 얼마나 다른지를 검증하는 것이다.

- 이렇게 다양한 과정을 통해 데이터를 신중하게 합치면 중복성, 불일치성을 줄여 데이터 마이닝의 속도와 품질을 향상시킬 수 있다.

 

=> Pearson's product moment coefficient

만약 상관계수 값이 1이라면 A는 B에 의해 완벽하게 대체 설명이 될 수 있는 것이다.

 

=> Covariance(Numeric Data)

- Covariance는 Correalation 과 비슷하다.

Covariance는 식을 보면 알겠지만 각 표본 데이터 A, B가 얼마나 평균에서 벗어난 데이터들을 많이 지니고 있냐로 따지는 것이다. (a-A')*(b-B') 값은 많이 벗어날 수록 커지고, n은 표본의 갯수이므로 고정 값이다.

CovA,B>0 인 경우 A와 B 모두 기대값보다 클 가능성이 높다는 것을 의미한다.

CovA,B=0이라면 A와 B는 독립관계라고 할 수 있지만, 독립 관계라고 Cov가 0인 것은 아니다.(역은 미성립)

CovA,B<0이라면 A가 기대값보다 클 때 B는 그보다 작을 가능성이 크다는 것이다.

 

=> X^2(chi-square) test

chi-square test는 관측된 (Observed) 빈도가 기대 빈도보다 얼마나 차이나는지를 따지는 수치이다.

X2 값이 클수록, 두 변수가 관련성이 있을 가능성이 높다는 것이다.

(X2 값에 가장 크게 영향을 미치는 값은 기대 빈도와 실제 빈도의 차이가 큰 셀이다.)

 

! 상관 관계가 있다고 해서 인과 관계가 있는건 아님에 주의하자. 예를 들어 병원의 수와 도시에 자동차 절도 건수가 상관관계가 보인다고 병원이 많으면 자동차 절도가 많은게 아니다. 이는 인구 수가 많아 일어나는 관계일 수도 있다.


* Data Transformation

- Smoothing : noise data를 삭제하는 것

- Aggregation : 데이터를 요약하는 것.(down sizing)

- Generalization : 더 일반적인 데이터를 얻기 위해 데이터를 추상화하는 것이다. 예를들면 사과 바나나를 과일로 묶어 관리해버린다.

- Normalization : 데이터를 특정한 범위 안으로 통일시켜서 다른 scale을 가지는 값들끼리 비교가 되게 하는 것이다.

(Min-max, Z-score, Normalization by decimal scaling 이 있다.)

- Attribute/Feature construction : 주어진 데이터로부터 새로운 속성을 생성하는 것을 의미한다.

여러가지 정규화 기법.

Min-max는 말 그대로 분모를 range, 분자를 v-min으로 해 new range로 scaling 하는 것이다.

Z-score는 각 데이터 포인트를 Z 변환을 통해 값을 Z 값으로 변환하는 것이다.

Normalization by decimal scaling은 최대 값을 1 이하로 반드는 10^j를 모든 값에 대해 나누는 것이다.

'개인 공부' 카테고리의 다른 글

HCI - Safety  (0) 2024.04.16
HCI - Efficiency  (0) 2024.04.16
HCI - Learnability  (0) 2024.04.10
데이터 과학 - 7. Visualization Theory  (0) 2024.04.10
확률 및 통계 - 6. Expected Values and Variance  (0) 2024.04.09