Apakah teorema kontras relatif dari Beyer et al. makalah: "Tentang Perilaku Metrik Jarak yang Mengejutkan di Ruang Dimensi Tinggi" menyesatkan?


10

Ini dikutip sangat sering ketika menyebutkan kutukan dimensi dan pergi

(rumus kanan disebut kontras relatif)

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

Hasil teorema menunjukkan bahwa perbedaan antara jarak maksimum dan minimum ke titik kueri yang diberikan tidak meningkat secepat jarak terdekat ke titik mana pun dalam ruang dimensi tinggi. Ini membuat kueri kedekatan menjadi tidak berarti dan tidak stabil karena ada diskriminasi yang buruk antara tetangga terdekat dan terjauh.

tautan

Namun jika seseorang benar-benar mencoba menghitung kontras relatif untuk nilai sampel, artinya seseorang mengambil vektor yang mengandung nilai sangat kecil dan menghitung jarak ke vektor nol dan melakukan hal yang sama untuk vektor yang mengandung nilai yang jauh lebih besar, dan kemudian membandingkan nilai untuk dimensi 3 dan dimensi 109 kali lebih besar, orang akan melihat bahwa, sementara rasio menurun, perubahannya sangat kecil sehingga tidak relevan untuk jumlah dimensi yang sebenarnya digunakan dalam praktik (atau apakah ada yang tahu ada yang bekerja dengan data dengan dimensi ukuran nomor Graham - yang saya kira adalah ukuran yang diperlukan untuk efek yang dijelaskan makalah agar benar-benar relevan - saya pikir tidak).

Seperti disebutkan sebelumnya, teorema ini sangat sering dikutip untuk mendukung pernyataan bahwa mengukur kedekatan berdasarkan ruang euclidean adalah strategi yang buruk dalam ruang berdimensi tinggi, kata penulis sendiri, namun perilaku yang diusulkan tidak benar-benar terjadi, membuat saya pikir teorema ini telah digunakan dengan cara yang menyesatkan.

Contoh: dengan ddimensi

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

untuk d = 3
9999999999.0
untuk d = 1e8
9999999998.9996738

Dan dengan 1e1, bukannya 1e5 (katakanlah data dinormalisasi)
untuk d = 3
99.0
untuk d = 1e8
98.999999999989527


2
Bagaimana Anda mendapatkan sampel data dalam dimensi ? Apakah Anda mungkin membingungkan "dimensi" dengan "skala"? 3+109
whuber

2
Apakah Anda memeriksa kondisi pada varian?
Aksakal

Jawaban:


8

Tidak, teorema itu tidak menyesatkan. Ini tentu saja dapat diterapkan secara salah, tetapi itu berlaku untuk teorema apa pun.

Berikut ini skrip MATLAB sederhana untuk menunjukkan cara kerjanya:

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

Hasil:

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

Dalam kode saya, res1 dan res2 adalah dua ekspresi dalam persamaan Anda dari kertas: satu untuk varians, dan yang kedua untuk kontras.

Anda dapat melihat bagaimana keduanya menjadi nol seperti seharusnya saat dimensi berubah dari 1 menjadi 10.000.


Sekarang saya merasa pertanyaannya menjadi, untuk distribusi mana dari mana Xvariansnya menjadi nol?
Nimitz14

2
@ Nimitz14 Itu akan menjadi pertanyaan yang sangat bagus untuk ditanyakan sendiri.
Sycorax mengatakan Reinstate Monica

3
@ Nimitz14 teorema ini seharusnya tidak bekerja untuk Cauchy, Anda dapat mengujinya dengan mudah dengan mengganti normal dengan siswa t (1). Kalau tidak, saya pikir semua distribusi reguler seperti normal, seragam, beta dll harus dicakup.
Aksakal
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.