나이브 베이 즈 구현


10

Laplacian smoothing을 사용하여 텍스트 분류를위한 Naive Bayes 알고리즘을 구현하고 있습니다. 내가 가진 문제는 많은 작은 분수를 곱하기 때문에 확률이 0에 가까워진다는 것입니다. 따라서 확률은 결국 0이됩니다. 문서와 훈련 세트 내에 여러 단어가 있기 때문입니다.

이로 인해 텍스트를 분류 할 수 없습니다. 이 문제를 해결할 수있는 방법이 있습니까? 구현에 문제가 있습니까?


... 부동 소수점 산술을 피할 수 있습니다.

msdn.microsoft.com/en-us/magazine/jj891056.aspx 여기에 쉬운 답변이 있습니다.
Roshan Mehta

답변:


14

이 언더 플로를 피하는 일반적인 트릭은 ID 사용하여 로그로 계산하는 것입니다 즉, 확률을 사용하는 대신 로그를 사용합니다. 곱하지 말고 더합니다.

logi=1npi=i=1nlogpi.

일반적이지 않은 또 다른 방법은 제품을 수동으로 정규화하는 것입니다. 대신에 단지 하나의 부동 소수점 수의 유지 하면 부동 소수점 숫자 유지 (말)과 음의 지수 되도록 . 각 작업 후에 결과 번호를 정규화합니다.pp0[1,2)xp=p02x


2
이 맥락에서 logsumexp 트릭을 언급하는 것도 유용합니다. en.wikipedia.org/wiki/LogSumExp
Bitwise
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.