2017-04-21 4 views
0

모든 범위의 확률 벡터 (0에서 1까지)가 있지만 모든 숫자는 1보다 약간 작습니다.이 벡터의 곱의 최대 확률을 계산해야합니다.아주 작은 숫자가 포함 된 가능성

언더 플로가 발생하지 않도록하려면 어떻게해야합니까? 내 모든 시도에서 실패 할 수 있습니다. 내가 취한 첫 번째 단계는 내 배열을 배열의 최대 값으로 나누는 것이 었습니다. 나는 두 개의 샘플 확률 N 시간의 합계의 제품을 극대화하고 는 궁극적으로 나는 BIC에 따라 최소화해야합니다

BIC = -2. * ln(L) + 5n_theta(nz) 

어쨌든 L 양식의 정말 작은 숫자의 배열입니다

L = product of ([(p(z1|a) + p(z1|b)), (p(z2|a) + p(z2|b)), ...., (p(zn|a) + p(zn|b))]) 

다음은 두 개의 매개 변수 ab이 있고 배열의 크기가 n이고 각 p< 1 인 예제입니다.

답변

0

대립 상태로 작업 한 적이 있습니까?

L = (p1 * p2 * p3) ** Nln(L) = N * (ln(p1) + ln(p2) + ln(p3)) 이됩니다. 수치 정밀도 문제에 훨씬 더 강합니다.

그리고 당신이 직접 -2.0 * ln(L) + 5n_theta(nz)

+0

안녕에 ln(L)을 사용할 수 있습니다, 나는 내 질문에 설명했고 나는 주로 그것을 편집 한 방법을 제대로 깨달았다. – Canuck

+0

비슷한 것을 시도했지만 잘못 구현 한 것 같습니다. 도움을 주시면 감사하겠습니다. – Canuck

관련 문제