PyMC3에서 바이스 추론 입문
개요
베이즈 추론을 할 수 있는 아이디어 설명과 그 파이썬 라이브러리 파이MC3로 예제를 풀어본다.
예제 등은 이곳의 창고를 참고했다.
https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
베스의 추론적 생각
예제
당신은 야쿠르의 부원입니다.나는 한 친구를 초대하여 함께 캠핑을 갔다.
다음 결과를 얻었을 때 친구가 초대에 대해 YES를 말할 확률은 얼마나 됩니까?
결실
첫 초대=>NO
2차 요청=>NO
3차 초대=>NO
이때 주파수주의적 생각이라면 친구가 YES를 말할 확률은0/3=0%
이다.
한편, 베이스식 아이디어는 신념의 정도에 따라 확률을 나타낸다.
확률을'어떤 일이 얼마나 믿음직한지'를 나타내는 지표로 해석하는 것은 베스주의다.
이 예라면'초대한 친구와 캠핑을 하면 얼마나 신뢰할 수 있을까'로 바꿀 수 있다.(따라서 친구가 YES의 신념을 확고히 말한다면 네 번째 YES를 말할 확률도 100%다.)
그 특징은 모든 사람의 신념(확률)이 다르도록 정의하는 것이다.
Python 라이브러리 PyMC
베이스 추론을 할 수 있는 파이톤 라이브러리입니다.
마코프 체인 몬테카로법(MCC) 알고리즘을 사용하여 수치를 수렴한다.
PyMC3과 PyMC3과 Python 2과 PyMC2가 있지만 PyMC3는 빠르고 2와 3의 패턴 쓰기 차이가 있기 때문에 둘 다 접촉하려면 학습 비용이 필요하기 때문에 기본적으로 PyMC3를 사용하는 것이 좋다.(하지만 책과 보도에 따라 PyMC2만 기술한 경우도 있다)
베이스 추론의 예
1000개의 관측치에서 추정한 후 분포하는데 그 중에서 0 또는 1의 확률은 50%이다.
다음 그림에서 보듯이 실례화pm.Model()
, 모델pm.sample()
을 정의하여 샘플링을 진행한다.
이 그림은 1000번 샘플링되었다.(약 10분 정도 소요됩니다.)
샘플링 후 분포의 비교
기본적으로 샘플링 수가 많을수록 결과는 더욱 정확해진다.
샘플 수량: 100000
샘플 수량: 1000
이렇게 샘플링 수가 100000회라면 분포의 평균치는 0.499와 정답의 50%에 가깝다.
1000번이면 편차가 상당히 뚜렷하고 분포의 평균치도 0.467로 정답에서 조금 벗어난다.
실제 과제를 해결해 봅시다
나는 실제 현장에서 베스 추론을 어떻게 사용하는지 고려할 것이다.
이번에 저희가 웹 서비스에서 자주 하는 AB 테스트 결과를 토대로 분석한 예입니다.
사이트 A와 B 중 어느 것이 전환에 더 연결됩니까?
처방을 구하다
1. 변환된 시비에 따라 0 또는 1의 2치 관측 데이터 준비
2. 사이트 AB의 전환율의 사전 분포 확인
3. 관측 데이터에 근거하여 사이트 AB의 전환율의 후분포에 대해 샘플링
4. 후분포 차이에 따라 사이트 AB 중 어느 것이 더 쉽게 변환되는지 분석
예제
당신은 야쿠르의 부원입니다.나는 한 친구를 초대하여 함께 캠핑을 갔다.
다음 결과를 얻었을 때 친구가 초대에 대해 YES를 말할 확률은 얼마나 됩니까?
결실
첫 초대=>NO
2차 요청=>NO
3차 초대=>NO
이때 주파수주의적 생각이라면 친구가 YES를 말할 확률은
0/3=0%
이다.한편, 베이스식 아이디어는 신념의 정도에 따라 확률을 나타낸다.
확률을'어떤 일이 얼마나 믿음직한지'를 나타내는 지표로 해석하는 것은 베스주의다.
이 예라면'초대한 친구와 캠핑을 하면 얼마나 신뢰할 수 있을까'로 바꿀 수 있다.(따라서 친구가 YES의 신념을 확고히 말한다면 네 번째 YES를 말할 확률도 100%다.)
그 특징은 모든 사람의 신념(확률)이 다르도록 정의하는 것이다.
Python 라이브러리 PyMC
베이스 추론을 할 수 있는 파이톤 라이브러리입니다.
마코프 체인 몬테카로법(MCC) 알고리즘을 사용하여 수치를 수렴한다.
PyMC3과 PyMC3과 Python 2과 PyMC2가 있지만 PyMC3는 빠르고 2와 3의 패턴 쓰기 차이가 있기 때문에 둘 다 접촉하려면 학습 비용이 필요하기 때문에 기본적으로 PyMC3를 사용하는 것이 좋다.(하지만 책과 보도에 따라 PyMC2만 기술한 경우도 있다)
베이스 추론의 예
1000개의 관측치에서 추정한 후 분포하는데 그 중에서 0 또는 1의 확률은 50%이다.
다음 그림에서 보듯이 실례화pm.Model()
, 모델pm.sample()
을 정의하여 샘플링을 진행한다.
이 그림은 1000번 샘플링되었다.(약 10분 정도 소요됩니다.)
샘플링 후 분포의 비교
기본적으로 샘플링 수가 많을수록 결과는 더욱 정확해진다.
샘플 수량: 100000
샘플 수량: 1000
이렇게 샘플링 수가 100000회라면 분포의 평균치는 0.499와 정답의 50%에 가깝다.
1000번이면 편차가 상당히 뚜렷하고 분포의 평균치도 0.467로 정답에서 조금 벗어난다.
실제 과제를 해결해 봅시다
나는 실제 현장에서 베스 추론을 어떻게 사용하는지 고려할 것이다.
이번에 저희가 웹 서비스에서 자주 하는 AB 테스트 결과를 토대로 분석한 예입니다.
사이트 A와 B 중 어느 것이 전환에 더 연결됩니까?
처방을 구하다
1. 변환된 시비에 따라 0 또는 1의 2치 관측 데이터 준비
2. 사이트 AB의 전환율의 사전 분포 확인
3. 관측 데이터에 근거하여 사이트 AB의 전환율의 후분포에 대해 샘플링
4. 후분포 차이에 따라 사이트 AB 중 어느 것이 더 쉽게 변환되는지 분석
나는 실제 현장에서 베스 추론을 어떻게 사용하는지 고려할 것이다.
이번에 저희가 웹 서비스에서 자주 하는 AB 테스트 결과를 토대로 분석한 예입니다.
사이트 A와 B 중 어느 것이 전환에 더 연결됩니까?
처방을 구하다
1. 변환된 시비에 따라 0 또는 1의 2치 관측 데이터 준비
2. 사이트 AB의 전환율의 사전 분포 확인
3. 관측 데이터에 근거하여 사이트 AB의 전환율의 후분포에 대해 샘플링
4. 후분포 차이에 따라 사이트 AB 중 어느 것이 더 쉽게 변환되는지 분석
사이트 A의 변환율은 5%이고 사이트 B의 변환율은 4%입니다.(따라서 이 분석의 결과로 사이트 A의 전환율이 가장 좋다.)
관측 데이터를 만들고 확인 데이터의 평균치는 각각 5%와 4%이다.
2. 사이트 AB의 전환율의 사전 분포 확인
3. 관측 데이터에 근거하여 사이트 AB의 전환율의 후분포에 대해 샘플링
이번에는 사전 분포를 0~1의 균등한 분포로 설정한다.
모델링 후 20000회 샘플링을 실시한다.
4. 후분포 차이에 따라 사이트 AB 중 어느 것이 더 쉽게 변환되는지 분석
맨 위의 도표는 사이트 A의 후방 분포로 0.05에 가까운 정확한 값 분포를 나타낸다.
중간의 도표는 사이트 B의 후방 분포로 0.04에 가까운 정확한 값 분포를 나타낸다.
맨 아래의 도표는
サイトAの事後分布-サイトBの事後分布
의 도표다.이 도표는 0보다 작은 면적
サイトAがサイトBより悪い確率
, 0보다 큰 면적サイトBがサイトAより悪い確率
이다.따라서 이러한 결론을 얻었다. 사이트 B가 사이트 A보다 버전이 나쁘고(사이트 B가 사이트 A보다 버전이 좋다) 83% 정도의 확률이라고 할 수 있다.
요약 및 향후
PyMC3을 사용하여 실제 문제를 분석했습니다.
이번에 2치의 사전 분포 데이터 분석을 실시했고 다른 확률 분포에 대해서도 모델링을 하여 추론했다.
Reference
이 문제에 관하여(PyMC3에서 바이스 추론 입문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shioiyan/items/49dd3c5e4c3499b764bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)