728x90
728x90
728x90

A distributed system is a collection of independent components located on different machine sthat share messages with each other in order to achieve common goals.

 

 

 

Cluster:

소프트웨어로 연결된 machines의 set, 협력하여 task처리를 위함, 클러스터 밖에서는 클러스터는 곧 a single system으로 로 보임

 

Node:

클러스터 구성 machine으로 server/virtual machine 등

 

Commodity hardware:

다나와 같은 데서 그냥 구입가능한(off-the-shelf) 기성품 하드웨어를 가리킴

 

Scalability:

분산 시스템에서 하드웨어(가용 컴퓨팅 리소스 변경)/소프트웨어(스케쥴링 메소드 변경)으로 dynamically 컴퓨팅 퍼포먼스를 조절하는 능력

(하드웨어적으로는 # of processors 변경, hard disk capacity변경 등, 소프트웨어적으로는 the degree of parallelism 변경, 스케쥴링 방식 변경 등)

 

Fault tolerance:

분산 시스템에서 리소스를 일부 제거하여도 연속적으로 동작하는 능력

 

Robustness:

기대하는 환경에서가 아닌 좀 더 무리한 상황(stress)에서 작동하는 능력

 

Rolling upgrades:

한번에 모든 nodes에 upgraded software를 deploy하는 게 아니라 점진적으로 upgraded software를 deploy하는 전략

 

Vertical scaling:

CPU/RAM/DISK 등을 single machine에 추가하는 방식의 scaling

 

Horizontal scaling:

other machines을 기존 pool of resources에 추가하는 방식의 scaling

 

Replication:

different machines에 same data를 replicate

이렇게 함으로써 fault tolerance/reduce latency 효과가 가능

 

Partitioning:

splitting dataset into parts and distributing them among different nodes.

이렇게 함으로써 different nodes 각각이 분산 처리를 통하여 scalability 효과가 가능

 

Data locality:

computation이 가능한 영역으로 데이터를 옮기는 것이 아니라,

데이터가 있는 곳으로 computation이 옮기는 방식

이는 network traffic을 줄이는 효과가 가능

 

Rebalancing partitions:

partitioning에서 특정 nodes에 data가 더 많이 몰리거나 node의 추가/제거 가 이루어질 때

한 node에서 다른 node로 data이동을 가리킨다.

 

Consistency:

모든 nodes가 동시에 같은 데이터를 보는 능력, 그러한 환경이면 system is consistent라 한다.

 

Availability:

distributed system에서 어떠한 시간에서도 모든 request가 non-error response를 받아보는 능력

(Not-consistent available이라면, 모든 request가 non-error response를 받지만, 그 결과가 not recent data이기도 한 상황)

 

Partitiion tolerance:

nodes사이에 충분한 replica를 두어(replication) 특정 nodes사이에 네트워킹이 누락되더라도 타 nodes의 도움으로 system이 fail하지 않는 능력을 가리킴

 

CAP Theorem:

Consistency/Availability/Partition tolerance, 이 셋 중 최대 2개만 guarantee할 수 있는 Theorem

(즉 3개다 만족시킬 순 없고 CA/CP/AP 중 하나를 택하는 게 최선이라는 것)

 

Read after write consistency:

데이터의 변화 즉시 그 변화를 확인 or 최신 데이터 로드 를 할 수 있는 능력

 

Eventual consistency:

분산 시스템 내 일련의 writing/updating이 있다면, 그 작업으로 인한 타 nodes에 update가 필요할 수 있다. 그 변화가 시스템 전체에 업데이트 되는 능력을 가리킨다.

(예를 들어 한 남자의 구매내역이 변경 시, 그로인한 타 통계지표 변화가 얼만큼 빨리 변화가 이루어지냐는 것)

 

Small files problem:

Hadoop에서는 HDFS방식의 small files가 많은 방식으로의 저장형태면 computing performance가 현저히 떨어지는 현상

728x90
728x90

기본 용어:

Hypothesis tests(=significance tests):확인된 효과가 뽀록으로 인한건지, 레알 효과 있는건지 테스트, 가설검증

Null hypothesis:뽀록때문이다! 라는 가설

Alternative hypothesis:뽀록이 아니다!라는 가설(대개 실험자가 증명하고 싶은 가설)

One-way test:뽀록이 한방향으로? 

Two-way test:뽀록을 양방향으로 ?

 

가설검증이 필요한 이유:

예를 들어, 가격 A, B중 B가 더 순이익이 더 클것이라는 것을 입증하는 데에 있어서

"그냥 A/B testing 돌려서 B가 더 순이익이 큰 것을 확인하면 되지 않느냐?" 라는 물음을 하는 데에 배경에는

인간은 자연적으로 우연히 일어나는 행동의 범위를 과소평가하는 경향이 있다.

예를 들어 extreme events는 예상할 수 있었던 일이라고 생각하는 것처럼, 혹은 우연히 일어난 일을 유의미한 패턴을 갖고 있어 나온 결과라고 잘못 해석하는 경향이 있다.

즉, 가설검증은 이러한 우연히 발생한 것에 대한 잘못된 해석으로 바보짓을 하는 것을 막기 위함이다.

 

랜덤에 관한 오해, 직관적인 예

예를 들어 친구에게 동전 50개를 던졌다고 치고 앞/뒤 수열을 길이가 50으로 적어보라고 요청한다. (FAKE)

그리고 실제로 50번을 던진 결과를 적으라고 요청한다. (REAL)

이 때 둘 중 무엇이 REAL이고 FAKE인지 알아차리기가 쉽다.

왜냐하면 연속적으로 앞, 연속적으로 뒤가 나오는 경향이 FAKE보다 REAL이 더 잦기 때문

즉, 우리가 랜덤으로 50개를 적을 때, 랜덤처럼 보이려고 어느정도 연속적인 앞을 적고나서는 (3,4번 적고나서는)

뒤를 적으려고 한다. "랜덤처럼 보이려고"

그러한 경향을 반대로 생각하면

A폰트로 제목 썻을 때랑 B폰트로 제목 썻을 때 클릭율이 A가 10% 더 높은 상황을 생각하자면

(즉 동전 앞이 6,7번 연속으로 나온 상황을 보자면)

이건 우연이 아니라 A가 정말 더 낫다고 생각한다.

(즉 동전이 not fair이고 앞이 더 나오는 경향이 있을 것이라 생각한다.)

 

가설검증은 기본적으로 다음 로직을 따른다.

"인간은 unusual이지만 우연히 일어난 일에 대해(인간은 우연인지 모르는) 뭔가 의미있다고 해석하려는 경향이 있으니,

우연이 만들어 낼 수 있는 것 보다 더 차이를 만들어 냈는지 테스트하겠다."

따라서, null hypothesis는 treatments가 기본적으로 동일한 효과를 갖고 둘의 차이는 우연이다 라는 형태로 가정을 갖고 간다.

 

예를 들면 "B가 A보다 더 크다, 더 낫다" 형태는 One-way(or one-sided, one-tailed)

"B랑 A랑 다르다" 형태는 two-way(or two-sided, two-tailed)

실생활 예로,

"영문과 학생이 토익 성적이 더 높다"->one-way

"남자랑 여자는 토익 성적 차이가 존재한다"->two-way

"여자가 남자보다 토익 성적이 더 높다"->one-way

 

Permutation Test 방식

예를 들어 웹사이트 디자인을 A방식으로 했을 때, B방식으로 했을 때,

B방식일 때가 A방식일 때 보다 평균 체류시간이 36초 더 높았다고 하자. (Observed difference)

(B방식일 때 samples개수가 21, A방식일 때 samples개수가 15)

이 때, 총 36개의 samples을 섞어가지고 21개를 비복원추출로 뽑아서 B라고 relabel, 남은 15개를 A라고 relabel

그리고 B에서의 평균 체류시간, A에서의 평균 체류시간의 차이를 계산한다.

이 relabel부터 평균 체류시간 차이계산을 약 1000번 시뮬레이션 돌린다.

그러면 평균 체류시간 차이의 frequency distribution을 그릴 수 있고,

그 때 Observed difference보다 더 차이를 보인 simulation의 개수가 적으면 statistically significant, 많으면 not.

(즉 Observed difference보다 더 큰 차이를 보인 simulation의 개수가 전체 1000개 대비 5%이하면 B방식이 A방식보다 더 낫다고 통계적으로 유의함을 알 수 있다.)

 

Permutation Test방식의 종류(Random, Exhaustive, Bootstrap)

위의 예(예에 쓰인 방식을 Random permutation test or Randomization test라 함)에서

"samples을 섞어가지고 21개를 비복원추출로 뽑아서 B라고...남은 15개를 A라고..."

이 부분에서 B 21개, A 15개 주는 "모든 경우의 수"를 다 simulation해보는 것을 "Exhaustive permutation test"라 하고

이 부분에서 "비복원추출"을 "복원추출"로 바꿔버리면 "Bootstrap permutation test"라 한다.

즉, 복원추출로 21개의 B를 만들고 복원추출로 15개의 A를 만들고 하는 방식으로 subject들이 무슨 label로 relabel될 지도 random이지만 어떤 subject들이 쓰일 지도 random인 상황이다.

Exhaustive permutation test를 exact test라고도 함, 왜냐하면 test statistic이 n에 대한 근삿값을 활용하는 것이 아니기 때문

 

이러한 Permutation test방식의 장점은 

-easy to code, interpret, explain

-공식위주의 접근보다 나은 점은 오용하여 결과낼 가능성이 적고 data가 numeric/binary, 정규분포, sample size제한 등의 가정들을 요구하지 않는다는 점이다.

728x90
728x90

기본용어:

frequency distribution:y축은 빈도수, x축은 어떤 value

tail:frequency distribution에서 대개 x값이 아주 작거나 아주 큰 부분에서 low frequency를 보이는데, 이러한 부분을 가리킴(대개 long narrow 형태를 띔)

long-tail distribution: heavy-tailed, fat-tailed distribution이라고도 불린다. 극단적으로 큰 y값 또는 극단적으로 작은 y값이 상대적으로 더 자주 발생하는 분포를 가리킴.

skew:two tails에서 하나가 나머지 하나보다 긴 경우를 가리킴

 

highly skewed의 예:소득분포(이 경우 x축은 연봉 같은 소득 값, y축은 빈도수)

 

대부분의 data는 정규분포를 따르지 않는다. 해당 도메인에 대한 지식과 통계적인 지식을 함께 활용하여 어떠한 분포로 모델링을 해야할 지 선택해야 한다. 특히 그렇지 않는다면 extreme events가 발생할 수 있다.

즉 long-tailed 부근의 사건이 정규분포로 예상했던 것 보다 더 자주 일어날 것이다 라는 것

 

728x90
728x90

IDA, EDA, CDA를 알아보자.

 

IDA란,

 

The most important distinction between the initial data analysis phase and the main analysis phase, is that during initial data analysis one refrains from any analysis that is aimed at answering the original research question.

특히 다음 4개의 과정을 따른다. 각 과정은 EDA/CDA에서 어떠한 analysis를 할 것이냐에 따라 선택적으로 사용

Quality of data(frequency counts, descriptive statistics(평균, 표준편차, 중앙값 등), normality(skewness, kurtosis, frequency histograms etc), 현재 데이터의 coding scheme을 다른 데이터에 쓸 수 있는지(A국가에 대한 데이터 coding scheme을 B국가에 대해서도 쓸 수 있는지) 등을 체크

(skewness는 데이터의 분포의 비대칭성을 가리킴)

(kurtosis는 데이터의 tailedness를 나타내는 수치인데, 계산식에 따라 다른 해석을 갖는다. Pearson 방식의 경우 클수록 tail이 두꺼움을 나타내며 outliers가 많이 존재함을 나타낸다.)

Quality of measurements(consistency of measurement를 측정, 예를 들면 응답자가 "자전거를 좋아한다"에 yes라고 답변하고, 이후 "자전거를 싫어한다"라는 질문에는 no라고 대답했는 지 등)

Initial transformations(missing data처리하기, variable transformations(square root transformation(정규분포와 살짝 다를 때), log-transformation(정규분포와 많이 다를 때), Inverse transformation(정규분포와 심각하게 다를 때), categorical로 만들기(정규분포와 심각하게 다르며 앞선 transformation이 도움안될 때) 등)

Randomization procedures(종속 변수 외 상당한 background 변수들이 groups마다 골고루 퍼져있는지 확인)

기타

  -dropout(설문 도중 이탈한 데이터 비율)을 확인

  -item nonresponse(설문지 중 응답하지 않음이 많은 설문 문항)을 확인

  -모집단 내 모든 group들이 sample에 존재하는 지

 

EDA란, 

In statistics, exploratory data analysis is an approach to analyzing data sets to summarize their main characteristics, often with visual methods. A statistical model can be used or not, but primarily EDA is for seeing what the data can tell us beyond the formal modeling or hypothesis testing task.

 

CDA란,

 

728x90
728x90

일반적인 Hypergeometric Distribution해석(변인이 1개)

전체 M개가 들어있는 항아리

그 중 내가 좋아하는게 n개, 좋아하지 않는게 M-n개

이 때 M개 중 k개를 비복원으로 뽑을 때 내가 좋아하는게 0,1,2,... 개가 나올 확률 분포

(이게 가장 직관적으로 이해하기 쉬운 해석)

 

 

 

근데 Fisher's exact test를 보다가 변인이 2개인 경우임에도 Hypergeometric distribution으로 해석하는데

바로 이해가 안되어서 정리한다.

 

공부하는 남자가 a명

공부하는 여자가 b명

공부안하는 남자가 c명

공부안하는 여자가 d명, 총원 n = (a+b+c+d)

따라서 남자가 a+c, 여자가 b+d, 공부하는 사람이 a+b, 공부안하는 사람이 c+d

이 때, a,b,c,d 각각을 모르고, a+c, b+d, a+b, c+d만 알 때, 공부하는 남자 수를 확률변수 X라 할 때

X의 분포는 기하 분포를 따른다.

P(X=k)

= {(a+c) choose k * (b+d) choose (a+b-k)} / n choose (a+b)  (1)

= {(a+b) choose k * (c+d) choose (a+c-k)} / n choose (a+c)  (2)

...

Hypergeometric distribution으로 해석할 때

(1)에서, n명 중 (a+b)명을 비복원으로 뽑을 때, 내가 좋아하는게(=남자) (a+c)명 중 a명 뽑는 상황

->n명에 대해서 남자(=내가 좋아하는게)로 만들고 공부하냐 안하냐는 잊고, 

n명에 대해서 (a+b)명을 뽑아 공부하는 사람으로 만들었을 때, 그 때 내가 좋아하는 게 k개 있는 것으로 해석

 

(2)에서, n명 중 a+c명을 비복원으로 뽑을 때, 내가 좋아하는게(=공부하는사람) a+b명 중 a명 뽑는 상황

->n명에 대해서 공부하는(=내가 좋아하는게)로 만들고 남자냐 여자냐는 잊고,

n명에 대해서 (a+c)명을 뽑아 남자로 만들었을 때, 그 때 내가 좋아하는 게 k개 있는 것으로 해석

 

즉, 2변인 중 한 변인으로 먼저 grouping했을 때 나머지 변인으로 분류지을 확률을 생각

 

P.S.

-n, (a+b), (a+c), (b+d), (c+d)가 주어지면, 자유도가 1인 상황이 된다.

-P(X=k)가 a,b,c,d에 대한 대칭식은 아니다. 하지만, n choose (a+b)의 (a+b) 대신 (a+c), (b+d), (c+d) 변형식 얻기 다 가능

 

728x90

+ Recent posts