Study/데이터 마이닝

[데이터 마이닝 1] 데이터 전처리

빠릿베짱이 2012. 4. 22. 18:53
반응형

1. 데이터 전처리를 하는 이유는?

1) 불완전(incomplete) : 데이터가 비어 있는 경우가 있을 수 있다. 속성에 값이 Null 인 경우

2) 잡음(Noisy) : 에러 또는 잡음이 포함된 경우  예) 나이 : -10

3) 모순된(Inconsistent) : 생년월일과 나이가 맞지 않는 경우, 복사된 레코드의 불일치


2. 데이터 전처리가 중요한 이유는?

- 질 좋지 않는 데이터는 질 좋지 않은 마이닝 결과를 낸다.

- 결과는 데이터에 의존적이기 때문이며, 데이터 웨어하우스는 질 좋은 데이터의 완전한 통합이 필요하다


3. 전처리의 주요 작업

1) Data Cleaning : 없는 데이터는 채우고, 잡음은 제거하며, 모순된 데이터를 해결

2) Data Integration : 여러개의 데이터베이스를 통합함

3) Data Transformation : 정규화(Normalization) 과 집합화?(Aggregation)

4) Data Reduction : 

5) Data Discretization : 



 - 데이터 요약(descriptive data summarization)

 동기 : 데이터를 좀 더 쉽게 이해하기 위해서

Mean : 평균 구하기 

가중치를 사용하여 평균을 구하는 방법도 잇음( Trimmed mean -> 이렇게 표현하는것 같음)

Median : 중값값을 구하는 것으로 만약 홀수라면 정렬한 뒤 가운데 있는 값을 추출하고 짝수라면 중간의 두개의 평균을 Median 값으로 함

Mode : 가장 발생 빈도가 높은 수를 추출

mean-mode= 3*(mean-median) -> 경험적인 수식이라는데, 이 의미는 좀 더 생각할 필요가 잇음


참고 : 가우시안 분포 함수에서  평균- 3시그마 ~ 평균+3시그마 -> 전체의 99.7%를 포함한다.( 통계학)


- 데이터 클리닝

중요성 : 데이터 클리닝은 데이터웨어하우스에서 가장 큰 3개의 문제중 하나이다(by Ralph Kimball)

해야할 작업 

  - missing value 채우기

  - outliers 를 확인하고, 잡음 데이터는 스무딩 처리

  -  불완전한, 일관성이 없는 데이터는 수정

  -  데이터 통합으로 인한 과잉, 쓸데없는 반복 데이터를 해결


   missing data 처리 방법

  - 무시

  - 수동으로 채우기

  - 자동으로 채우기

      - 전역 상수로 정의 , 예) "unknown"으로 새로운 클래스 할당

      - 속성의 평균값으로 채우기

      - decision-tree 또는 Bayesian fomula를 이용하여 채우기

      

  Noisy Data 처리방법

   - Binning

      - 먼저 정렬하고, 같은 범위로 빈을 분할( numeric 데이터의 경우를 얘기하는 것 같음)

      - 각 빈 안에 속한 데이터는 평균, 중간값, 경계값으로 스무딩 할 수 있음

예제)  4, 8, 9, 15, 21, 21, 24, 25, 26, 28, 29, 34

Partition into equal-frequency (equi-depth) bins:

      - Bin 1: 4, 8, 9, 15

      - Bin 2: 21, 21, 24, 25

      - Bin 3: 26, 28, 29, 34

*  Smoothing by bin means:

      - Bin 1: 9, 9, 9, 9

      - Bin 2: 23, 23, 23, 23

      - Bin 3: 29, 29, 29, 29

*  Smoothing by bin boundaries:

      - Bin 1: 4, 4, 4, 15

      - Bin 2: 21, 21, 25, 25

      - Bin 3: 26, 26, 26, 34

 -> 그럼 중간값은 어떻게 할까? 아마도 Mean 방법과 동일하게 빈에서 중간값을 찾아서 빈에 속한 모든 데이터를 중간값으로 교체 하는 것 같다.


   - 빈을 나누는 방법

    - 같은 범위가 되도록 나누는 방법  ( W = (manX - minX)/N  -> N개의 빈으로 나눌때 범위는 W임)

    - N개의 단계로 나누고, 각 빈에는 같은 수의 샘플이 포함되도록 나누는 방법


- 회귀(Regression)

   - outlier를 검출 할 수 있음.


ㅇ 데이터 통합

   - 같의 의미를 갖는 속성 데이터의 표현법이 다른 경우 하나의 규칙으로 저장


ㅇ 데이터 통합 시 중복 제어

   - 객체 또는 속성은 다른 데이터베이스 안에서 다른 이름을 갖을 수 있다.

   - 어떤 속성은 다른 속성으로부터 유도된 속성 값 일 수 있다.

   - > 예) 판매 수량 * 판매 가격   = 매출( 이 "매출" 속성은 유도된 것이지 않을까?)


   -> 이 중복이라는 의미를 레코드로 생각했었는데, 읽어보니 각 속성을 의미하는 것 같음.


데이터의 필요없이 중복된 속성을 찾는 방법은 Correlation analysis


장점 : 안정적인 데이터 통합은 불필요한 중복과 데이터의 불일치를 줄이거나 피하며, 마이닝 속도와 질을 향상 시킨다.



Correlation Analysis ( Numerical Data)



           n : 데이터 레코드 쌍의 수

     R_ab가 0보다 크면 A와 B는 양의 상관관계를 갖으며, 크면 클 수록 강하다

     반대로 0이면 독립이며, 0보다 작으면 음의 상관관계를 갖는다


ㅇ 데이터 변환

  - 정규화 : 이건 다 아는 거잖아요 그냥 패스

  - Z-Score 



 즉 일반적인 정규화가 0~ 1 사이로 만든다면, 이 방법은 평균을 기준으로 -1~1 사이로 대부분 나올 듯? 약간은 넘겟지.


   - Normalization by decimal scaling

     

여기서 v의 범위 중에서 가장 큰 값의 10진수 값? 을 j로 놓고 하면 될듯

예를 들어 987, 90, 10, 29, 300 데이터가 있다면 j를 3으로 두면 0.987, 0.01, 0.029, 0.3으로 변환


ㅇ Data Reduction 

 - 일반적으로 마이닝에서 사용하는 데이터베이스는 엄청 크다. 따라서 복잡한 분석 및 데이터 마이닝을 완벽한 데이터 셋에서 분석을 수행하면 많은 시간이 걸리기 때문에 이 작업이 필요하다.

- 단, 데이터를 줄여 재표현하여 생성한 데이터 셋에서 마이닝 분석을 해도 이전 결과와 유사한, 거의 비슷한 결과가 나와야 한다.


ㅇ 데이터 압축

  - 웨이블릿 변환

  - PCA 


ㅇ 데이터 샘플링

  - 이것은 속성값을 줄이는게 아니라 수 많은 데이터에서 통계학적으로 몇개의 데이터만을 뽑아서 분석함으로써 속도를 높이기 위한 방법


  샘플 추출 방법

  1. SRSWOR( simple random sample without replacement )

      - 데이터 셋에서 한번 뽑앗으면 그 뽑은 데이터는 다시 뽑지 못한다.

  2. SRSWR ( simple random sample with replacement )

     - 데이터 셋에서 한번 랜덤으로 뽑고 다시 그것을 뽑을 수 있도록 완전 제거하지는 않음


속성의 3가지 형태

  ㅇ Nominal -  정렬되지 않는 값  ( 예, 색상, 직업)

  ㅇ Ordinal  - 정렬되는 값, 군인의 계급, 학벌(초 중 고, 전문대, 대학교, 대학원)

  ㅇ Continuous - 실제 숫자 (integer, real numbers)

 

본 게시물이 도움이 되었다면, 꾸~욱~ 눌러주세요.

포스팅 하는데 많은 힘이 됩니다~~~

반응형