캐티시 2021. 3. 17. 23:43

1. Data Preprocessing (데이터 전처리) 의 주요 작업

- Data Cleaning (데이터 정제)

        - 결측치 채우기, 노이즈 조정, 이상치 식별 및 제거, 일관성 문제 해결.......

- Data Integration (데이터 통합)

        - 다양한 데이터베이스, 데이터큐브, 파일 등을 하나로 통합

- Data reduction (데이터 축소)

        - 차원 축소, 숫자 축소, 데이터 압축

- Data transformation (데이터 변환)

        - 정규화.....

- Data Discretization (데이터 구분)

        - 개념 계층 생성.......

 

2. Data Cleaning (데이터 정제)

- 현실의 데이터는 깨끗하지 못하고 많은 문제를 내포하고 있기 때문에 그대로 사용할 수 없음

 

- 현실의 데이터가 가지는 문제들

  • Incomplete (불완전) : attribute 값이 부족하거나, 통합 데이터만 존재한다     ex) 직업 = "    " (missing data)
  • noisy (부정확, 노이즈 존재) : 여러 노이즈, 오류 값, 이상치가 존재한다         ex) 월급 = "-10" (error)
  • inconsistent (비일관적) : 네이밍 관행이나 데이터 코드에서의 비일치성이 존재한다 ex) 나이 = "20" , 생년 ="1980"
  • Intentional (고의적인 부정확) : 사용자가 의도적으로 입력한 부정확한 데이터가 존재한다, disguised missing data

 

2-1. Incomplete Data (결측치)

- 데이터는 항상 사용가능한 것이 아니며, 많은 tuple이 어떤 attribute에 대해 저장된 값이 없을 수 있다

 

- 데이터 결측의 원인

  • 관측 장비의 오작동으로 기록되지 않거나 잘못 기록됨
  • 다른 기록된 데이터와 일치하지 않아서 삭제됨
  • 오해로 인해 기록되지 않음
  • 데이터 입력 당시 중요하게 여겨지지 않아 비포함됨

- 결측된 데이터는 추론하여 채울 필요가 있음

 

2-2. 결측된 데이터의 처리 방법

- 해당 행 (tuple)을 무시하기 : 클래스 라벨이 없는 경우 일반적으로 사용, 결측값이 포함된 행을 제외

        -> attribute 마다 결측값의 비율이 많이 다르다면 효과적이지 않음 (데이터의 손실)

 

- 결측치를 수작업으로 채우기 : 결측치가 많은 대량의 데이터 집합에서는 부적합함

 

- 글로벌 상수값을 이용해 채우기 : 모든 attribute의 결측값을 unknown, -∞ 등의 라벨로 대체

 

- 중심 경향 측정값을 이용해 채우기 : 해당 attribute의 평균, 중간값, 최빈값 등으로 대체

 

- 주어진 tuple과 동일한 class에 속하는 모든 sample의 평균이나 중위수를 이용해 채우기

 

- 가장 가능성이 높은 값으로 채우기 : decision tree (의사 결정 나무), Bayesian formula (베이지안 추론) 등                                              추론 기반 도구로 결측치의 대체값을 결정

 

3. Noisy Data (노이즈 데이터)

- 노이즈 : 측정 변수의 랜덤 오류나 분산

- 노이즈 데이터의 원인

  • 데이터 수집 도구의 결함
  • 데이터 입력 시의 문제
  • 데이터 전송에서의 문제
  • 기술적인 한계
  • 네이밍 관행의 비일관성       ex) ranking = "A,B,C" or "1,2,3"

 

3-2. 노이즈 데이터의 처리 (smoothing) 방법

- Binning (비닝) : 데이터 값들을 먼저 정렬한 뒤 여러개의 빈(bin)으로 분할. 노이즈는 빈의 평균값, 중간값 등으로 대체

 

- Regression (회귀 분석) : 데이터를 회귀 식에 맞는 값으로 대체

 

- Clustering (클러스터링) : 데이터 값들을 클러스터링 (군집화)하여 이상치를 탐지하고 제거

 

- 컴퓨터 조사, 인력 조사 : 의심되는 값을 감지하여 사람이 직접 이를 확인

 

4. 프로세스로서의 데이터 정제

4-1. Data discrepancy detection (데이터 불일치 감지)

- 메타데이터 (데이터에 대한 데이터) 사용 ex) 도메인, 범위, 상호 종속 관계, 분포

 

- 특정 룰을 조사 ex) uniqueness rule (특정 룰), consecutive rule (연속 룰), null rule (널 룰)

 

- 모순 감지 툴 사용

        - Data scrubbing : 간단한 도메인 지식을 이용하여 데이터의 오류 감지 및 수정

                ex) 우편번호, 맞춤법 체크....

        - Data auditing : 룰과 관계를 분석하고 이를 위반하는 데이터를 감지

                ex) 상관관계를 발견하기 위해 통계 분석 이용, 이상치 발견을 위해 클러스터링 이용

 

4-2. Data migration (데이터 이동) 과 Data integration (데이터 통합)

- 데이터 이동 툴 사용 : 데이터 이동 시에 특정한 데이터 변환이 가능

 

- ETL (Extraction/Transformation/Loading) 툴 사용 : GUI를 통해 특정한 데이터 변환이 가능

 

5. 데이터 통합 (Data Integration) : 다양한 데이터 저장소의 데이터를 한 곳으로 통합

- 다양한 데이터 소스들의 스키마를 통합하는 것이 필요 ex) A.customerId == B.cust-ID

 

- Entity Identification problem (엔티티 확인 문제) : 다양한 데이터 소스에서 수집한 실제 현실의 엔티티를 매칭하는 것은 어려운 문제임

 

- 데이터 값 사이의 충돌을 감지하고 해결하는 과정이 필요

        - 실제 현실의 같은 엔티티에 대한 것인데도, 이를 나타내는 attribute의 값이 데이터 소스마다 다를때

        - 이는 데이터 소스마다 표현 방식, 단위 등의 차이로 인해 나타날 수 있음

 

6. 데이터 통합시의 Data redundancy (데이터 중복) 처리

- 여러 데이터베이스를 통합하는 과정에서 데이터 중복이 자주 발생함

        - Object Identification : 같은 attribute나 object가 다른 데이터베이스의 다른 이름으로 포함되어있음

        - Derivable Data : 어떤 attribute는 다른 table의 attribute로 부터 얻어질 수 있음

                ex) 연간 수익 <- 연간 매출 - 연간 지출 / 나이 <- 생년월일

 

6-1. Nominal data의 Correlation Analysis (상관 분석) : χ2 test (카이 제곱 검정)

- 두 attribute A, B에 대해 A가 m개의 개별값 (a1, a2, ... , am)을 가지고, B가 n개의 개별값 (b1, b2, ... , bn)을 가질 수 있을 때 A가 ai의 값을, B가 bj의 값을 가지는 결합사건 (Ai, Bj) 는 m x n의 행렬로 나타난다

- Observed value는 결합사건 (Ai, Bj) 실제 빈도수, Expected value는 예측 빈도수이다

 

- Expected value = (Ai의 값을 가지는 tuple의 수) * (Bj의 값을 가지는 tuple의 수) / 전체 tuple의 수

 

- χ2의 값이 높을 수록, 두 변수가 연관 되어있을 가능성이 더 높다

 

- 상관관계가 반드시 인과관계를 암시하지는 않는다.

 

6-2. Numeric Data의 Correlation Analysis : Correlation coefficient (상관계수, Pearson Product)

- 두 attribute A와 B가 있고, n개의 tuple 중 tuple i에서 A와 B의 값이 ai, bi 이다

- A̅와 B̅는 각각 A와 B의 평균이며, σA와 σB는 각각 A와 B의 표준편차이다.

- 이 값은 [-1, 1]의 범위를 가진다

- 값이 0보다 크다면, 두 attribute는 양의 상관관계를 가진다. (A값이 커지면 B값도 커진다)

- 값이 0이라면 두 attribute 간의 상관관계는 없다, 두 attribute는 서로 독립이다

- 값이 0보다 작다면, 두 attribute는 음의 상관관계를 가진다. (A값이 커지면, B값은 작아진다)