As seqüências de baixa discrepância funcionam em espaços discretos?

9

Sequências de baixa discrepância em um espaço real ([0,1]n) parece ser uma ferramenta realmente excelente para amostrar uniformemente um espaço de amostra. Tanto quanto eu posso dizer, eles generalizam bem para qualquer espaço real, se você usar um mapa apropriado (por exemplo,[0,1][a,b] mapa linear).

Essas seqüências generalizam para espaços discretos? por exemplo. se eu tiver um espaço que tenha apenas dois elementos em cada dimensão (por exemplo, comutadores booleanos), posso apenas mapear[0,0.5]0; (0.5,1]1? E as dimensões com mais elementos (por exemplo, um comutador de 4 estados?). E para espaços com diferentes números de estados em cada dimensão?

Minha intuição diz que isso pode funcionar bem, especialmente se a sub-sequência for longa, mas pode funcionar melhor para algumas sequências do que para outras, dependendo do número de estados (por exemplo, uma sequência de Halton pode ter interações estranhas com uma dimensão com um número primo de estados ou uma sequência de Sobol ' pode funcionar apenas para dimensões com2nelementos). Mas eu não fiz nenhum teste.

Se isso não funcionar, por que não?

naught101
fonte

Respostas:

2

A resposta curta é sim! Pode funcionar e é tão simples quanto multiplicar o vetortn(0,1)d por um número inteiro m, e a obtenção da parte inteira de cada um de seus componentes.

A resposta mais longa é que sua intuição está correta, que na prática ela apresenta resultados variados, dependendo da escolha de:

  • qual sequência você escolhe (Halton, Sobol, etc.)
  • os parâmetros básicos (por exemplo, 2,3,5, ...)
  • e, em menor grau, o valor de m.

No entanto, escrevi recentemente um post detalhado do blog "A eficácia irracional de sequências quase aleatórias , sobre como criar facilmente uma sequência de baixa discrepância aberta em dimensões arbitrárias, que é muito mais passível de discretização do que as sequências de baixa discrepância existentes, como as seqüências de Halton e Kronecker.

A seção da postagem chamada "Covering" trata especificamente da sua questão de discretizar as seqüências de baixa discrepância.

Nos quadrados da imagem a seguir (que indicam um ponto inteiro exclusivo da rede) com menos vermelho, implica uma distribuição mais uniforme, pois cada quadrado vermelho indica que a célula não contém um ponto azul. Pode-se ver claramente como até oRA sequência distribui pontos em comparação com outros métodos contemporâneos.

Imagem: Sequências discretas de baixa discrepância em duas dimensões

A solução é um método de recorrência aditivo (módulo 1) que generaliza o problema unidimensional cuja solução depende da proporção áurea. A solução para odtridimensional, depende de uma constante especial ϕd, Onde ϕd é o valor do menor valor real positivo de x de tal modo que

xd+1=x+1

Para d=1ϕ1=1.618033989..., que é a proporção de ouro canônica.

Para d=2, ϕ2=1.3247179572..., que geralmente é chamada de constante de plástico e tem algumas propriedades bonitas. Esse valor foi conjecturado como provavelmente o valor ideal para um problema bidimensional relacionado [Hensley, 2002].

Jacob Rus publicou uma bela visualização dessa sequência bidimensional de baixa discrepância, que pode ser encontrada aqui .

Com esta constante especial em mãos, o cálculo da n- o termo agora é extremamente simples e rápido de calcular:

R:tn=αα0+nαα(mod1),n=1,2,3,...
whereαα=(1ϕd,1ϕd2,1ϕd3,...1ϕdd),

Obviamente, a razão pela qual isso é chamado de sequência de recorrência é porque a definição acima é equivalente a

R:tn+1=tn+αα(mod1)

Em quase todos os casos, a escolha de αα0 não altera as principais características e, por razões de óbvia simplicidade, αα0=00é a escolha usual. No entanto, existem alguns argumentos, relacionados à simetria, que sugerem queαα0=1/21/2 é uma escolha melhor.

O código Python é

# Use Newton-Rhapson-Method
def gamma(d):
    x=1.0000
    for i in range(20):
        x = x-(pow(x,d+1)-x-1)/((d+1)*pow(x,d)-1)
    return x

d=5
n=1000

# m can be any number.
# In the diagram above it is chosen to be exactly sqrt of n, 
# simply to to make the visualization more intuitive 
# so that ideally each cell should have exactly one dot.
m=10

g = gamma(d)
alpha = np.zeros(d)                 
for j in range(d):
    alpha[j] = pow(1/g,j+1) %1
z = np.zeros((n, d))    
c = (np.zeros((n,d)).astype(int)  

for i in range(n):
    z = (0.5 + alpha*(i+1)) %1
    c = (np.floor(m *z)).astype(int)
print(c)

Espero que ajude!

Martin Roberts
fonte
2

Se você tiver um número finito de espaços, será melhor ter uma enumeração explícita de possíveis espaços com um design de bloco incompleto balanceado construído sobre eles. No final, as propriedades das seqüências de baixa discrepância são assintóticas, com propriedades desejáveis ​​alcançadas com os comprimentos da ordemN6s Onde sé a dimensão do seu espaço. Se o número de combinações possíveis for menor que isso, você pode apenas usar todas as combinações possíveis e obter um design equilibrado com isso.

Atualização: houve um livro que discutiu o uso do QMC para processos de Poisson e ensaios de Bernoulli. Pode ser que você encontre algo útil lá, embora, na minha opinião, esteja muito longe de um bom valor pelo dinheiro. Por US $ 15, talvez. Achei isso um tanto desleixado em alguns lugares, forçando as idéias do autor (às vezes esquisitas) ao invés de utilizar o que foi entendido como o melhor método da literatura.

StasK
fonte
Boa resposta geral, Stask, mas apenas aborda realmente as suposições por trás da minha pergunta, e não a minha pergunta diretamente. Obrigado por apontar o BIDB, mas eu ainda gostaria de saber se as seqüências de baixa discrepância funcionariam da maneira que estou descrevendo (isso pode ser apenas uma questão de esclarecimento sobre o que você quer dizer com "as propriedades ... são assintóticas).
Naft101
Uma pergunta à parte: como o BIDB difere dos hipercubos latinos ortogonais? Parece basicamente a mesma coisa (embora talvez venha de ângulos diferentes). Além disso, o que é QMC?
Naught101