생존분석이란? 

잘 정의된 시점으로부터 event가 일어나기까지 걸린 시간을 분석하고 예측하는 분석이다. 

event는 주로 사망, 질병악화, 기계고장 등이 있다. 따라서, 시간과 수치값을 예측하는 것이기 때문에 회귀모델로 적용되나, 일반적인 통계 모형에 적용할 수 없는 생존분석만의 특징이 있다. 

 

- 생존 분석으로 연구 집단의 특이변화를 직관적으로 확인 가능하다. 

 

Censoring

  • Right censoring: 연구 종료 전 사망 혹은 연구 종료 후 생존
  • Left censoring: 연구 시작 전 질환을 이미 보유 혹은 측정한 생존 시간보다 실제 생존 시간이 더 긴 경우

생존분석 방법 1) Kaplan-Meier 추정방법

사건에 따른 사건 발생률을 계산하는 생존분석 방법이다. 

아래 그림은 survival plot으로 시간에 따른 생존율을 파악할 수 있고 

두 그룹간의 유의미한 차이를 보기위해 Log-Rank test혹은 willcoxon test를 수행한다.  

생존분석의 특징

1) 레이블은 최소 2개를 갖는다. 

=> 사건 발생까지의 시간과 사건 발생여부 

예시) 신장이식 환자에 대한 생존분석을 한다고 가정하고, 환자 10명이 있다. 10명 모두 수술받은 날짜를 알아내는 것(시작점)이 가능하지만, 계속 지켜보는 것은 불가능하다. 그렇지만 그들의 생존시간과 사망정보를 기록해야한다.

하지만, event발생 전에 종료된 데이터들을 censored data라고 부른다. 하지만 끝까지 관찰된 샘플은 uncensored data라고 부른다. 

대표적인 모델로 Cox-proportional hazard model이 있다. (아래 관련 링크 첨부)

https://chealin93.tistory.com/search/survival

모델을 평가하는 방법

생존 시간의 예측 정확도를 알고싶을때는, MSE를 사용하고 사망여부를 고려한 생존시간 예측정확도를 알고 싶다면 C-index를 사용한다.  

 


C-index란? 

 

1) 샘플들의 생존 시간을 오름차순으로 나열하고, 사건이 관찰된 각 샘플들보다 오래 생존한 샘플들의 개수를 모두 더한 총합

2) 샘플들을 예측된 생존시간의 오름차순으로 나열하고, 사건이 관찰된 각 샘플들보다 오래 생존할 것으로 올바르게 예측된 샘플들의 개수를 모두 더한 총합

1과 2의 비율로 나타난다. 

 

 

c-index는 0.0~1.0 사이의 값을 갖는다. 1.0에 가까울수록 정확히 예측한다고 해석하고, 0.5에 가까울수록 무작위로 예측한다고 평가한다. 해석이 AUROC(Area Under Receiver Operating Characteristic curve)와 비슷하여, c-index를 AUROC의 회귀분석용으로 확장한 것이라는 이야기도 있다.

고정효과(fixed effect)와 랜덤효과(random effect)로 이루어진 모형이다. 

 

1) 한명의 실험 대상자로부터 여러 결과를 얻는 겨우(longitudianl data에서 사용할 수 있는 선형 모형)

2) 군집으로 모일 수 있는 경우

 

고정효과란

모집단과 샘플 모두에서 고정되어있는 요인의 효과를 말한다. 샘플마다 모든 요인의 level이 동일하고 효과가 동일하다고 간주할 수 있다. 

 

랜덤효과란

어떤 변수가 모집단으로부터 sampling될떄 마다 level이 고정되어 있지 않아 효과가 샘플마다 다를 수 있는 효과를 말한다. 

 

고정효과와 랜덤효과 예시

예를 들어, 20명의 환자를 대상으로, 1,3,6,9,12개월마다 스트레스 점수를 측정할 경우, 21명의 환자는 모집단에서 임의로 추출되었기 떄문에 환자간에 시간에 따른 변화양상이 다르다면 환자효과를 random effect로 간주할 수 있다.

반면, 성별이나 계절은 random한것이 아니어서 fixed effect로 통제가 가능하다. 

 

mixed model analysis의 예제

예제1) 900명의 환자를 대상으로 5개의 multi center 데이터를 180개씩 조사해, 성별이 일정할때 기관별 혈압차이를 보고싶다면 

성별을 fixed effect, 센터를 random effect로 고려해 분석가능

 

예제2) 100명의 환자를 대상으로 피험자마다 혈압을 1주일 간격으로 3회 측정할 경우, 3 시점간에 혈압이 다른지 보고싶다면

시점을 fixed effect로 피험자를 random effect로 고려해 분석가능

 

예제3) 55세 이하의 환자를 대상으로 술을 마신후 1,3,6,9,12개월마다 스트레스 측정한다면, 나이와 시간을 fixed effect, 환자를 random effect로 놓고 분석가능

 

y = Xb + Zu + e

 

y는 형질을 관측한 값으로 이루어진 벡터이다.

b는 고정효과로 알려진 요인들의 벡터이다.

u는 임의효과라고 알려진 요인들의 벡터이다.

e는 잔차항의 벡터로 역시 임의효과이다.

 

출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jinp7&logNo=220954271225 

 

221011_논문리뷰.pdf
0.77MB

 

머신러닝 모델

  • Multi-Layer Perceptron (MLP)
  • Bayesian Neural Network (BNN)
  • Radial Basis Functions (RBF)
  • Generalized Regression Neural Networks (GRNN)
  • kernel regression K-Nearest Neighbor regression (KNN)
  • CART regression trees (CART)
  • Support Vector Regression (SVR)
  • Gaussian Processes (GP)

딥러닝

  • Recurrent Neural Network (RNN)
  • Long Short-Term Memory (LSTM)

'데이터분석 > 시계열데이터분석' 카테고리의 다른 글

WTTE-RNN  (0) 2022.11.01
Linear mixed model(LMM)  (0) 2022.10.18
시계열 데이터 분석 - 전통적인 시계열 분석  (0) 2022.10.12

시계열 데이터란?

시간에 순차적으로 관측한 값들의 집합이다. (sequence data)

시계열 분석은? 

독립변수(independant variable)을 이용해 종속변수(dependent variable)을 예측하는 일반적인 기계학습 방법에서 

시간을 독립변수로 사용한는 분석이며 횡단자료 분석이다. 

시계열 데이터 분석은 횡단자료(cross-sectional)분석이다. 

시계열 데이터의 요소

1) 추세(Trend): 장기적으로 나타나는 일반적인 경향(상향 혹은 하향하는 안정적인 모양)

- 예시: 인구, 농업생산, 제조품목, 대학 수 등 일종의 운동경향

3) 주기(Cycle): 최소 1년 이상 기간에 걸쳐 지속되는 시계열 변동

2) 계절성(Seasonal): 1년 미만의 주,월,분기, 반기 단위 등 이미 알려진 시간의 주기로 나타나는 패턴, 자연이나 사람의 관습으로 만들어진 것들

- 예시: 여름과 겨울에 다라 달라지는판매량, 농작물 생산량 등

4) 랜덤요소( Random)

 

여기서, 시계열 구성요소간의 구성을 두가지로 분류한다. 

1) 가법모형(addictive model): 각 요소들이 독립적이라 구성요소를 더하는 모형

2) 승법모형(multiplicative model): 구성요소가 독립적이지 않고 상호작용해서 구성요소를 곱하는 모델

* 여러 구성요소로 되어있는 시계열 데이터를 여러 구성요소로 나누는 것을 '시계열 분해' 라고 한다.

 

시계열 데이터 구성요소

 

목적

1. 미래 값 예측

2. 시계열 데이터 특성파악: 경향, 주기, 계절성, 불규칙성, 정상성(stationary)

 

이때 정상성이란?

시간의 추이와 관계없이 평균 및 분산이 불변하거나 시점간의 공분산이 기준 시점과 무고나한 형태의 시계열을 말한다. 

 

정상성을 만족하기 위해서는 아래 세가지를 만족해야한다.

1. 평균값이 시간 t에 상관없이 일정해야한다. 

2. 분산값은 시간 t에 관계없이 일정하다.

3. 공분산은 시간 t에 의존하지 않고 시차에만 의존한다.

 

위 세가지를 만족하는 시계열을 정상시계열이라고 한다.

한마디로, 시간의 추이와 관계없이 평균 및 분산이 불변하거나 시점간의 공분산이 기준 시점과 무고나한 형태의 시계열을 말한다.

 

* 강한 정상성/ 약한 정상성이 존재한다. 보통 약한 정상성이 대부분인데 이는 평균은 일정하나 시간에 종속적이지 않고, 분산은 시차에 따라 변하는 것을 의미한다.

어떻게 staionary를 체크할까?

1) 눈의로 직관적인 확인=> STL, Rolling statistics(moving average)

2) Dickey-Fuller test: 시계열 모델을 분석하고 예측하기 위해 정상적 조건을 확보하는 검정법

Dickey-Fuller Test 확인

그럼, 비정상 시계열을 정상시계열로 변환하기 위해서는?

 

1. 시계열 평균이 비일정하면, 원시계열에서 차분하면 정상 시계열이 된다. (추세 성분을 뺴면 평균이 정상성을 가지게된다.)

2. 계절성을 갖는 비정상시계열은 계절차분을 사용한다.

3. 분산이 일정하지 않는 경우 자연로그를 취하면 정상시계열이 된다. 

 

비정상시계열을 정상시계열로 분해하고 난 뒤 데이터를 예측하면 예측이 더욱 잘되고 쉬울것이다. 

(기존 모형들은 정규분포를 가정하고 분석하기 때문에 비정상 시계열 데이터를 입력하면 오류가 발생할 수 있다.)

*자기 상관: t시점과 (t-1)시점간의 상관관계, 일정 기간동안 증가하거나 감소하면 자기상관이 존재함.

자기상관계수 함수(auto-correlation function, ACF)

 

시계열 자료 분석 방법

일변량 시계열 분석: t만 가지고 분석, 수학적 이론 모형에 의존하고 시간에 따라 변동이 많은 시계열에 적용

  • 지수평활법, 시계열 분해방법: 직관적인 방법이며 변화가 느린 데이터를 분석하는데 사용
  • 다중 시계열 분석: 회귀모형, 전이함수 모형, 개입분석, 상태공간분석, 다변량 ARIMA모형으로 분석가능

 

시계열분석을 할 수 있는 모형

자기 회귀 모형(AR, Autoregressive)

자기 자신의 과거값을 사용하는 모형으로 현재 시계열 자료의 몇번째 전 자료까지 영향을 주는가를 구하는 것이 목적

만약, 현시점의 시계열 자료가 과거 1시점 이전 자료만 영향을 준다면 1차 자기회귀모형이라고 한다. AR(1)

일반적으로 어느정도까지 데이터를 사용할것인지 p로 나타내며, AR(p)라고 표기한다. 

 

https://m.blog.naver.com/PostView.nhn?blogId=chunjein&logNo=100173614389&proxyReferer=https:%2F%2Fwww.google.com%2F

 

자기회귀모형인지 판단하기 위해서는 자신과의 상관성과 부분자기상관함수를 사용해 판단한다. 

자기회귀모형은 자기상관함수가 시차 증가에 따라 점차 감소하고 부분자기상관함수는 시차 후 급격히 감소해 절단된 형태를 취한다.


 

자기 상관(Auto-Correlation)

 

자기 자신의 데이터간의 상관계수를 보는것이다. 이 때, 시차(Time Lag)가 사용되는데, 예를 들어 시차가 1,2,3... 인 데이터와 시차가 0인 데이터의 상관관계를 구하면 시차의 변화에 따라 자기상관을 계산할 수 있다. 이를 통해, 자기상관함수(ACF)를 만들 수 있고

비정상시계열의 경우 ACF는 천천히 감소하며, 큰값을 가지는 경우가 많다.


 

 

이동평균모형(MA, Moving Average)

 

우리가 어떠한 시계열 데이터를 가지고 전처리를 했을 때 이 시계열을 정상 시계열이라고 가정해보자. 그렇다면 이 시계열은 모든 구간에서 동일한 평균과 편차를 가질 것이다. 그렇다면 이 시계열의 모집단 분포도 동일한 평균과 분산을 가질 것이다(정규 분포를 가정).

 

이렇게 구성된 모집단에서 데이터를 샘플링 한다. 표본 집단(시계열)과 모집단에서 각각 샘플링한 데이터의 에러가 일정할 것이라 가정하고 분석을 진행한다. 이때 모집단을 백색 잡음(White Noise)이라 부른다. 평균이 $\mu$, 표준편차가 $\sigma$인 백색 잡음(White Noise)으로 생성한 시계열과의 error의 조합으로 표현할 수 있다. 

\[ Z_t = a_t - \theta_1 a_{t-1} - \theta_2 a_{t-2} - \cdots - \theta_q a_{t-q} \]

$Z_t$는 우리가 찾을 관측값이고, 이 관측값과 이전 값들의 에러($a$)에다 계수를 곱해 값을 예측하는 것이다. AR의 경우 관측값 가지고 예측을 하지만, MA의 경우는 분포를 가정하고 가정한 분포에서 샘플링 해 분석을 진행하기에 샘플에 대해서 덜 종속적이게 된다. 일반적으로는 정규 분포를 사용하나, 딥러닝에서는 다른 분포를 사용하기도 한다. 샘플에 덜 종속적이게 되어서 데이터에 불확실성을 가지고 접근하는 것이다. 일종의 생성 모델이라 보면 된다. 

 

최근 데이터의 평균이나 중앙치를 예측하는 방법으로 각 과거치는 동일한 가중치가 주어진다. (최근 데이터에 더 가중치를 주지 않음)

 

자기회귀누적 이동 모형(ARIMA)

대부분 많은 시계열 자료가 따르는 모형이며 기본비정상시계열이며 차분이나 변환으로 AR, MA, ARMA 모형으로 정상화 할 수 있다.

ARIMA모형은 과거 지식이나 경험을 바탕으로 한 행동에 따라 시계열이 움직이고 있음을 기초로 한다. 

따라서, 과거의 관측값과 오차로 현재 시계열 값을 설명한다. 

 

ARMA는 staionay Series에만 적용한다. 

정상시계열 입력이 들어왔을떄는 딥러닝보다 ARIMA 성능이 더 좋다.

 

자기회귀누적 이동모형에서는 

1) 차수 p,d,q에 따라 모형의 이름이 바뀜 (p는 AR, q는 MA, d는 ARIMA에서 ARMA로 정상화할떄 몇번 차분했는지 묻는 값들이다.

AR은 과거 시점의 관측자료의 선형결합으로 표현되고, MA는 과거 시점의 백색잡음의 선형결합으로 표현됨, ARMA는 위 두 모형을 합친 모형이다. 

 

p,d,q는 어떻게 정의할까?

 

ACF plotrhㅏ PACF plot을 통해 AR 및 MA의 모수를 추청한다. 

ACF(Autocorrelation function): Lag에 따른 관측치들 사이의 관련성을 측정하는 함수

 

 

PACF(Partial autocorrelation function)

k이외의 모든 다른 시점 관측치의 영향력을 배제하고 y_k와 y_(k-1) 두 관측치의 관련성을 측정하는 함수

 

백색잡음(White Noise)

- 평균이 0이며 일정한 분산을 지닌 정규분포에서 추출된 임의의 수치로 시계열 모형에서 불규칙한 패턴을 가지는 것

- 회귀식에서 설명되지 않는 Error(Uncontrolable variable)

 

분해시계열

시계열에 영향을 주는 일반적인 요인을 시계열에서 분리해서 분석하는 방법

1) 추세요인: 자료가 어떤 특정한 형태를 취하는것

2) 계절요인: 계절에 따른 고정주기로 자료가 변하는 경우

3) 순환요인: 알려지지 않은 주기를 가지고 순환하는 경우

4) 불규칙 요인: 위 세가지로 표현할 수 없는 오차가 생기는 경우

 

출처: https://m.blog.naver.com/dsz08082/222042702104

 

단변량시계열 데이터 분석인 경우에는 위의 전통적인 분석방법이 효과적이다. 하지만, 다변량 시계열데이터의 경우에는 머신러닝 기법을 적용하는것이 더욱 효율적이다. 

 

 

 

'데이터분석 > 시계열데이터분석' 카테고리의 다른 글

WTTE-RNN  (0) 2022.11.01
Linear mixed model(LMM)  (0) 2022.10.18
시계열 데이터 분석 - 머신러닝, 딥러닝  (0) 2022.10.12

가상환경 연결하기

우리는 앞으로 각 가상환경 커널을 jupyter notebook 혹은 lab과 연결할것이다. 

그러기 위해 우리는 ipykernel을 base에 다운받아야한다. 일단 최신버전으로 받아주자. 

conda install ipykernel

그리고 우리는 ipykernel을 이용해 가상환경에 연결해 줄 것이다. 

python -m ipykernel install --user --name [가상환경 이름] --display-name [커널 이름]

이렇게 원하는 가상환경에 연결해주고 jupyter lab을 실행한다면 하단에 이런 표시가 나올것이다. 

 

Asthma는 나의 가상환경 이름이다. 저 부분을 클릭하면 연동된 가상환경들을 선택할 수 있고 원하는 가상환경을 선택하여 활용하면 된다. 

 


*** 매번 가상환경을 만들어주면, 다시 jupyterlab을 설치하고 연동해줘야한다. 안그러면 나중에 99.99999999% no moduled error로 고생한다 (내 얘기)


가상환경 연결 끊기

 

가상환경을 제거하고난 뒤에도 jupyter notebook 혹은 lab에 여전히 가상환경 이름이 남아있다. 

이는 kernel을 끊어주지 않았기 때문이다. 

아래를 수행해서 커널을 끊어주자!

jupyter kernelspec uninstall 가상환경명

내가 이걸 지금할게 아닌데... 환경변수를 내맘대로 이리저리하다가 뭔가 크게 잘못되어서 그냥 맥을 밀어버렸다

다시 Python3를 설치하는김에 뼈에 새긴다고 생각하고 블로그포스팅을 하게됐다...

 

우선, Python3를 설치하고 아나콘다를 설치해도 되지만 아나콘다를 설치할때 Python도 함께 설치되기때문에 

우선 아나콘다부터 설치해본다. 

 

아나콘다 설치하기 

https://www.anaconda.com/ 

 

Anaconda | The World's Most Popular Data Science Platform

Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open source communities.

www.anaconda.com

위 링크에 들어가서 자신의 OS에 맞는 anaconda를 다운 받아주자. 필자는 Mac OS 환경이다. 

웬만하면 초보자분들은 패키지로 된것을 추천드린다. 

 

그리고 지금부터 가상환경을 설정할것이다. 

 

가상환경 생성하기 

다운로드가 완료되면 우리에게 친숙한 Terminal을 켜보자. 

리눅스와 Mac OS의 terminal은 윈도우환경만 사용한 분들에게 조금 낫설설지만 파이썬을 다루는 사람이라면 윈도우의 cdm라고 보면 된다. terminal을 켰다면 가상환경을 생성해보자

 

1. 가상환경 생성

아래의 명령어들을 terminal에 입력해서 생성할 가상환경과 그 가상환경의 python버전을 설정해준다. 

conda create -n 가상환경 이름 python=파이썬 버전
예를 들면 => conda create -n cofls python=3.8.0

2. 가상환경 삭제 

가상환경을 자유롭게 삭제할 수 있다. 

conda remove -n 가상환경이름 --all

가상환경을 하나 만들었다면 그 가상환경을 활성화해본다. 앞으로 각 가상환경별로 library관리를 하면 파이썬으로 라이브러리를 활용하는데 큰 도움이 될것이다. 라이브러리를 다운받기 위해서는 가상환경을 활성화해야한다. 

 

3. 가상환경 활성화하기

conda activate 가상환경 이름

 

4. 활성화 후 라이브러리 설치

활성화된 가상환경 안에서 원하는 패키지의 원하는 버전으로 다운을 받아준다. 

conda install 패키지 이름 == version
예) conda install numpy == 1.16.0

 

    그리고 가상환경에 잘 받아졌는지 확인하고 싶다면 활성화된 가상환경안에서 conda list라는 명령어로 설치된 라이브러리들을 볼 수 있다. 

이제 원하는 라이브러리를 설치하는데는 문제가 없을것이다. 

그렇다면 과연 가상환경을 왜 만든것일까? 어떤 편리함을 위해? 

앞으로 내가 원하는 가상환경 위에서 내 코드가 원하는 라이브러리 버전에 맞게 작동할 수 있도록 만들어주어야한다. 

내 코드를 어디서 편집할까? 필자는 주로 jupyter notebook혹은 jupyter lab을 사용하여 python코딩을 한다.

 

그럼 일단 덮어두고 어짜피 사용해야할 jupyter notebook과 jupyter lab을 설치하자!

 

현재까지 순차적으로 따라왔다면, 현재 당신의 상태는 활성화된 가상환경 안에 있는 상태일것이다. 

 jupyter notebook과 jupyter lab을 base에 설치하기 위해 활성화된 가상환경을 비활성화로 만들어주자. 

 

5. 가상환경 비활성화

conda deactivate

저 위에껄 치면 간단히 비활성화된다. 

이제 상태는 base로 돌아갔을것이다. 그곳에서 conda install jupyter notebook 혹은 jupyter lab을 해주면 된다. 

conda install jupyter notebook
혹은
conda install jupyter lab

 

설치가 끝나면 이것들과 우리의 가상환경을 연결해주어야 한다. 

이는 다음 포스팅에서 진행할 것이다. 

Random Network Model은 specified parameter를 갖는다. 그렇지만, edge는 랜덤하게 나타난다. 

굉장히 간단한 랜덤 네트워크 모델은 노드와 엣지의 수가 고정되어있을때, 엣지를 랜덤하게 위치시킨 모델이다. 

Erdos-Renyi Model는 더 다루기 쉬운데, 엣지 수를 고정하는것보다 엣지의 확률을 고정하는 것이다. 이는 예상되는 엣지수를 고정하고 실제 엣지수는 예상되는 엣지수 근처에 머무르게 하는것이다. 

이 모델은 일반적인 degree distribution과 다른 모양을 띄고 있고 매우 작은 clustering coefficient와 매우 큰 diameter를 갖는다. 

 

Configuration model은 random graph model이다. 

네트워크를 Degree of Node의 distribution으로 표현한다면 굉장히 skewed하다. 예를 들면, 일반적으로 100~200의 친구를 갖는 사람들은 매우 많은데, 테일러 스위프트 같은 사람이 친구를 수천명 혹은 수만명 갖고있는 경우에 꼬리가 굉장히긴 distribution(right - skewed)이 형성되기 때문이다. 이때, 테일러 스위프트가 갖는 high degree를 hubs라고 부른다. 

 

nodes의 분포는 어플리케이션 도메인에 상관없이 멱법칙을 따른다. 

 

large scale network를 측정하고 양을 나타내는데 사용하는  measure

  • Degree distribution
  • Clustering coefficient
  • Diameter of a Network

 

지금까지, node에 대해서 언급했다면 edge의 입장에서 보자. 

네트워크가 node N개의 간단한 모형이라면 edge가 가질 수 있는 가장 큰 수는 N * (N-1)/2 이다.

또한, 네트워크의 밀도(Density of Network) 는 엣지의 비율(Fraction of Edge)이다. densitiy에 따라서 네트워크의 양상이 달라진다. 

 

네트워크 밀도에 대해서 논한다면, 가장 먼저 sparse network를 말할 수 있다. 노드 수에 비해 엣지 수가 드문 경우이다. social network가 sparse network의 예이다. 반대로, 엣지가 노드 수를 거의 따라잡은 것이 dense network다. 예를 들면, 먹이사슬이다. 

 

Clustering coefficient는 해당 노드에 이웃하는 노드들이 얼마나 잘 연결되어 있는지 측정하는 measure이다. 

 

Diameter of a Netwrok는 두 노드가 정보가 흐르는데 걸리는 최대 거리를 말한다. 다시 말해, 한 사람으로부터 다른 사람에게 정보가 가기까지 걸리는 가장 긴 길이를 말한다. 또한, 정보가 가기까지 걸리는 최대시간을 의미하기도 한다. maximal geodesic distance in a network이다.

중심성지수를 활용하는 이유

네트워크가 작을때는 노드들간의 관계가 눈에 보이지만, 노드가 만약 수천 수만개라면? 하나의 헤어볼처럼 보이기 쉽상이다. 

노드들이 복잡하게 엣지들과 연결되어 있을때 어떻게 중요한 노드를 알아볼 수 있을까?

이때 사용되는 중심성지수라는 것을 살펴보려한다. 

 

 

중심성지수의 종류와 예제

 

  • 위세 중심성(Eigenvector Centrality)

예제를 살펴보자, 만약 BTS콘서트가 열리고 콘서트 티켓을 어떤 사람에게 주어야 다른 사람들에게 충분히 홍보가 될까? 

이는 중요한 노드가 무엇인지 찾는 과정이다. 

 

가장 간단한 방법으로는 가장 많은 친구가 있는 사람을 찾는 것이다. 가장 엣지가 많이 연결된 노드를 찾으면 된다. 

degree of node는 그 노드에 연결되어있는 엣지 개수이다. 이를 adjacency matrix에서 찾으려면 해당하는 노드의 행을 모두 더해주면 된다. 왜냐하면 adjacency matrix는 행과 열이 각각 node들이 연결되어 있는지 아닌지에 대한 행렬이기 때문이다. 

하지만, 이걸로 그 사람이 가장 중요하다고 따질 수 없다. 그 사람이 연결된 사람이 많을 뿐이지, 그 사람의 친구, 또 그 사람의 친구가 

계속 영향력 있는 사람일지는 모르기 때문이다. 

 

그렇다면 수학적으로 영향력이 계속 많은 친구의 중심은 어떻게 구할까? 

eigenvector centrality로 구한다. 이 방법은 해당하는 노드에 주변 모든 이웃들의 점수를 합산한 값을 내준다. 

 

또 다른 방법으로는 Page Rank가 있다. 이런 경우에는 indirected network에서 사용한다. 예를 들면, World Wide Web. 

 

  • 근접 중심성(Clossness Centrality)

근접 중심성(Closeness Centrality)은 특정 노드가 다른 노드까지 도달하는 경로가 얼마나 짧은지를 나타낸다.

근접 중심성을 계산하는 수식은 노드 I에서 I를 제외한 다른 노드까지 도달하는 최소 경로의 평균을 구한 다음, 그 평균을 역수 취하면 된다.  

 

  • 매개 중심성(Betweenness Centrality)

Bottleneck of network는 정보의 흐름을 유지하는데 가장 중요한 node를 말한다. 병목현상이 일어나는 지점이다. 정보의 양은 그 노드가 몇개의 경로를 통과하는지에 비례한다. 가장 많은 정보가 지나가는 노드를 발견하는데 사용되는 지표는 매개 중심성(Betweenness Centrality)이다. 매개 중심성은 한 노드가 다른 노드들과의 연결망을 구축하는데 얼마나 도움을 주는지 측정하는 지표로 두가지 가정을 한다. (1) 정보의 흐름은 일정한 속도를 갖는다. (2) 정보는 가장 짧은 경로로 다닌다.

 

이때, 모든 짝의 노드들을 지나는 가장 짧은 경로를 찾는 알고리즘으로 Floyd-Warshall algorithm을 사용한다. 

노드 I의 중요성이 아닌 임의의 X, Y 노드에 대해서 X-Y의 최단 경로에 노드 I가 포함되어 있는 횟수를 의미한다. 

 

+ Recent posts