Statistics and Probability2022. 5. 30. 14:47
반응형

이 글은 Nikhita Singh Shiv Kalpana의 'Data Normalization With R'을 번역 및 정리한 글입니다. 원문은 여기서 찾으실 수 있습니다.

*맨 밑에 요약 및 정리가 있습니다.

#데이터 #정상화 #표준화 #Data #Normalization #Standardization #Z-score #Robust #Scalar # Min-Max #UnitLength #머신러닝 #Bioinformatics


데이터 분석에서 데이터 전처리 과정은 가장 중요한 단계 중 하나입니다. 프로그래머들은 종종 이 단계를 무시하거나 건너뛰고 바로 분석으로 들어가는데, 이것은 데이터에 편향을 줘서 예측 정확성에 영향을 주기도 합니다.

Data Normalization은 무엇인가요?

데이터 정상화(Data normalization)는 수치의 범위를 조정하여 표준 수치로 맞추는 자료 전처리 단계입니다. 머신러닝에서는 피쳐 스케일링(feature scaling)이라고도 합니다.

왜 Data Normalization이 필요한가요?

거리 기반 알고리즘(Distance-based algorithms) 및 기울기 강하 기반 알고리즘(gradient-descent-based algorithm) 등의 머신러닝 알고리즘은 자료의 범위가 맞춰져 있어야 합니다. 그 이유를 알아보기 위해 아래의 예를 같이 보겠습니다. 1.1년에서 10.5년까지 범위인 경력과 $37k에서 $122k까지 그에 상응하는 연봉의 두 변수를 가진 35명의 데이터가 있습니다 (출처: https://www.kaggle.com/rsadiq/salary)

SVM, K-Means, KNN과 같은 거리 기반 알고리즘(distance-based algorithms)은 거리함수(distance function)를 이용하여 대상 간의 유사점을 찾아 구분합니다. 이러한 알고리즘은 변수의 크기에 민감합니다. 만약 범위를 동등하게 맞추지 않으면, 더 큰 범위의 변수인 연봉이 상대적으로 작은 변수인 경력에 비해 더 많은 영향을 가지는 것으로 판단하게 될 것입니다. 그리고 이것은 데이터에 편향을 가져와 결국 정확도에 영향을 미칩니다.

​이와는 달리 기울기 강하 기반 알고리즘(gradient-descent-based algorithms)은 벡터 값으로 이루어진 함수 θ를 사용합니다. 변수들의 범위 서로 다를 때, θ는 범위가 작은 변수에서 그 학습 속도가 더 빠르기 때문에 더 빨리 강하합니다. 그러므로 변수들이 같은 학습 속도를 가진 채로 움직이도록 조정할 필요가 있습니다. 그리고 이것이 최소값에 더 빠르게 수렴하도록 만들죠. 이 현상은 아래의 그래프에서 관찰할 수 있습니다. 왼쪽 그래프는 범위 조정이 되지 않아서 (작은 범위의 변수가 더 느린 학습 속도를 가지기 때문에) 범위 조정이 된 오른쪽의 그래프보다 더 시간이 많이 걸립니다.

주성분 분석(Principal component analysis; PCA)은 최대의 분산을 포착하려함으로 범위 조정이 필요합니다. 만약 범위가 조정되어있지 않다면, 더 큰 범위를 가진 변수가 다른 변수들에게 영향을 미치는 편향이 생길 수 있습니다.

나무 기반 모델(Tree-based models)은 회귀와 분류에 특정한 규칙을 따릅니다. 그러므로, 여기서는 범위 조정이 필요치 않습니다.


Data Normailzation의 방법들

1. Z-score Normalization (Standardization; 표준화)

2. Robust Scalar

3. Min-Max Normalization

4. Mean Normalization

5. Unit Length


Z-score Normalization (Standardization)

Z-score normalization은 각 관측치 x에서 표본 평균을 뺀 후, 그것을 표준 편차로 나눈 x'를 다룹니다. 이러한 x'의 평균과 표준편차는 각각 0과 1이 됩니다. 공식은 다음과 같습니다:

 

Z-score normalization을 이용하는 R 예제 코드
Z-score normalization을 적용한 데이터의 첫 6행

 

위: 경력 햇수의 표준화, 아래: 연봉의 표준화

위의 데이터 분포 설명에 보이듯이, 변수 표준은 0에 근접하고 표준편차는 1이 됩니다. 또한, 최소값과 최대값은 수치 범위를 벗어납니다. 표준화(Standardization)가 범위 제한을 하진 않지만, 표본 평균과 표준편차는 여전히 이상치(outlier)에 영향을 받습니다. 이러한 이상치(outlier)가 있을 때에는, Robust scalar 방식을 쓰는 것이 좋습니다.


Robust Scalar

바로 위에서 언급한 것처럼, Robust Scalar는 이상치(outlier)가 있을 때에 사용할 수 있습니다.

Robust scalar는 원래 값인 x에서 중간값(median)을 뺀 다음, 1사분위와 3사분위 사이의 범위인 사분위수 범위(interquarile range)로 나눠주어 x'로 변환시킵니다. 그 공식은 다음과 같습니다:

Robust scalar를 이용한 R 예제 코드

데이터 분포 설명에서 보이듯이, 중간값(median)은 0이 됩니다. 또한, 평균과 표준편차는 0과 1이 아닙니다. 적용 후 최소값과 최대값 또한 제한되지 않습니다.


Min-Max Normalization

Min-Max normalization은 모든 x 값을 0과 1사이의 값으로 변환하며, 이것은 (0-1) normalization으로 불리기도 합니다. 만약 데이터가 음수 값을 가지면, 수치 범위는 -1에서 1 사이로 지정합니다. Min-max normalization의 공식은 다음과 같습니다:

정해진 0과 1사이가 아니라 특정한 [a, b] 간격으로 범위 조정도 가능합니다. 이러한 방법은 예를 들어 최대값이 255이고 최소값이 0을 가진 픽셀의 이미지 처리에 쓰입니다. 공식은 다음과 같습니다:

Min-max normalization을 이용한 R 예제 코드

위의 분포에서 보는 것과 같이, Min-max normalization을 적용한 수치의 최소값은 0, 최대값은 1이 됩니다. 모든 수치는 이 사이에서만 존재합니다.


Mean Normalization

Mean normalization은 Min-max normalization과 같은 방식으로 수치를 변환시킵니다. 한가지 다른 점은 먼저 모든 값 x에 표본 평균을 뺀다는 점입니다. 공식은 다음과 같습니다:

Mean normalization을 이용한 R 예제 코드

Unit Length Normalization

Unit length normalization은 각각의 x 벡터를 유클리드 길이(Euclidean length)로 나누어서 변환시킵니다.

Unit length normalization을 이용한 R 예제 코드

Min-max normalization과 Unit length는 둘 다 범위가 [0,1]로 제한됩니다. 이것은 만약 데이터에 이상치(outlier)가 있다면 큰 단점입니다. 이상치가 있는 데이터는, Robust scalar 방법을 사용합니다.


Scatter Plot

이제 산점도(scatter plot)을 그려서 normalization 이전과 이후의 데이터를 비교해 보겠습니다. 원래의 데이터를 그리는 코드는 다음과 같습니다:

 

이제 normalization을 적용한 산점도를 그려보겠습니다.

Scatter plot을 그리는 R 예제 코드

 

원래의 데이터와 Normalization을 적용한 데이터의 분포에서 볼 수 있듯이, 연봉과 경력 년수 두 변수 사이의 관계 및 데이터의 분포에는 변화가 없습니다.


Normalization vs. Standardization

가장 널리 쓰이는 normalization 방법은 min-max normalization과 standardization입니다. 이 둘을 비교해보겠습니다.

R 코드 예제

위의 그래프에서 보이듯, min-max normalization은 수치들이 0과 1사이인 반면에 standardization의 수치들은 0-1 범위를 벗어납니다.


Normalization vs. Standardization을 KNN 알고리즘에 적용한다면?

이러한 normalization 방법들을 KNN과 같은 머신러닝 알고리즘에 적용해 보겠습니다.

KNN에 적용한 R 예제 코드

두 방법을 비교하기 위하여 평균 제곱근 오차(root mean square error; RMSE)를 각각 계산해보았습니다. RMSE가 낮을 수록, 모델이 더 잘 맞는다는 의미입니다. 아래의 표에서 보이듯, normalization을 거치지 않은 데이터는 아주 큰 RMSE를 가집니다. 또한, min-max normalization이 KNN 알고리즘에서는 더 나은 결과를 가져오는 것도 알 수 있습니다.

어떠한 Normalization 방법을 선택할 지는 어려운 질문입니다. 하지만, 이 질문에 정답은 없습니다. 아주 많은 경우에, 우리가 어떠한 질문을 던지느냐에 따라서 방법의 선택이 결정될 수 있습니다.


요약 및 정리:

1. 0-255 사이의 픽셀값을 가지는 이미지 처리와 같이 특정한 범위 내로 표준화를 해야한다면 min-max normalization을 사용합니다.

​2. 데이터가 평균을 중심으로 분포하길 원한다면, 그리고 표준편차가 1로 동일하길 원한다면, Z-score standardization을 사용합니다.

​3. 데이터의 분포를 모르고, 데이터가 가우시안 분포(Gaussian distribution)를 따르지 않는다면, min-max normalization을 사용합니다.

​4. 데이터가 가우시안 분포를 따른다면, standardization을 사용합니다.

728x90
반응형
Posted by Gun들지마
Statistics and Probability2013. 11. 26. 05:59
반응형

리서치 프로젝트와 관련하여서 Dill and Bromberg의 Molecular Driving Forces 라는 책을 읽게 되었습니다.

 

배운 내용들을 하나씩 정리해 나갈 예정인데, 챕터1은 기본적인 확률과 통계에대해서 설명을 해놓았네요.

 

기본적인 개념은 알기에 따로 생각해 볼것이나 좀 더 배워야 할 점만 적어놓도록 하겠습니다.

 

Degree of Correlation: Degree of Correlation g 는 'A가 주어졌을 때의 B의 확률'과 B 혼자만의 확률의 비례입니다. A가 얼마나 B에 영향을 미치는지 알 수 있습니다. 그리고 이건 다음과 같이 계산할 수 있습니다.

 

 

만약에 g = 1이면 A와 B는 서로 독립적입니다 (independent)

g > 1이면 A와 B는 positively correlated입니다. (A가 증가하면 B도 증가합니다)

g < 1이면 A와 B는 negatively correlated입니다.

 

만약 g=0 이고 p(A)가 일어난다면, p(B)는 절대 일어나지 않습니다.

 

Binomial and Multinomial Distribution Functions

 

자연에서 일어나는 현상을 설명할 때 유용한 확률 분포가 둘 있는데, 그게 Binomail과 Multinomial distributions입니다.

Binomial distribution은 각각의 독립적인 이벤트들이 두 mutually exclusive 결과를 나타내는 현상을 설명합니다. 예를 들어서 동전의 앞과 뒤, 네 와 아니오, 위와 아래 등의 mutually exclusive한 결과들이죠. 이 결과들을 Bernoulli trials라고도 합니다.

이 분포는 다음과 같이 나타낼 수 있습니다.

 

Multinomial probability distribution은 앞서 binomial과 비슷하지만, 이벤트의 결과가 두개 이상의 것으로 나타내어질 수 있습니다. 그러므로 Multinomial probability distribution 은 좀더 일반화 된 분포라고 볼 수 있는데요, 다음과 같이 나타냅니다.

 

 

728x90
반응형
Posted by Gun들지마
Statistics and Probability2012. 12. 7. 09:01
반응형

Metropolis-Hastings algorithm

메트로폴리스-해스팅스 알고리즘

 

지금 하고 있는 Evolutionary Simulation에서 Sampling을 할 때에 Metropolis-Hastings algorithm이 쓰입니다.

당연히도, 한국 싸이트에서 그닥 자세히 설명해져 있는 사이트가 많이 없어서 (제가 게을러서 제대로 찾아보지 못한것 일 수도 있구요.) 공부하면서 알아가는 내용을 여기에 적어보겠습니다.

 

오올~ 일단 위키피디아에 여기에 대한 한국어 사이트가 있군요.

메트로폴리스-해스팅스 위키피디아 한국어 사이트

 

전문을 옮겨보겠습니다.

 

메트로폴리스-해스팅스 알고리즘(Metropolis-Hastings algorithm)은 직접적으로 표본을 얻기 어려운 확률 분포로부터 표본의 수열을 생성하는 데 사용하는 기각 표본 추출 알고리즘이다. 이 수열은 주어진 분포에 근사하는 마르코프 연쇄 몬테 카를로를 모의실험하거나 예측치와 같은 적분을 계산하는 데 사용될 수 있다. 이 알고리즘은 1953년 볼츠만 분포의 특별한 경우를 위해 이것을 발표한 니콜라스 메트로폴리스와 이것을 1970년에 일반화한 해스팅스의 이름을 따서 명명되었다. 깁스 표집 알고리즘은 메트로폴리스 해스팅스 알고리즘의 특별한 경우이며, 일반적인 적용에는 제약이 있지만 보통 더욱 빠르고 사용하기 쉽다.

 

기각 표본 추출 알고리즘? 기각? 흠..... 잘 이해가 안되지만 일단은 직접적으로 표본을 얻기 어려운 확률 분포로부터 표본의 수열을 생성한다는 데에 있어서는 MCMC(Marcov Chain Monte Carlo)랑 비슷한것 같네요.

 

영문 위키피디아로 가보겠습니다.

한글 위키피디아의 전문은 영문 위키피디아의 첫 문단을 옮겨적은 것과 비슷하네요.

일단 메트로폴리스-해스팅스 알고리즘(이하 MHMCMC라고 부르겠습니다.)은 MCMC의 한 종류이고, 주로 다차원의 (multi-dimensional) 분포로부터 샘플링을 하는데 쓰여진다고 합니다. 특히 차원의 갯수가 많을 때 말이죠.

 

MHMCMC는 어떠한 확률분포로부터도 표본을 추출할 수 있습니다. Bayesian 방법으로는 표본을 추출하는 데에 있어 normalization factor를 신경써야되고, 이러한 normalization은 때대로 계산하기가 아주 복잡하고 힘들죠.

 

간단한(!) 과정은 이러합니다. 마르코프 연쇄에 연결된 표본들의 수열을 생성하는거죠. 이렇게 오랫동안 하다보면, 이 표본의 분포는 원래의 확률분포와 동일해 집니다.

조금만 더 자세히 들여다 볼까요?

 

첫번째로,  임의의 확률 분포 함수를 정합니다. Q(x'|x_t). 이때 이 확률 분포 함수는 x_t라는 표본이 주어졌을때 새로운 값 x'를 구할 수 있어야되고 symmetric 해야됩니다. [Q(x'|x_t) = Q(x_t|x')] 주로 쓰이는 이 임의의 확률 분포 함수는 가우시안 분포가 있다고 하네요.

그리고 임의의 한 값을 첫 표본으로 정합니다.

그리고 MCMC 스텝을 시작하죠.

1. 새로운 표본값 x'를 저희가 정한 임의의 확률 분포 Q(x'|x_t)로부터 구하고,

2. acceptance ratio를 a = P(x') / P(x_t) 로 계산합니다.

3. 만약에 이 a 가 1이상일 때에 x'를 다음 표본으로 정합니다.

4. 만약에 a가 1 이하일 때에는 x'를 a의 확률에 따라 다음 표본으로 수용할 껀지 안 할껀지 정합니다. 여기서 정할 때에는 1과0사이의 무작위의 수를 구해서 이 무작위의 수가 a보다 크면 거절, 작으면 수용합니다.

 

MHMCMC는 이런식으로 랜덤하게 표본사이를 뛰어(!) 다닙니다. 다음 단계로 갈 때도 있고, 안갈 때도 있구요. 그냥 MCMC랑 좀 비슷하네요. 여기서 중요한 개념이 이 acceptance ratio인데 이 ratio가 다음 단계로 갈 확률을 결정한다고 할 수 있지요.

 

그러니까 이 MHMCMC는 점프한다고 많이들 비유를 하는데요. 한가지 상태가 있으면 그다음 상태로 정해진 확률로 점프하는거죠. 점프하는 거리가 가까우면 확률도 늘어나고, 점프를 못하겠다 싶으면 그냥 그자리에 있는거에요.

 

이러한 MHMCMC는 어느정도의 약점도 가지고 있는데요.

1. 추출된 표본들이 모두 연결되어 있다는 점입니다. 길게보면 표본들이 저희가 추출하고자하는 확률분포를 나타낼 수 있지만, 가까이에 있는 표본들은 서로 연결되어있고, 확률분포의 일부분만을 나타내기때문에 만약에 저희가 두개의 독립된 표본을 구할려면 이 MCMC를 많이 돌려서 중간에 나온 표본들은 죄다 갖다 버려야 되는 단점이 있네요.

2. 그리고 한가지 더는 만약에 이 점프의 시작이 확률분포 상 적게 분포되어있는 곳에서 시작한다면, 확률분포를 적절하게 나타내게 될때까지 점프를 한두번 해서는 안된다는 문제가 있죠. 그래서 이렇게 좀 점프 맘대로 하게 놔두는 구간이 있는데, 이 구간을 'burn-in period'라고 합니다.

 

그럼 좀더 자세한 방법은 다음 글에서 계속 하도록 하죠.

 

728x90
반응형
Posted by Gun들지마
반응형

Bayes Factor (베이즈 요인)

 

통계학에서 베이즈 요인(Bayes factors)는 hypothesis testing을 위한 대체 방법입니다. 이 방법으로 Bayesian model comparion을 할 수 있습니다.

 

모델 선택에서 모델을 M, 데이터를 D로 나타냈을때, 사후확률 (posterior probability)는 다음과 같이 나타낼 수 있습니다.

 

 

여기서 Pr(M|D)는 likelihood이며 주어진 데이터(D)가 어떤 특정한 모델(M)에 의해 생성되었다는 것을 전제로 함을 나타내고 있습니다.

주어진 데이터 (D)로 두개의 모델 M1과 M2를 수치화한 Θ1과 Θ2 를 써서 베이즈요인 K를 나타내면 다음과 같습니다.

 

여기서 베이즈 인자를 적분하는 대신에 최대우도 추정(Maximum likelihood estimation)을 쓴다면 이 공식은 그대로 likelihood-ratio test가 되겠지요.

하지만 likelihood-ratio test와는 달리 베이즈 요소 에서는 모든 변수(parameter)에 대해서 적분을 해버리기 대문에 하나의 변수에 의지하지 않는다는 것이 다른점입니다.

 

이렇게 구해진 베이즈 인자는 다음과 같이 해석할 수 있습니다.

K가 1보다 큰 경우에는 보통 M1이 데이터에 M2보다 더 잘 들어맞는다고 할 수 있습니다. 1보다 작을 경우에는 그 반대이구요. 하지만 이 수치의 크기에 따라서 하나의 모델이 다른하나에 비해서 얼마나 더 잘 들어맞느냐를 결정하는데요. 보통 이 수치가 1에서 1.6이하이면 별로 나을게 없네~ 라고 말하기도 합니다. 

 

예를 하나 들어볼까요?

동전 던지기를 해서 앞면이 나오면 success, 뒷면이 나오는 fail을 하는 랜덤변수가 있다고 가정해 봅시다.

여기서 앞면이 나올 확률이 1/2이라는 가정을 모델1 (M1)이라고 하고 M2는 확률은 전혀 모르지만, 균등분포를 따른다고 가정하고 관찰 결과, 200번 던져서 115번 앞면이 나온다고 해봅시다.

이 예는 이항분포에 적용이 되어서 likelihood 또는 probability는 다음과 같이 나타낼 수 있습니다.

 

그러면 모델1은

 

또 모델2는

 

 

그러므로 베이즈요소 K는 약 1.197 정도 가 되는데요. 1.6보다 작으므로 별로 나을게 없네~~ 라고 말하시면 됩니다.

 

 

728x90
반응형
Posted by Gun들지마
반응형

모델 선택 (Model Selection)

 

모델 선택은 주어진 데이터로, 통계학적 모델을 선택하는 일입니다. 가장 간단한 경우에, 기존의 존재하는 자료가 고려됩니다. 가장 간단한 형태로, 모델 선택은 과학적인 일의 수행에 가장 기본적인 일 중에 하나입니다. 관찰된 결과들을 설명하는 이론을 결정하는 것은 그 관찰 결과를 수학적인 모델로 설명하고 예측하는 일과 관련되어 있습니다.

 

예를 들어서 갈릴레오가 피사의 사탑에서 구슬 떨어뜨리는 실험을 했죠? (실제로 하진 않았나요?) 하지만 경사면에서 굴리는 일은 했는데 그 굴러가는 구슬의 속도와 움직임은 그의 이론에 맞아 떨어집니다.

 

그 하고 많은 모델 중에서 실제의 현상과 가장 가까운 모델을 어떻게 고를까요? 일단 과학자는 평소 많이 쓰이는 모델이나 자신이 생각하기에 가깝다는 모델을 여러개 고릅니다. 모델이 골라졌으면 수학적인 분석으로 그중에 가장 나은 모델을 고릅니다. 여기서 '그중에 가장 나은' 이라는 말은 상황에 따라 달라지기도 하죠. 가장 간단한 모델이 나을 수도 있고, 가장 복잡한 모델이 현실을 잘 반영한 나은 모델일 수도 있죠. 하지만 복잡하면 복잡할 수록 실생활에서 쓰이긴 어렵겠죠. 이러한 선택은 'likelihood ratio'로 구할 수가 있습니다.

 

모델을 선택하는 방법에는 Statistical hypothesis testing이나 Scientific method 등이 포함됩니다.

이 모델 선택의 구체적인 분류로는 여러가지가 있지만, 일단 저희는 Bayes factor와 Akaike information criterion, 그리고 Bayesian information criterion 등을 좀더 자세히 알아볼려고 합니다.

 

 

와나 위키피디아보고 옮긴건데 뭔 말인지 저도 전혀 모르겠네요 ㅡㅡ;;;

 

728x90
반응형
Posted by Gun들지마