Como posso eficiente de estimar uma probabilidade baseada em uma pequena quantidade de evidências?

StackOverflow https://stackoverflow.com/questions/1697013

Pergunta

Eu tenho tentado encontrar uma resposta para esta meses (para ser usado em uma máquina de aprendizagem aplicativo), não, parece que ele deve ser um problema terrivelmente difícil, mas eu sou um engenheiro de software, e a matemática nunca foi um dos meus pontos fortes.

Aqui é o cenário:

Eu tenho um (possivelmente) de forma desigual ponderada de moeda e eu quero descobrir a probabilidade de ele vir até a cabeça.Eu sei que as moedas da mesma caixa que veio do tem uma probabilidade média de p, e sei também que o desvio-padrão dessas probabilidades (chamá-lo de s).

(Se outras propriedades de resumo das probabilidades de outras moedas além de sua média e desvio padrão seria útil, eu provavelmente posso obtê-los também.)

Eu jogam uma moeda n vezes, e ele vem cabeças h vezes.

O ingênuo abordagem é que a probabilidade é de apenas h/n - mas se n é pequeno, isso é improvável, para ser preciso.

Há um computacionalmente eficiente (ie.não se envolvem muito, muito grandes ou muito pequenos números) para tomar p e s em consideração para chegar com mais segurança a probabilidade de estimar, mesmo quando n é pequeno?

Eu aprecio isso se nenhuma resposta poderia usar pseudocódigo, em vez de notação matemática, desde que eu acho mais notação matemática para ser impenetrável ;-)


Outras respostas: Existem algumas outras respostas, de MODO que são semelhantes, mas as respostas fornecidas são insatisfatórias.Por exemplo este não é computacionalmente eficiente, pois rapidamente envolve números muito menores do que pode ser representado, mesmo em precisão dupla carros alegóricos.E este acabou por não ser incorreto.

Foi útil?

Solução

Você pode usar p como anterior à sua probabilidade estimada. Isso é basicamente o mesmo que suavização de pseudocorre. Ou seja, use

(h + c * p) / (n + c)

como sua estimativa. Quando h e n são grandes, então isso apenas se torna h / n. Quando h e n são pequenos, isso é apenas c * p / c = p. A escolha de c Cabe a você. Você pode basear isso em s Mas, no final, você precisa decidir o quão pequeno é muito pequeno.

Outras dicas

Infelizmente, você não pode fazer aprendizado de máquina sem saber alguma matemática básica-é como pedir ajuda a alguém na programação, mas não querendo saber sobre "variáveis", "sub-rotinas" e tudo isso se isso.

A melhor maneira de fazer isso é chamada de integração bayesiana, mas há uma aproximação mais simples chamada "Maximum a Postieri" (mapa). É muito parecido com o pensamento usual, exceto que você pode colocar na distribuição anterior.

Palavras sofisticadas, mas você pode perguntar, bem de onde veio a fórmula H/(H+T)? Claro que é óbvio, mas é a resposta que você recebe quando "não tem antes". E o método abaixo é o próximo nível de sofisticação quando você adiciona um anterior. Ir à integração bayesiana seria o próximo, mas isso é mais difícil e talvez desnecessário.

Pelo que entendi, o problema é duas dobras: primeiro você desenha uma moeda da bolsa de moedas. Esta moeda tem uma "cabeça" chamada Theta, de modo que dá uma fração teta da cabeça dos flips. Mas o Theta para esta moeda vem da distribuição mestre que acho que eu suponho ser gaussiano com p e desvio padrão S.

O que você faz a seguir é anotar a probabilidade total não formalizada (chamada de probabilidade) de ver toda a massagem, todos os dados: (H Heads, T Tails)

L = (teta)^h * (1-teta)^t * gaussian (teta; p, s).

Gaussiano (teta; p, s) = exp ( -(teta -p)^2 / (2*s^2)) / sqrt (2*pi*s^2)

Este é o significado de "primeiro valor 1, valor do teta do gaussiano" e depois desenhe cabeças H e caudas T de uma moeda usando esse teta.

O princípio do mapa diz que, se você não conhece teta, encontre o valor que maximiza L, dados os dados que você conhece. Você faz isso com cálculo. O truque para facilitar é que você leva os logaritmos primeiro. Define ll = log (l). Onde quer que L seja maximizado, também estará.

Então ll = hlog (teta) + tlog (1 -teta) + -(teta -p)^2 / (2*s^2)) -1/2*log (2*pi*s^2)

Por cálculo para procurar por extremos, você encontra o valor do Theta, de modo que dll/dtheta = 0. Como o último termo com o log não tem teta nele, você pode ignorá -lo.

dll/dtheta = 0 = (h/teta) + (p-teta)/s^2-(t/(1-teta)) = 0.

Se você puder resolver essa equação para teta, receberá uma resposta, a estimativa do mapa para teta dada o número de cabeças H e o número de caudas t.

Se você deseja uma aproximação rápida, tente fazer uma etapa do método de Newton, onde você começa com o teta proposto na estimativa óbvia (chamada máxima de probabilidade) do theta = h/(h+t).

E de onde vem essa estimativa "óbvia"? Se você fizer as coisas acima, mas não coloque o Gaussian Prior: h/teta - t/(1 -teta) = 0 você criará teta = h/(h+t).

Se suas probabilidades anteriores são realmente pequenas, como costuma ser o caso, em vez de perto de 0,5, um gaussiano anterior no Theta é provavelmente inapropriado, pois prevê algum peso com probabilidades negativas, claramente erradas. Mais apropriado é um Gaussian anterior no log theta ('Distribuição LogNormal'). Conecte -o da mesma maneira e trabalhe no cálculo.

Você não tem informações suficientes nesta pergunta.

Quantas moedas existem na caixa? Se são dois, em alguns cenários (por exemplo, uma moeda é sempre cabeças, as outras sempre cantas), sabendo que P e S seriam úteis. Se for mais do que alguns, e especialmente se apenas algumas das moedas forem apenas levemente ponderadas, isso não será útil.

O que é um pequeno N? 2? 5? 10? 100? Qual é a probabilidade de uma moeda ponderada chegar cabeças/cauda? 100/0, 60/40, 50.00001/49.99999? Como a ponderação é distribuída? Toda moeda é uma das 2 ponderações possíveis? Eles seguem uma curva de sino? etc.

Tudo se resume a isso: as diferenças entre uma moeda ponderada/não ponderada, a distribuição de moedas ponderadas e as moedas numéricas em sua caixa decidirão o que N deve ser para você resolver isso com alta confiança.

O nome para o que você está tentando fazer é um Trial de Bernoulli. Saber que o nome deve ser útil para encontrar melhores recursos.


Resposta ao comentário:

Se você tiver diferenças em P tão pequeno, terá que fazer muitas tentativas e não há como contornar isso.

Assumindo uma distribuição uniforme de viés, P ainda será de 0,5 e todo o desvio padrão lhe dirá que pelo menos algumas das moedas têm um viés menor.

Quantos lançamentos, novamente, serão determinados nessas circunstâncias pela ponderação das moedas. Mesmo com 500 lançamentos, você não terá uma forte confiança (cerca de 2/3) detectando uma divisão de 0,51/.49.

Em geral, o que você está procurando é Estimativa de máxima verossimilhança. Wolfram Demonstration Project tem uma ilustração de estimando a probabilidade de uma moeda Cabeça de aterrissagem, dada uma amostra de arremessos.

Bem, eu não sou homem de matemática, mas eu acho que a simples abordagem Bayesiana é intuitiva e amplamente aplicável o suficiente para colocar um pouco, embora para ele.Outros já sugeriram isso, mas, talvez, se você gosta de mim você prefere mais de verbosidade.Nesta linguagem, você tem um conjunto de mutuamente exclusivas hipóteses, H, e alguns dados D e você deseja localizar o (posterior) probabilidades de que cada hipótese Hi é correto dado a dados.Provavelmente, você iria escolher a hipótese de que teve o maior probabilidade posterior (MAPA, como indicado acima), se você tivesse que escolher um.Como Matt notas acima, o que distingue a abordagem Bayesiana a partir de apenas máxima verossimilhança (encontrar o H que maximiza Pr(D|H)) é que você também tem alguma PRÉVIA de informações a respeito de qual das hipóteses é mais provável, e você deseja incorporar esses antecedentes.

Então você tem de básico de probabilidade Pr(H|D) = Pr(D|H)*Pr(H)/Pr(D).Você pode estimar esses Pr(H|D) numericamente através da criação de uma série de discretos probabilidades Hi para cada hipótese que você deseja testar, por exemplo, [0.0,0.05, 0.1 ...0.95, 1.0] e, em seguida, determinar o seu prévio Pr(H) para cada Hi-acima presume-se você tem uma distribuição normal de priores, e se é aceitável que você poderia usar a média e o desvpad para obter cada Pr(Oi), ou use outra distribuição, se você preferir.Com a moeda joga o Pr(D|H) é, naturalmente, determinada pelo binômio usando o observado o número de sucessos em n ensaios e a Oi que está sendo testado.O denominador Pr(D) pode parecer difícil, mas vamos supor que nós cobrimos todas as bases com as nossas hipóteses, de modo que Pr(D) é a soma do Pr(D|Hi)Pr(H) sobre todas H.

Muito simples, se você pensar sobre isso um pouco, e talvez não por isso, se você pensar sobre isso um pouco mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top