모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!
🧩 이번 포스팅에서는 데이터 전처리의 마지막 개념인 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에 대해서 깔끔하게 흝어보기로 합시다🏃♂️🏃♂️.
💡위 포스팅은 한국외국어대학교 바이오메디컬공학부 고윤희 교수님의 [생명정보학을 위한 데이터마이닝] 강의를 바탕으로 합니다.
'📌 데이터마이닝 > 데이터 전처리' 카테고리의 다른 글
🚩 데이터마이닝 19. 데이터 전처리 리뷰 (0) | 2023.02.24 |
---|---|
🚩 데이터마이닝 17. Reduction - 주성분분석 구현 (0) | 2023.02.20 |
🚩 데이터마이닝 16. Reduction - 주성분분석(PCA) (0) | 2023.02.20 |
🚩 데이터마이닝 15. Reduction - Subset Selection (0) | 2023.02.19 |
🚩 데이터마이닝 14. Dimensionality Reduction (0) | 2023.02.19 |