📌 데이터마이닝/데이터 전처리

🚩 데이터마이닝 18. Data Transformation

nyamin9 2023. 2. 21. 13:04

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!

 

 


🧩 이번 포스팅에서는 데이터 전처리의 마지막 개념인 Data Transformation 에 대해 알아보도록 하겠습니다.

 


🚩 1. Data Transformation Preview

 

Data Transformation은 데이터의 전체 attribute를 새로운 값으로 변경해주는 일종의 함수를 의미합니다.

 

즉, 기존의 값을 새로운 값으로 바꿔준다는 것에 그 의미가 있습니다.

 

 

🧩 Data Transformation을 위한 method로는 다음과 같은 방법들이 있습니다.

 

 

1. Smoothing

 

▪ 데이터의 noise 제거

 

 outlier를 원래 데이터의 분포에 맞게 바꿈.

 

 

2. Attribute / Feature Construction

 

 기존의 attribute 를 가지고 새로운 attribute를 생성

 

 

3. Aggregation

 

 데이터를 다양한 범주로 나눠서 요약함

 

  ex) 학과 / 성별 / 혈액형

 

 

4. Normalization

 

 데이터를 내가 원하는 특정한 specified된 range로 scaling하는 것.

 

  - Min-Max Normalization : min-max range

 

  - Z-Score Normalization : 표준정규분포화

 

  - Normalization by Decimal scaling : 데이터의 최대 자릿수로 scaling

 

 

5. Discretization

 

 데이터를 컨셉에 따라서 묶어줌

 

 Aggregation과 유사함

 

  ex) 지역을 우편번호에 따라서 나눔

 

 

다섯개의 방법으로 나눠지는데, 이 중에서 주로 사용되는 방법은 Normalization 과 Discretization 입니다. 다음 절부터 이 두가지 방법에 대해서 알아보도록 하겠습니다🙃🙃.

 

 


🚩 2. Normalization

 

Normalization은 데이터, 주로 attribute들을 원하는 범위 내에서 정규화하는 방법이라고 이해하시면 될 것 같습니다.

 


📌 Min-Max Normalization

 

데이터를 설명하고자 하는 새로운 최대, 최소 범위를 설정하여 정규화를 진행합니다.

 

 

실제 데이터의 $range [min_{A},\; max_{A}]$ 와 새로운 $range [new_{-}min_{A},\; new_{-}max_{A}]$ 에서

 

Normalization하려는 값 $v$에 대해서


$v' = \frac{v-min_{A}}{max_{A}-min_{A}}\,(new_{-}max_{A}-new_{-}min_{A})\,+\,new_{-}min_{A}$

 

 


 

예제를 한번 살펴봅시다.

 

 

▪ 원본 value $v$=73600

 

 실제 데이터 range = [12000,98000]

 

 새로운 range = [0.0,1.0]

 

☑️ $v′=73600−1200098000−12000(1.0−0.0)+(0.0)=0.716$

 

 

이렇게 Min-Max Normalization을 사용해서 원본 데이터에서는 정확히 알 수 없었던 데이터의 위치나 분포를 간단하게 알 수 있습니다. 데이터를 상대적인 수치로 표현하고자 할때 특히 유용합니다. 따라서 대부분의 경우에 데이터를 표현하려는 범위를 0과 1 사이로 잡고 normalize를 진행합니다.

 

 


📌 Z-Score Normalization

 

통계학을 알고 계신 분이라면 아마 익숙할 것이라 생각합니다.

 

Z-Score 는 평균이 0이고 표준편차가 1인 정규화된 분포로써 가우시안 분포라고도 합니다.

 

표본의 정규분포를 z-score에서 구하기에, 표본평균과 표준편차만으로 데이터를 정규화할 수 있는 익숙한 방법입니다.

 

 

표본평균 $μ$와 표준편차 $σ$에 대해서


$v'=\frac{v-μ_{A}}{σ_{A}}=\frac{v-μ}{σ}$

 

 


 

예제를 한번 살펴봅시다.

 

 

▪ $μ$=54000

 

 $σ$=16000

 

 $v$=73600

 

☑️ $v′=73600−5400016000=1.225$

 

 

 

이렇게 정규화한 데이터의 값을 위와 같이 평균이 0이고 표준편차가 1인 표준정규분포표에서 찾아 데이터의 위치가 어느 정도에 위치하고 있는지, 그 확률은 얼마인지 알 수 있습니다.

 

 


📌 Normalization by Decimal scaling

 

위 두 방법에 비해 처음에 들었을 때 굉장히 생소했던 정규화 방법이었지만, 개념은 간단합니다.

 

그냥 데이터들을 그 중에 $10^{maximum\,decimal}$, 즉 데이터의 최대 자릿수로 나눠 정규화하는 방법입니다.

 

 

예제를 한번 보시면 이해가 바로 될 것 같습니다.

 

 

$Deciaml\,Scaling\,for\;\;\;data\;[2000,4000,6000,10000,64000]$

 

 

각 데이터의 자릿수가 [4,4,4,5,5] 입니다.

 

그러면 이제 우리는 각 데이터를 $10^{maximum\,decimal}$인 $10^5$으로 나눠주기만 하면 됩니다.

 

따라서 정규화 후 데이터는 아래와 같습니다.

 

 

$[0.02,0.04,0.06,0.1,0.64]$

 

 


🚩 3. Discretization

 

Normalization이 데이터를 정규화해 새로운 범위로 표현했다면, Discretization은 몇가지 범위로 분류하는 방법입니다.

 

데이터는 Nominal, Ordinal, Numeric으로 나눠지는데, Discretization은 Numeric 데이터를 분류하기 위해 사용합니다.

 

 

정리하자면 Discretization은 Continuous attribute의 범위를 구간으로 분할해서,

각 데이터에 범위를 기준으로 Label을 부여합니다.

 

이후 각 Label을 사용해서 실제 데이터 값을 표현해줍니다.

 

 


Discretization을 위한 방법들은 다음과 같습니다.

 

 

▪ Binning : unsupervised

 

 Histogram analysis : unsupervised

 

 Clustering analysis : unsupervised

 

 Classification (Decision Tree) : supervised

 

 Correlation : unsupervised

 

 

Clustering과 Classification, Correlation에 대해서는 나중에 다룰 것이기에, 이번에는 Binning에 대해서 알아볼 생각입니다.

 

 


📌 Binning

 

Binning은 Discretization의 가장 대표적인 방법으로, 데이터를 범위로 분류하여 각각에 Label을 붙여 표현하는 방법입니다.

 

전반적인 데이터의 구간을 나누는 방법이기에, 극값의 영향을 많이 받는다는 특징이 있습니다.

 

 

☑️ Binning의 방법은 크게 두 가지로 분류됩니다.

 

 Equal-width (Equal-distance) partitioning : 각 Bin(구간)의 간격이 같도록 설정

 

 Equal-depth (Equal-frequency) partitioning : 각 Bin 마다 같은 개수의 데이터가 들어가도록 설정

 

 

 

☑️ Binning의 특징을 정리하면 다음과 같습니다.

 

 label의 개수를 줄임으로써 데이터의 사이즈를 줄임.

 

극값의 영향을 많이 받는 Equal-width를 보완하기 위한 방법 : Equal-depth

 

 데이터의 scaling에 좋음.

 

 하지만 Binning을 가지고 데이터를 정확하게 구분지을 수는 없음.

 


예제를 한번 살펴보도록 합시다🙃.

 

 

$data=[4,8,9,15,21,21,24,25,26,28,29,34]$

 

 

1. Equal-depth (Equal-frequency) partitioning

 

▪ 각 Bin 마다 같은 개수의 데이터가 들어가도록 설정

 

  - $Bin 1 : [4,8,9,15]$

 

  - $Bin 2 : [21,21,24,25]$

 

  - $Bin 3 : [26,28,29,34]$

 

 

2. Smoothing by bin means

 

 Equal-depth의 결과 각 Bin에 대해서 평균을 취함

 

  - $Bin 1 : [9,9,9,9]$

 

  - $Bin 2 : [23,23,23,23]$

 

  - $Bin 3 : [29,29,29,29]$

 

 

3. Smoothing by bin boundaries

 

▪ Equal-depth의 결과 각 값을 각 Bin의 더 가까운 양끝 boundary로 보냄

 

  - $Bin 1 : [4,4,4,15]$

 

  - $Bin 2 : [21,21,25,25]$

 

  - $Bin 3 : [26,26,26,34]$

 


🧩 이번 포스팅까지 해서 드디어

 

Data Cleaning

 

Data Integration

 

Data Reduction

 

Dimensionality Reduction

 

Data Transformation

 

까지에 이르는 Preprocessing에 대해서 모두 알아보았습니다. 양도 많고 개념도 많아서 어떤 상황에 정확히 뭘 사용할지 헷갈리기도 하지만, 전반적인 목적은 데이터를 우리가 원하는 형태로 전처리한다는 것을 주로 알고 있으면 좋을 것 같습니다. 각각이 독립적이라기보다는, 데이터를 깔끔하게 만들기 위해서 복합적으로 사용한다는 느낌이 중요하다고 생각합니다🙃🙃.

 

🧩 다음 포스팅에서는 Preprocessing에 대해서 깔끔하게 흝어보기로 합시다🏃‍♂️🏃‍♂️.

 

 


💡위 포스팅은 한국외국어대학교 바이오메디컬공학부 고윤희 교수님의 [생명정보학을 위한 데이터마이닝] 강의를 바탕으로 합니다.