71 votos

Distancia/similitud entre dos matrices

Estoy en el proceso de escribir una aplicación que identifica la matriz más cercana de un conjunto de matrices cuadradas $M$ a una matriz cuadrada dada $A$ . Lo más cercano puede definirse como lo más similar.

Creo que encontrar la distancia entre dos matrices dadas es un enfoque justo ya que la menor distancia euclidiana se utiliza para identificar la cercanía de los vectores.

Encontré que la distancia entre dos matrices ( $A,B$ ) podría ser calculado usando el La distancia de Frobenius $F$ :

$$F_{A,B} = \sqrt{trace((A-B)*(A-B)')} $$

donde $B'$ representa la transposición conjugada de B.

Tengo los siguientes puntos que necesito aclarar

  • ¿Es la distancia entre las matrices una medida justa de la similitud?
  • Si se utiliza la distancia, ¿es la distancia de Frobenius una medida justa para este problema? ¿Alguna otra sugerencia?

4 votos

Hay muchas formas de medir la "distancia" entre dos matrices (igual que hay muchas formas de medir la distancia entre dos vectores). Sin más información, es imposible decir cuál es la mejor para ti.

0 votos

@bubba Sólo quiero encontrar la matriz más cercana a una matriz dada numéricamente. Estoy creando un recuperador de coincidencias más cercanas para una matriz dada. Si puedes indicarme otros posibles métodos que conozcas para las medidas de distancia sería de gran ayuda.

3 votos

Siempre que "sólo se quiera calcular algo", una buena norma es aquella para la que el problema se puede resolver fácilmente. Este suele ser el caso de la norma de Frobenius.

62voto

bubba Puntos 16773

Algunas sugerencias. Demasiado largo para un comentario:

Como dije, hay muchas maneras de medir la "distancia" entre dos matrices. Si las matrices son $\mathbf{A} = (a_{ij})$ y $\mathbf{B} = (b_{ij})$ entonces algunos ejemplos son: $$ d_1(\mathbf{A}, \mathbf{B}) = \sum_{i=1}^n \sum_{j=1}^n |a_{ij} - b_{ij}| $$ $$ d_2(\mathbf{A}, \mathbf{B}) = \sqrt{\sum_{i=1}^n \sum_{j=1}^n (a_{ij} - b_{ij})^2} $$ $$ d_\infty(\mathbf{A}, \mathbf{B}) = \max_{1 \le i \le n}\max_{1 \le j \le n} |a_{ij} - b_{ij}| $$ $$ d_m(\mathbf{A}, \mathbf{B}) = \max\{ \|(\mathbf{A} - \mathbf{B})\mathbf{x}\| : \mathbf{x} \in \mathbb{R}^n, \|\mathbf{x}\| = 1 \} $$ Estoy seguro de que hay muchos otros. Si buscas "normas de la matriz", encontrarás mucho material. Y si $\|\;\|$ es cualquier norma de la matriz, entonces $\| \mathbf{A} - \mathbf{B}\|$ te da una medida de la "distancia" entre dos matrices $\mathbf{A}$ y $\mathbf{B}$ .

O, podrías simplemente contar el número de posiciones en las que $|a_{ij} - b_{ij}|$ es mayor que algún número de umbral. Esto no tiene todas las propiedades agradables de una distancia derivada de una norma, pero aún así podría ser adecuado para sus necesidades.

Estas medidas de distancia tienen todas propiedades algo diferentes. Por ejemplo, la tercera que se muestra arriba le dirá que dos matrices están muy separadas aunque todas sus entradas sean iguales, excepto por una gran diferencia en una posición.

1 votos

¿Satisfacen todos ellos las condiciones de un espacio métrico?

2 votos

Las que he dado fórmulas son distancias derivadas de normas matriciales, por lo que son distancias en el sentido del espacio métrico. La última (contar grandes diferencias) no es una métrica.

0 votos

¿Puede proporcionar las referencias de estas fórmulas?

10voto

random coder Puntos 1

Si tenemos dos matrices $A,B$ . La distancia entre $A$ y $B$ puede ser calculado usando valores singulares o $2$ normas.

Puede usar Distance $= \vert(\text{fnorm}(A)-\text{fnorm}(B))\vert$ donde fnorm = raíz cuadrada de la suma de los cuadrados de todos los valores singulares.

1 votos

¿Puede ampliar esta respuesta? ¿Cuáles son las propiedades de esta distancia / de dónde la has sacado?

0 votos

Creo que esto no siempre es correcto, se pueden encontrar dos matrices que son muy diferentes pero que tienen los mismos valores singulares math.stackexchange.com/questions/4191889/

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X