É o teorema do contraste relativo de Beyer et al. artigo: “Sobre o comportamento surpreendente das métricas de distância no espaço de alta dimensão” enganoso?


10

Isso é citado com muita frequência ao mencionar a maldição da dimensionalidade e vai

(fórmula à direita chamada contraste relativo)

limdvar(||Xd||kE[||Xd||k])=0,then:DmaxdkDmindkDmindk0

O resultado do teorema mostra que a diferença entre as distâncias máxima e mínima para um determinado ponto de consulta não aumenta tão rápido quanto a distância mais próxima de qualquer ponto no espaço dimensional alto. Isso torna uma consulta de proximidade sem sentido e instável, porque existe uma discriminação precária entre o vizinho mais próximo e o mais distante.

ligação

No entanto, se alguém realmente tentar calcular o contraste relativo dos valores da amostra, o que significa que se pega um vetor contendo valores muito pequenos e calcula a distância do vetor zero e faz o mesmo para um vetor que contém valores muito maiores e, em seguida, compara os valores para uma dimensão 3 e uma dimensão vezes maior, veremos que, embora a razão diminua, a mudança é tão pequena que é irrelevante para o número de dimensões realmente usadas na prática (ou alguém conhece alguém que trabalha com dados com dimensões do tamanho do número de Graham - que eu acho que é o tamanho necessário para que o efeito descrito seja realmente relevante - acho que não). 109

Como mencionado anteriormente, esse teorema é frequentemente citado para apoiar a afirmação de que medir a proximidade com base no espaço euclidiano é uma estratégia ruim em um espaço de alta dimensão, dizem os próprios autores, e ainda assim o comportamento proposto não ocorre de fato, fazendo-me acho que esse teorema foi usado de maneira enganosa.

Exemplo: com da dimensão

a=np.ones((d,)) / 1e5
b=np.ones((d,)) * 1e5
dmin,dmax=norm(a), norm(b)
(dmax-dmin)/dmin

para d = 3
9999999999.0
para d = 1e8
9999999998.9996738

E com 1e1 em vez de 1e5 (digamos que os dados sejam normalizados)
para d = 3
99.0
para d = 1e8
98.999999999989527


2
Como você obteve uma amostra de dados na dimensão ? Você talvez esteja confundindo "dimensão" com "escala"? 3+109
whuber

2
Você verificou a condição da variação?
Aksakal

Respostas:


8

Não, o teorema não é enganoso. Certamente pode ser aplicado incorretamente, mas isso é verdade para qualquer teorema.

Aqui está um script simples do MATLAB para demonstrar como funciona:

xd = randn(1e5,10000);
%%
cols = [1,10,100,1000,10000];
for c = cols
    xdt = table(xd(:,1:c));
    res = table2array(rowfun(@norm,xdt));
    mr = mean(res);
    res1 = var(res/mr);
    res2 = (max(res) - min(res))/min(res);
    fprintf('res1: %f, res2: %f\n',res1,res2)
end

A saída:

res1: 0.568701, res2: 2562257.458668
res1: 0.051314, res2: 9.580602
res1: 0.005021, res2: 0.911065
res1: 0.000504, res2: 0.221981
res1: 0.000050, res2: 0.063720

No meu código, res1 e res2 são as duas expressões em sua equação do artigo: uma para variância e a segunda para o contraste.

Você pode ver como os dois chegam a zero como deveria quando as dimensões variam de 1 a 10.000.


Agora, sinto que a pergunta se torna: para quais distribuições de onde Xvem a variação chega a zero?
precisa saber é o seguinte

2
@ Nimitz14 Isso seria uma excelente pergunta a ser feita.
Sycorax diz Restabelecer Monica

3
@ Nimitz14 esse teorema não deve funcionar para Cauchy, você pode testá-lo facilmente substituindo normal pelo aluno t (1). Caso contrário, acho que todas as distribuições regulares, como normal, uniforme, beta etc. devem ser cobertas.
Aksakal
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.