이전 글(cocosy.tistory.com/32)과 이어집니다.
3. 데이터 전처리
데이터를 데이터 마이닝에 더 적합한 모습으로 가공하는 추가적인 단계다. 데이터 전처리에는 다양한 방법이 존재하며, 그 중 몇가지를 같이 알아보자.
1. 집계 Aggregation
두개 이상의 객체를 하나의 객체로 합치는 것이다. 예를 들어, 같은 DEPARTMENT_ID 값을 가진 레코드에 대하여 SALARY를 모두 집계하여 하나의 DEPARTMENT_ID당 하나의 SUM(SALARY) 을 가지도록 가공할 수 있다.
데이터의 noise를 삭제하고, 데이터 사이즈를 축소하여 전처리 이후에 사용할 알고리즘에 사용될 메모리와 실행시간을 단축하는 효과를 볼 수 있다. 또한 데이터에 대해 더 높은 레벨의 시야를 제공해준다. 예를 들어, 각 가게의 판매량과 해당 가게가 위치한 지역 정보가 있을 때, 같은 지역을 가진 가게의 판매량을 집계하면 각 지역의 판매량을 파악할 수 있다.
물론 단점도 있다. 데이터를 합치고, 평균을 내고, 압축하다 보면 데이터의 디테일은 사라지게 된다.
2. 샘플링 Sampling
전체 데이터 중 일부만 선택하여 사용하는 방식이다. 데이터 전체를 가공하기엔 비용이 너무 많이 소모될 때 사용한다. 해당 데이터셋의 특성을 잘 나타낼 수 있는 대표성 있는 데이터만 추출하는 것이 중요하다.
데이터를 추출하는 방법에는 다음 3가지가 있다:
Random sampling
: 각 데이터 객체가 추출될 확률은 모두 동일하다. 비복원추출과 복원추출이 있다.Stratified sampling
: 특정 타입의 객체가 데이터셋의 대부분을 차지하고 있을 때 랜덤 추출을 시행하게 되면 소수 타입을 갖고 있는 객체들이 거의 뽑히지 않을 확률이 크다. 이러한 경우 타입에 대한 비율을 미리 지정하고 추출하는 방법을 사용하는데, 이것이 계층 추출이다.Progressive sampling
: 추출하는 샘플의 개수를 점점 늘려가면서 모델을 생성하고, 성능을 측정하며 성능의 추이를 파악한다. 성능 그래프의 기울기가 완만해지는 그 시작 부분이 가장 적합한 샘플 개수다.
3. 차원 감축 Dimensionality Reduction
데이터셋의 특성 개수를 줄이는 것이다. 주성분 분석(PCA)을 통해 가능하다.
차원의 수가 적을 때 많은 데이터 마이닝 알고리즘이 더 잘 작동하고, 사람이 더 이해하기 쉬운 직관적인 모델이 생성된다. 또한, 알고리즘에 들어가는 시간과 메모리를 아낄 수 있으며, 시각화 또한 감축하기 전보다 훨씬 쉬워진다.
차원의 저주 The Curse of Dimensionality
데이터의 차원이 증가할수록 데이터를 분석의 난이도가 눈에 띄게 높아지는 현상이다. 차원이 높아질수록 데이터 공간 상에서 각 데이터 객체 사이의 거리가 엄청나게 멀어진다. 차원이 높아짐에 따라 공간은 폭발적으로 증폭하는 반면 데이터의 개수는 그대로이기 때문이다.
차원의 저주로 인한 문제점은 다음과 같다:
- classification에서는 데이터 객체를 분리할 특성이 많으니 내부 노드들의 개수는 많은 반면 잎 노드에 들어갈 데이터의 개수가 매우 적으므로 overfitting이 발생할 수 있다. (내가 잘 이해한건지 모르겠다)
- clustering에서는 앞서 말했던 것처럼 차원이 높아짐에 따라 점들 사이의 거리가 증가하게 되는데, 데이터가 워낙 희소하여 거리 비교가 의미가 없어질 정도가 되어버린다. 또한, 빈 공간에 대한 모델이 잘 생성되지 않는 문제가 발생한다.
4. 특성 선택 Feature Selection
데이터셋에서 Redundant features와 Irrelevant features 를 찾아 버림으로써 유의미한 데이터들만 들고 가는 거다.
Redundant features는 유추 가능한 여분의 정보다. 예를 들어, 어떤 데이터셋에 tax와 price라는 특성이 존재하고, tax = 0.05 * price라는 공식이 알려져 있을 때 이 두 특성 중 하나는 없어져도 되는 redundant feature이다.
Irrelevent features는 예측하고자 하는 값과 전혀 상관없는 특성을 가리킨다. 어떤 학생의 GPA를 예측하는 데 학번은 도움이 되지 않는다. 여기서 학번이 Irrelevent feature다.
Redundant features와 Irrelevent features는 어떻게 찾아낼 수 있을까?
- 기본 상식이나 해당 도메인의 배경지식을 이용한다.
- decision tree같은 알고리즘에 맡긴다. ㅅㄱ
- Feature 간의 correlation을 구하여 correlation이 큰 feature들 중에서 하나만 남긴다.
- 특성 몇 개를 바꾸어가며 알고리즘에 넣어보고, 성능이 제일 괜찮은 특성 조합을 채택한다.
가중치 두기 Feature Weighting
특성을 제거하는 대신, 좀 더 유의미한 정보를 가진 특성에는 높은 가중치를, 덜 중요한 특성에는 낮은 가중치를 주는 방법이다. 가중치를 알아서 계산해주는 알고리즘을 사용하거나, 도메인의 배경 지식을 이용하여 가중치를 결정하는 방법 등을 사용할 수 있다.
5. 새로운 특성 생성 Feature Creation
기존의 특성들로부터 새로운 특성을 만들어내는 방법이다. 데이터셋으로부터 새로운 직관을 얻을 수 있다.
예를 들어, 유물의 질량(Mass)과 부피(Volume)가 주어지고 이것을 통해 유물의 재료를 알아내고자 할 때 질량을 부피로 나누어 밀도(Density)라는 새로운 특성을 만들 수 있다. 밀도는 유물의 재료를 유추할 수 있는 강력한 정보다.
6. 이산화와 이진화 Discretization and Binarization
이진화는 범주형 데이터의 각 값을 column으로 만들어 해당 값에 해당되면 1, 다른 값에는 0을 주는 방식이다.
이산화는 연속형 데이터를 범주형 데이터로 변환하는 것이다. 이때 구간을 잘 나누는 것이 중요한데, 똑같은 범위로 분할하거나, 같은 빈도를 갖도록 분할하거나, k-means 등의 알고리즘을 사용하여 clustering하는 방법이 있다. 마지막 방법은 시간이 오래 걸린다는 단점이 있다.
특정 데이터 마이닝 알고리즘은 범주형 또는 이진 특성을 요구하므로, 그럴 때 위의 방법을 사용한다.
7. 변수 변형 Variable Transformation
특성의 값에 약간의 변형을 주는 방법이다.
- 간단한 식 적용
제곱이나 log, 자연상수의 지수, 루트, 역수, sin, 또는 절댓값을 씌운다. 큰 규모의 데이터에 상용로그를 취하게 되면 데이터의 값이 크게 축소되므로 학습 효율을 높일 수 있으며, 루트나 로그, 또는 역수는 데이터를 정규분포로 바꿀 때 용이하다. - 정규화 (Normalization or Standardization)
"큰 값"을 갖는 특성이 분석 결과에 크게 영향을 주는 것을 막기 위해 사용한다. 예를 들어, 사람들간의 나이와 수입을 비교하고자 할 때, 나이(몇십)보다 수입(몇천만)이 훨씬 더 큰 단위를 갖으므로 수입에 크게 차이가 없음에도 불구하고 나이보다 훨씬 큰 영향력을 끼칠 수 있다.
'강의노트' 카테고리의 다른 글
[2021-1 프로그래밍언어론] Chapter 12: Object-Oriented Programming (0) | 2021.06.01 |
---|---|
[2021-1 프로그래밍언어론] Chapter 11: Abstract Data Types and Encapsulation Constructs (0) | 2021.06.01 |
[2021-1 프로그래밍언어론] Chapter 10: Implementing Subprograms (0) | 2021.05.30 |
[2021-1 데이터마이닝및분석] Chapter 2: Data (3) Similarity (0) | 2021.04.16 |
[2021-1 데이터마이닝및분석] Chapter 2: Data (1) (0) | 2021.04.11 |