Genera rumore uniforme da una sfera p-norm (


11

Sto cercando di scrivere una funzione che genera un rumore distribuito uniformemente che proviene da una sfera di norma p di n dimensioni:

||x||pr

Ho trovato possibili soluzioni per i cerchi ( p=2 ) ( http://mathworld.wolfram.com/DiskPointPicking.html ), tuttavia ho difficoltà ad estenderlo per diversi valori di p .

Ho provato a farlo semplicemente estraendo un campione casuale da una distribuzione uniforme e ridisegnando quando non soddisfa il vincolo dato. Tuttavia, oltre ad essere una brutta soluzione, diventa anche computazionalmente impossibile per dimensioni elevate.


1
La risposta può essere trovata qui per una sfera con n dimensioni usando la distanza euclidea (p = 2) math.stackexchange.com/questions/87230/… Tuttavia non sono ancora sicuro di come usarlo per diverse p-norme, posso cambiare semplicemente la distanza euclidea usata in una relazione diversa per la distanza?
Taeke de Haan,

2
Ci sono molti documenti, ma la maggior parte sono dietro paywall: link.springer.com/article/10.1007/s00184-011-0360-x o vedi google.com/…
kjetil b halvorsen

3
"Uniforme" rispetto a quale volume metrico? Dopotutto, se stai usando una ball, perché il volume euclideo sarebbe interessante? p
whuber

@whuber Sinceramente non ne sono sicuro poiché questo non è chiaramente indicato nell'incarico, ma mi aspetterei in p-norm poiché qualsiasi altra metrica sembra arbitraria in questo caso.
Taeke de Haan,

1
Il problema deriva da un incarico di Machine Learning; "Il problema è un problema di classificazione in due classi in 204 dimensioni. Il piccolo set di addestramento con etichetta ha una dimensione di 50 campioni per classe. I dati senza etichetta forniscono 20.000 campioni aggiuntivi. Questi campioni, tuttavia, hanno subito una corruzione di qualche tipo. solo le informazioni aggiuntive che abbiamo riguardo a questa corruzione sono che si tratta di un rumore uniforme additivo e che il rumore proviene da una sfera p-norm fissa, , dove sia p sia il raggio r sono sconosciuti. " Devo ottenere il tasso di errore più basso sui dati senza etichetta. ||x||prpr
Taeke de Haan,

Risposte:


5

Ho trovato la soluzione completa in un documento come suggerito da kjetil b halvorsen ( https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=758215 ). Sinceramente ho difficoltà a capire la matematica che sta dietro, ma l'eventuale algoritmo è abbastanza semplice. se abbiamo dimensioni, un raggio r e la norma p di:nrp

1) genera scalari reali casuali indipendenti ε i = ˉ G ( 1 / p , p ) , dove ˉ G ( μ , σ 2 ) è la distribuzione gaussiana generalizzata (con una diversa potenza nell'esponente e - | x | p invece di solo p = 2 )nεi=G¯(1/p,p)G¯(μ,σ2)e|x|pp=2

2) costruire il vettore dei componenti s i * ε i , dove s i sono segni casuali indipendentixsiεisi

z=w1/nw

y=rzx||x||p


2
G

È stato aggiornato
Taeke de Haan il

2
e|x|pp=2xxi
f(x)e|x|pp

@MartijnWeterings Grazie mille, è stato aggiornato.
Taeke de Haan,

Grazie. Per informazioni, esiste un campionatore di questa distribuzione nel pacchetto p pgnorm .
Stéphane Laurent,

3

Utilizzo di variabili multivariate distribuite omogeneamente

Taeke fornisce un collegamento a un articolo che il testo seguente rende più intuitivo spiegando in particolare i casi a 2 e 1 norma.

x2r

direzione del campione

È possibile utilizzare questo risultato http://mathworld.wolfram.com/HyperspherePointPicking.html

Un multivariata gaussiana distribuito variabile (con matrice identità di covarianza) dipende solo dalla distanza, o somma dei quadrati.X

f(X1,X2,...,Xn)=1in12πe12xi2=12πe121inxi2

Pertanto è distribuito uniformemente sulla superficie dell'ipersfera n-dimensionale.XX2


distanza del campione

Per completare devi solo campionare la distanza, per cambiare la distribuzione omogenea sulla sfera in una distribuzione omogenea in una palla. (che è più o meno simile all'esempio collegato per la selezione del punto del disco)

Se campionassi semplicemente come una distribuzione uniforme, avresti una densità relativamente più alta vicino al centro (il volume si ridimensiona come quindi una frazione dei punti finirebbe in un volume , che è più denso vicino al centro e non significherebbe una distribuzione uniforme)rrnrrn

Se invece usi l' -esima radice di una variabile campionata da una distribuzione uniforme, otterrai una distribuzione uniforme.n

1 normax1r

direzione

In questo caso, campionate dalla distribuzione di Laplace invece della distribuzione gaussiana e dividete per la 1-norma. Il è distribuito uniformemente sulla sfera 1 norma n-dimensionale.XX|X|1

Non ho prove formali, solo intuizione

(poiché il pdf è indipendente dalla posizione, ci si aspetta che qualsiasi area / volume infinitesimale con la stessa 1-norma abbia la stessa probabilità e quando lo comprimi sulla superficie dell'unità la stessa )f ( x ) d Af(x)dVf(x)dA

ma test con simulazioni sembra buono.

simulazione che raccoglie 20000 valori distribuiti uniformemente

library(rmutil)
x <- abs(rlaplace(20000))
y <- abs(rlaplace(20000))
z <- abs(rlaplace(20000))
rn <- abs(x)+abs(y)+abs(z)

xi <- (x/rn)
yi <- (y/rn)
zi <- (z/rn)
plot(sqrt(0.5)*(xi-yi),
     sqrt((0.5-0.5*(xi+yi))^2+zi^2),
     pc=21,bg=rgb(0,0,0,0.02), col=rgb(0,0,0,0),cex=1)

distanza

La distanza è simile a quella del caso a 2 norme (il volume si ridimensiona ancora come ).rn

p-normxpr

In questo caso, se si desidera seguire lo stesso principio, è necessario campionare le distribuzioni con (ipotizzo). Queste sono distribuzioni normali generalizzate e probabilmente si riferiscono alla distribuzione menzionata da Taeke. G ( )f(x)e|x|pG()


1
Potresti approfondire come concludere che i vettori di unità sono distribuiti uniformemente? BTW, credo che si vuole prendere il esima radice. p
whuber

1
Grazie per il vostro aiuto, ho trovato la soluzione completa qui: ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=758215 ). Sinceramente ho difficoltà a capire la matematica che sta dietro, ma l'eventuale algoritmo è abbastanza semplice. se abbiamo dimensioni, un raggio norma di: 1) generiamo n scalari reali casuali indipendenti E_i = G (1 / p, p) 2) costruiscono il vettore x dei componenti s_i * E_i, dove E_i sono segni casuali indipendenti 3) Genera , dove è una variabile casuale distribuita uniformemente nell'intervallo [0, 1]. 4) returnr p z = w 1 / n w y = r z xnrpz=w1/nwy=rzx||x||p
Taeke de Haan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.