Array de Distancia por GPU en Programación R

La medición de distancias es una herramienta vital en el análisis estadístico. Cuantifica la disimilitud entre los datos de muestra para el cálculo numérico. Una de las opciones populares de métrica de distancia es la distancia euclidiana , que es la raíz cuadrada de la suma de los cuadrados de las diferencias de atributos. En particular, para dos puntos de datos p y q con n atributos numéricos, la distancia euclidiana entre ellos es:

 d\left( p,q\right)   = \sqrt {\sum _{i=1}^{n}  \left( q_{i}-p_{i}\right)^2 }

Las medidas de distancia disponibles son (escritas para dos vectores x e y)

  • Euclidiana: Distancia habitual entre los dos vectores (2 normas aka L 2 ): √∑ i (x i −y i ) 2
  • Máxima : Distancia máxima entre dos componentes de x e y (norma suprema)
  • Manhattan: Distancia absoluta entre los dos vectores (1 norma también conocida como L1), ∑N i =1|P i −Q i |
  • Canberra: los términos con numeradores y denominadores cero se omiten de la suma y se tratan como si faltaran los valores: i |x i −y i |/(|x i |+|y i |)
  • Binario (también conocido como binario asimétrico): los vectores se consideran bits binarios, por lo que los elementos distintos de cero están ‘encendidos’ y los elementos cero están ‘apagados’. La distancia es la proporción de bits en los que el único está encendido entre aquellos en los que al menos uno está encendido.
  • Minkowski : La p norma, la p -ésima raíz de la suma de las p -ésimas potencias de las diferencias de las componentes: ∑N i =1|P i −Q i |p)1/p

Implementación en R

Para calcular la array de distancia por GPU en programación R , podemos usar la función dist() . La función dist() calcula y devuelve la array de distancia calculada mediante el uso de la medida de distancia especificada para calcular las distancias entre las filas de una array de datos.

 Sintaxis:

 dist(x, método = “euclidiano”, diag = FALSO, superior = FALSO, p = 2)

 Parámetros:

 x: una array numérica, marco de datos u objeto «dist»

 método: la medida de distancia a utilizar. Este debe ser uno de “euclidean”, “maximum”, “manhattan”, “canberra”, “binary” o “minkowski”. Se puede dar cualquier substring inequívoca.

 diag: valor lógico que indica si la diagonal de la array de distancia debe ser impresa por print.dist.

 superior: valor lógico que indica si el triángulo superior de la array de distancia debe ser impreso por print.dist.

 p: El poder de la distancia de Minkowski 

Ejemplo

R

# number of rows should be a multiple of rnorm
x <- matrix(rnorm(150), nrow = 5)
dist(x)
dist(x, diag = TRUE)
dist(x, upper = TRUE)
m <- as.matrix(dist(x))
d <- as.dist(m)
stopifnot(d == dist(x))
 
# showing all the six distance measures
x <- c(0, 0, 1, 1, 1, 1)
y <- c(1, 0, 1, 1, 0, 1)
 
dist(rbind(x, y), method = "binary")
 
dist(rbind(x, y), method = "canberra")
 
dist(rbind(x, y), method = "manhattan")
 
dist(rbind(x, y), method = "euclidean")
 
dist(rbind(x, y), method = "maximum")
 
dist(rbind(x, y), method = "minkowski")

Producción:

> dist(x)
         1        2        3        4
2 6.772630                           
3 7.615303 7.390410                  
4 6.460424 6.759275 7.773421         
5 6.551426 7.688254 7.886380 7.039102

> dist(x, diag = TRUE)
         1        2        3        4        5
1 0.000000                                    
2 6.772630 0.000000                           
3 7.615303 7.390410 0.000000                  
4 6.460424 6.759275 7.773421 0.000000         
5 6.551426 7.688254 7.886380 7.039102 0.000000

> dist(x, upper = TRUE)
         1        2        3        4        5
1          6.772630 7.615303 6.460424 6.551426
2 6.772630          7.390410 6.759275 7.688254
3 7.615303 7.390410          7.773421 7.886380
4 6.460424 6.759275 7.773421          7.039102
5 6.551426 7.688254 7.886380 7.039102 

> dist(rbind(x, y), method = "binary")
    x
y 0.4

> dist(rbind(x, y), method = "canberra")
    x
y 2.4

> dist(rbind(x, y), method = "manhattan")
  x
y 2

> dist(rbind(x, y), method = "euclidean")
         x
y 1.414214

> dist(rbind(x, y), method = "maximum")
  x
y 1

> dist(rbind(x, y), method = "minkowski")
         x
y 1.414214

Publicación traducida automáticamente

Artículo escrito por mayanktyagi1709 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *