PyMC3에서 베이지안 모델 선택


11

PyMC3을 사용하여 데이터에서 베이지안 모델을 실행하고 있습니다.

나는 Bayesian 모델링에 익숙하지 않지만 이 사이트의 일부 블로그 게시물 , Wikipedia 및 QA 에 따르면 Bayes factor 및 BIC 기준을 사용하여 내 데이터를 가장 잘 나타내는 모델을 선택할 수있는 유효한 접근 방법 인 것 같습니다 (생성하는 모델) 내 데이터).

Bayes 계수를 계산하려면 비교하려는 모델에 대한 상대적인 가능성이 필요합니다. 어쩌면 약간 혼란 스럽지만 가능성을 얻는 두 가지 방법이 있다고 생각합니다 (잘못되면 정정하십시오).

  • 모델이 단순 할 때의 대수적 방법 : Wikipedia 예제 Bayes factor page 참조

  • 숫자 방식 : 이것은 MCMC 알고리즘으로 PyMC3 가하는 일입니다.

PyMC3에서 가능성에 액세스하여 모델을 비교하려면 어떻게해야합니까? model.logp의사에 따르면 "로그 확률 밀도 함수"인 방법을 찾았습니다 . 그것을 사용하여 가능성을 얻을 수 있습니까?

보너스 질문 : 두 모델을 비교할 때 두 가능성 간의 비율이 계산됩니다. 여러 모델을 비교하려면 어떻게됩니까?

구체적인 PyMC3 예제는 매우 도움이 될 것입니다!

답변:


15

실제로 model.logp ()를 사용하여 모델의 가능성을 계산할 수 있습니다. 입력으로 포인트가 필요합니다. 예를 들어, 예제 디렉토리의 BEST 모델은 다음과 같습니다.

np.exp(model.logp({'group1_mean': 0.1, 
                   'group2_mean': 0.2, 
                   'group1_std_interval': 1., 
                   'group2_std_interval': 1.2, 
                   'nu_minus_one_log': 1}))

이 모델은 변환 된 변수를 사용하므로 변수를 제공해야합니다. 그런 다음 exp ()를 사용하여 숫자 적분기 내부에서 사용할 수 있습니다 (예 : scipy.integrate에서 제공). 문제는 5 개의 매개 변수 만 있어도 매우 느리다는 것입니다.

Bayes Factors는 전체 파라미터 공간을 통합해야하기 때문에 일반적으로 계산하기가 매우 어렵습니다. 이를 위해 MCMC 샘플을 사용하는 아이디어가 있습니다. 자세한 내용은이 게시물, 특히 주석 섹션을 참조하십시오. https://radfordneal.wordpress.com/2008/08/17/the-harmonic-mean-of-the-likelihood-worst-monte-carlo-method-ever / BIC의 경우는 불행히도 비슷합니다.

Bayes Factor를 실제로 계산하려면 Savage Dickey Ratio 테스트 (예 : http://drsmorey.org/bibtex/upload/Wagenmakers:etal:2010.pdf 참조 )를 볼 수 있지만 적용 범위는 제한적입니다.

많은 의견과 솔루션 (BF와 같이 구현하기 어려운)이있는 필드 인 모델 비교를 수행하려고한다고 가정합니다. 계산이 매우 쉬운 측정 방법 중 하나는 편차 정보 기준입니다. 단점은 있지만 일부는 해결할 수 있습니다 ( http://onlinelibrary.wiley.com/doi/10.1111/rssb.12062/abstract 참조 ). 불행히도 우리는 코드 pymc3을 아직 포팅하지 않았지만 꽤 쉽습니다 (pymc2 구현에 대해서는 여기를 참조하십시오 : https://github.com/pymc-devs/pymc/blob/895c24f62b9f5d786bce7ac4fe88edb4ad220364/pymc/MCMC.py# L410 ).

Kruschke는 전체 모델을 구축하고 중요한 매개 변수를 알려주는 접근 방식을 선호합니다. 모델 자체에 변수 선택을 구축 할 수도 있습니다 (예 : http://arxiv.org/pdf/math/0505633.pdf 참조 ).

마지막으로, 훨씬 더 완전한 치료를 위해이 최신 블로그 게시물을 참조하십시오 : http://jakevdp.github.io/blog/2015/08/07/frequentism-and-bayesianism-5-model-selection/


1
pymc3에 DIC를 추가하는 문제를 개설 : github.com/pymc-devs/pymc3/issues/797
twiecki
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.