Path: blob/master/site/ko/probability/examples/HLM_TFP_R_Stan.ipynb
25118 views
Copyright 2018 The TensorFlow Probability Authors.
Licensed under the Apache License, Version 2.0 (the "License");
{TF Probability, R, Stan}의 선형 혼합 효과 회귀
1. 소개
이 colab에서는 선형 혼합 효과 회귀 모델을 인기 있는 장난감 데이터세트에 피팅합니다. R의 lme4
, Stan의 혼합 효과 패키지, 및 TensorFlow Probability(TFP) 프리미티브를 사용하여 이 피팅을 세 번 적용합니다. 세 가지 모두가 대략적으로 동일한 피팅 매개변수와 사후 분포를 제공함을 보여줌으로써 결론을 내립니다.
가장 중요한 결론은 TFP가 HLM과 같은 모델을 피팅하는 데 필요한 일반적인 부분을 가지고 있으며, 다른 소프트웨어 패키지(예: lme4
, rstanarm
)와 일관된 결과를 생성한다는 것입니다. 이 colab은 비교된 패키지의 계산 효율성을 정확하게 반영하지 않습니다.
2 계층적 선형 모델
R, Stan, TFP를 비교하기 위해 계층적 선형 모델(HLM)을 Gelman 등의 베이지안 데이터 분석(559페이지, 2차 개정판; 250페이지, 3차 개정판)에서 잘 알려지게 된 Radon 데이터세트에 피팅할 것입니다.
다음 생성 모델을 가정합니다.
R의 lme4
"틸데 표기법"에서 이 모델은 다음과 같습니다.
log_radon ~ 1 + floor + (0 + log_uranium_ppm | county)
의 사후 분포(증거에 따라 조건부)를 사용하여 에 대한 MLE를 찾습니다.
3 데이터 먼징(Data Munging)
이 섹션에서는 radon
데이터세트를 얻고 가정된 모델을 준수하도록 몇 가지 최소한의 전처리를 수행합니다.
3.1 데이터 알기
이 섹션에서는 제안된 모델이 합리적일 수 있는 이유를 더 잘 이해하기 위해 radon
데이터세트를 살펴봅니다.
결론:
85개 카운티의 롱테일이 있습니다(GLMM에서 흔히 발생).
실제로 는 제약이 없습니다. 따라서 선형 회귀가 의미가 있을 수 있습니다.
판독값은 번째 층에서 가장 많이 이루어집니다. 층 이상에서는 판독이 이루어지지 않았습니다. 따라서 고정 효과에는 두 개의 가중치만 있습니다.
4 R의 HLM
이 섹션에서는 위에서 설명한 확률 모델에 맞추기 위해 R의 lme4
패키지를 사용합니다.
참고: 이 섹션을 실행하려면 R colab 런타임으로 전환해야 합니다.
5 Stan의 HLM
이 섹션에서는 위 lme4
모델과 동일한 공식/구문을 사용하여 Stan 모델을 피팅하기 위해 rstanarm을 사용합니다.
아래의 lme4
및 TF 모델과 달리 rstanarm
은 완전한 베이지안 모델입니다. 즉, 분포에서 매개변수 자체를 가져온 정규 분포에서 모든 매개변수를 가져온 것으로 가정합니다.
참고: 이 섹션을 실행하려면 R
colab 런타임으로 전환해야 합니다.
참고: 런타임은 단일 CPU 코어에서 제공됩니다. (이 colab은 Stan 또는 TFP 런타임을 충실하게 나타내기 위한 것이 아닙니다.)
참고: Python TF 커널 런타임으로 다시 전환하세요.
나중에 시각화하기 위해 lme4에서 그룹 무작위 효과에 대한 점 추정치와 조건부 표준 편차를 가져옵니다.
lme4 추정 평균과 표준 편차를 사용하여 카운티 가중치에 대한 샘플을 끌어옵니다.
또한 Stan 피팅으로부터 카운티 가중치의 사후 샘플을 가져옵니다.
이 Stan 예제는 확률 모델을 직접 지정하여 TFP에 더 가까운 스타일로 LMER을 구현하는 방법을 보여줍니다.
6 TF 확률의 HLM
이 섹션에서는 계층적 선형 모델을 지정하고 미지의 매개변수를 피팅하기 위해 낮은 수준의 TensorFlow Probability 프리미티브(Distributions
)를 사용합니다.
6.1 모델 지정
이 섹션에서는 TFP 프리미티브를 사용하여 Radon 선형 혼합 효과 모델을 지정합니다. 이를 위해 두 개의 TFP 분포를 생성하는 두 개의 함수를 지정합니다.
make_weights_prior
: 임의 가중치(선형 예측기를 계산하기 위해 를 곱함)에 대한 다변량 Normal 사전값.make_log_radon_likelihood
: 관찰된 각 종속 변수에 대한Normal
분포의 배치
이러한 각 분포의 매개변수를 피팅하려고 하므로 TF 변수(즉, tf.get_variable
)를 사용해야 합니다. 그러나 제약 없는 최적화를 사용해야 하기 때문에 실제 값을 제약하여 표준 편차를 나타내는 양수와 같이 필요한 의미를 얻을 수 있는 방법을 찾아야 합니다.
다음 함수는 사전값 를 구성합니다. 여기서 는 무작위 효과 가중치를 나타내고 는 표준 편차를 나타냅니다.
tf.make_template
을 사용하여 이 함수에 대한 첫 번째 호출이 사용되는 TF 변수를 인스턴스화하고 이후의 모든 호출이 변수의 현재 값을 재사용하도록 합니다.
다음 함수는 가능도 를 구성합니다. 여기서 는 응답 및 증거를 나타내고 는 고정 및 무작위 효과 가중치를 나타내며, 표준 편차를 나타냅니다.
여기서도 tf.make_template
을 사용하여 호출 간에 TF 변수가 재사용되도록 합니다.
마지막으로, 사전값 및 가능도 생성기를 사용하여 결합 로그-밀도를 구성합니다.
6.2 훈련(기대 극대화의 확률적 근사)
선형 혼합 효과 회귀 모델에 피팅하기 위해 기대값 최대화 알고리즘(SAEM)의 확률적 근사 버전을 사용합니다. 기본적인 개념은 예상되는 결합 로그-밀도를 근사하기 위해 사후 샘플을 사용하는 것입니다(E-단계). 그런 다음 이 계산을 최대화하는 매개변수를 찾습니다(M-단계). 좀 더 구체적으로, 고정 소수점 반복은 다음과 같이 주어집니다.
여기서 는 증거를 나타내고, 는 주변화해야 하는 일부 잠재 변수를 나타내며, 은 가능한 매개변수화를 나타냅니다.
더 자세한 설명은 Bernard Delyon, Marc Lavielle, Eric, Moulines(Ann. Statist., 1999)의 EM 알고리즘의 확률적 근사 버전의 수렴을 참조하세요.
E-단계를 계산하려면 사후에서 샘플링해야 합니다. 여기서 사후는 샘플링하기 쉽지 않기 때문에 HMC(Hamiltonian Monte Carlo)를 사용합니다. HMC는 새로운 샘플을 제안하기 위해 정규화되지 않은 사후 로그-밀도의 그래디언트(매개변수가 아닌 wrt 상태)를 사용하는 Monte Carlo Markov Chain 절차입니다.
정규화되지 않은 사후 로그-밀도를 지정하는 것은 간단합니다. 단순히 우리가 조건화하려는 모든 항목에 "고정된" 결합 로그-밀도일 뿐입니다.
이제 HMC 전환 커널을 생성하여 E-단계 설정을 완료합니다.
참고 사항:
state_stop_gradient=True
를 사용하여 M-단계가 MCMC에서 끌어당겨져 역전파되는 것을 방지합니다. (기억하십시오. E-단계는 이전에 가장 잘 알려진 estimator에서 의도적으로 매개변수화되었기 때문에 역전파할 필요가 없습니다.)tf.placeholder
를 사용하여 궁극적으로 TF 그래프를 실행할 때 이전 반복의 임의 MCMC 샘플을 다음 반복의 체인 값으로 제공할 수 있도록 합니다.TFP의 적응
step_size
휴리스틱인tfp.mcmc.hmc_step_size_update_fn
을 사용합니다.
이제 M-단계를 설정합니다. 이것은 본질적으로 TF에서 수행할 수 있는 최적화와 동일합니다.
몇 가지 정리 작업으로 마무리합니다. 모든 변수가 초기화되었음을 TF에 알려야 합니다. 또한 프로시저의 각 반복에서 해당 값을 print
할 수 있도록 TF 변수에 대한 핸들을 생성합니다.
6.3 실행
이 섹션에서는 SAEM TF 그래프를 실행합니다. 여기서 주된 개념은 HMC 커널의 마지막 드로우를 다음 반복에 제공하는 것입니다. 이를 위해 sess.run
호출에서 feed_dict
를 사용합니다.
~1500단계 후에 매개변수 추정치가 안정화된 것 같습니다.
6.4 결과
이제 매개변수를 피팅했으므로 많은 수의 사후 샘플을 생성하고 결과를 연구해 보겠습니다.
이제 무작위 효과의 상자 및 수염 다이어그램을 구성합니다. 카운티 빈도를 줄여 무작위 효과를 명령합니다.
이 상자 및 수염 다이어그램에서 카운티 수준 무작위 효과의 분산이 데이터세트에서 카운티가 덜 대표될수록 증가하는 것이 관찰됩니다. 직관적으로 이것은 이치에 맞습니다. 즉, 특정 카운티에 대한 증거가 적다면 이 카운티의 영향에 대해 덜 확신해야 합니다.
7 나란히 비교
이제 세 가지 프로시저의 결과를 모두 비교합니다. 이를 위해 Stan과 TFP에 의해 생성된 사후 샘플의 비 파라메트릭 추정치를 계산합니다. 또한 R의 lme4
패키지에 의해 생성된 파라메트릭(근사치) 추정치와 비교할 것입니다.
다음 플롯은 미네소타의 각 카운티에 대한 각 가중치의 사후 분포를 보여줍니다. Stan(빨간색), TFP(파란색) 및 R의 lme4
(주황색)에 대한 결과를 보여줍니다. Stan과 TFP의 결과를 음영 처리하므로 이 둘이 합치되면 보라색이 나타날 것으로 예상할 수 있습니다. 단순화를 위해 R의 결과는 음영 처리하지 않습니다. 각 서브 플롯은 단일 카운티를 나타내며 래스터 스캔 순서(즉, 왼쪽에서 오른쪽, 그리고 위에서 아래)의 내림차순 빈도로 정렬됩니다.
8 결론
이 colab에서는 선형 혼합 효과 회귀 모델을 radon 데이터세트에 피팅했습니다. R, Stan 및 TensorFlow Probability의 세 가지 소프트웨어 패키지를 시도했습니다. 세 가지 다른 소프트웨어 패키지에 의해 계산된 85개의 사후 분포를 플로팅하여 결론을 내렸습니다.
부록 A: 대체 Radon HLM(무작위 가로채기 추가)
이 섹션에서는 각 카운티와 관련된 무작위 가로채기도 가지고 있는 대체 HLM에 대해 설명합니다.
R의 lme4
"틸데 표기법"에서 이 모델은 다음과 같습니다.
log_radon ~ 1 + floor + (1 + log_county_uranium_ppm | county)
부록 B: 일반화된 선형 혼합 효과 모델
이 섹션에서는 본문에서 사용되는 것보다 더 일반적인 계층적 선형 모델의 특성을 제공합니다. 이 보다 일반적인 모델을 일반화된 선형 혼합 효과 모델(GLMM)이라고 합니다.
GLMM은 일반화된 선형 모델(GLM)을 일반화한 것입니다. GLMM은 샘플에 특정한 무작위 노이즈를 예측된 선형 응답에 도입하여 GLM을 확장합니다. 이것은 거의 드러나지 않는 기능이 더 일반적으로 드러나는 기능과 정보를 공유할 수 있도록 한다는 점에서 일부 유용한 면이 있습니다.
생성 프로세스로서 일반화된 선형 혼합 효과 모델(GLMM)은 다음과 같은 특징이 있습니다.
ParseError: KaTeX parse error: Expected 'EOF', got '#' at position 70: …e{2.45cm}\text{#̲ for each rando…여기서:
즉, 각 그룹의 모든 범주는 iid MVN, 와 연결되어 있습니다. 추첨이 항상 독립적이지만 그룹에 대해서만 동일하게 배포됩니다. 각 에 대해 정확히 하나의 가 있음에 주목하세요.
샘플 그룹의 특성, 과 유사하게 결합하면 결과는 번째 예측 선형 응답에 대한 샘플별 노이즈입니다(그렇지 않으면 ).
를 추정할 때 본질적으로 무작위 효과 그룹이 전달하는 노이즈의 양을 추정합니다. 그렇지 않으면 $x_i^\top\omega에 있는 신호를 추출합니다.