{"id":155,"date":"2020-04-03T13:46:15","date_gmt":"2020-04-03T11:46:15","guid":{"rendered":"https:\/\/intsight.com\/?p=155"},"modified":"2021-01-10T12:36:01","modified_gmt":"2021-01-10T11:36:01","slug":"valores-y-vectores-propios","status":"publish","type":"post","link":"https:\/\/intsight.com\/index.php\/2020\/04\/03\/valores-y-vectores-propios\/","title":{"rendered":"Valores y vectores propios"},"content":{"rendered":"<blockquote>\n<p style=\"text-align: right;\"><em>Though this be madness, yet there is method in&#8217;t.<\/em><br \/>\n<em>Polonius<\/em><\/p>\n<\/blockquote>\n<p><span style=\"font-variant: small-caps;\">Esta va a ser<\/span>, probablemente, la entrada m\u00e1s esot\u00e9rica de esta serie. Yo mismo no tengo claro si esto me lo ense\u00f1aron en el primer a\u00f1o de la carrera. Supongo que s\u00ed, pero no tuve que usar estas cosas hasta mucho tiempo despu\u00e9s.<\/p>\n<p>Todo el mundo tiene una idea m\u00e1s o menos intuitiva sobre qu\u00e9 es un vector. Las intuiciones sobre las matrices no son tan populares, pero una que nos valdr\u00e1 es considerar que una matriz representa una transformaci\u00f3n sobre un vector. Esa transformaci\u00f3n puede ser una rotaci\u00f3n, un cambio de escala, una traslaci\u00f3n (con ciertas modificaciones) o una combinaci\u00f3n de todas estas cosas. Supongamos que, en un caso concreto, la transformaci\u00f3n es una rotaci\u00f3n. Entonces tiene que haber un eje de rotaci\u00f3n, \u00bfno? Y ese eje de rotaci\u00f3n va a estar determinado por un vector que debe cumplir la siguiente ecuaci\u00f3n:<br \/>\n$$<br \/>\nA \\times x = \\lambda x<br \/>\n$$He generalizado y metido un multiplicador $\\lambda$, pero para una rotaci\u00f3n podemos dejar que este $\\lambda$ valga 1. \u00bfQu\u00e9 quiere decir entonces la ecuaci\u00f3n anterior? Pues que existe un vector que se transforma en s\u00ed mismo. En realidad, cualquier m\u00faltiplo de ese vector se va a transformar en s\u00ed mismo. \u00bfY para qu\u00e9 quiero entonces el multiplicador $\\lambda$? Muy sencillo: imaginemos que la transformaci\u00f3n es un cambio de escala uniforme en todas las direcciones. Cualquier vector cumple entonces la igualdad anterior de forma trivial.<\/p>\n<p>Compliquemos un poco la transformaci\u00f3n, entonces: vamos a estirar todos los vectores en una direcci\u00f3n. En este caso, si $A \\times x = \\lambda x$, entonces el vector <b>x<\/b> apunta en la direcci\u00f3n del estiramiento:<br \/>\n<img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-212\" src=\"https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2020\/03\/stretch.png?resize=300%2C116&#038;ssl=1\" alt=\"\" width=\"300\" height=\"116\" srcset=\"https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2020\/03\/stretch.png?resize=300%2C116&amp;ssl=1 300w, https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2020\/03\/stretch.png?w=400&amp;ssl=1 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><br \/>\nEn general, esos vectores que se transforman en s\u00ed mismos, se conocen como \u00abvectores propios\u00bb de la matriz o transformaci\u00f3n, y los multiplicadores se conocen como \u00abvalores propios\u00bb de la transformaci\u00f3n. En ingl\u00e9s: <em>eigenvector<\/em> y <em>eigenvalue<\/em>, respectivamente.<\/p>\n<h4>C\u00f3mo se calculan<\/h4>\n<p>\u00bfC\u00f3mo se pueden calcular valores y vectores propios? Los algoritmos pr\u00e1cticos son relativamente complicados. Pero hay una forma relativamente sencilla cuando las matrices son peque\u00f1as. Si manipulamos los t\u00e9rminos de la definici\u00f3n, podemos agruparlos as\u00ed:<br \/>\n$$<br \/>\n(A &#8211; \\lambda I) \\times x = 0<br \/>\n$$En este caso, $I$ es la matriz identidad (toda la diagonal con unos y el resto de las celdas con ceros). Por lo tanto, los valores propios, es decir, los valores que puede tomar \u03bb son aquellos para los que el determinante de la matriz $A &#8211; \\lambda I$ valga cero.<\/p>\n<p>Tomemos el caso m\u00e1s sencillo: una matriz de rotaci\u00f3n en 2D, y veamos c\u00f3mo queda el determinante.<br \/>\n$$<br \/>\n\\displaylines{\\pmatrix{\\cos \\theta \\,- \\lambda &amp; &#8211; \\sin \\theta \\cr \\sin \\theta &amp; \\cos \\theta \\,- \\lambda }<br \/>\n\\cr<br \/>\n\\lambda ^2 &#8211; 2 \\lambda \\cos ^2 \\theta + 1 = 0}<br \/>\n$$El polinomio sobre \u03bb que se genera se conoce como \u00abpolinomio caracter\u00edstico\u00bb y, oops, en este caso tiene un discriminante negativo, lo que quiere decir que sus dos ra\u00edces son complejas (excepto si el seno del \u00e1ngulo es igual a cero, en cuyo caso hay dos ra\u00edces reales id\u00e9nticas). \u00bfNo hab\u00edamos quedado en que el vector propio de una matriz de rotaci\u00f3n era el eje de rotaci\u00f3n? S\u00ed, pero en dos dimensiones no existe un eje de rotaci\u00f3n, porque quedar\u00eda siempre fuera del plano. Por este motivo, los valores propios son complejos y lo mismo ocurre con los vectores propios. Otras matrices 2D s\u00ed tienen valores propios reales, pero no las de rotaci\u00f3n. Si, por el contrario, se tratase de una matriz de rotaci\u00f3n en 3D, el polinomio caracter\u00edstico ser\u00eda de tercer grado. Y da la casualidad que todo polinomio de tercer grado (o de grado impar, en general) tiene al menos una ra\u00edz real. Si quieres, haz la prueba.<\/p>\n<h4>Power iteration<\/h4>\n<p>Para matrices peque\u00f1as, los polinomios caracter\u00edsticos son manejables, pero en estad\u00edsticas se suele trabajar con matrices enormes. Hay varios m\u00e9todos \u00abserios\u00bb para cubrir estos casos, pero todos son complicadillos de implementar. Es mejor tirar de librer\u00edas probadas que intentar reinventar la rueda. No obstante, existe un m\u00e9todo muy sencillo que nos puede valer cuando s\u00f3lo necesitamos un vector propio, el asociado al valor propio de m\u00e1s magnitud:<\/p>\n<ol>\n<li>Selecciona un vector aleatorio, y aseg\u00farate de que su longitud sea uno.<\/li>\n<li>Multiplica el vector con la matriz.<\/li>\n<li>Normaliza el vector. Esto es, div\u00eddelo por su longitud para que el vector tenga nuevamente longitud uno.<\/li>\n<li>Repetir desde el paso dos, hasta que el vector converja a algo, o te aburras de esperar a la convergencia.<\/li>\n<\/ol>\n<p>Este es el algoritmo conocido como \u00abpower iteration\u00bb, y no siempre converge. Cuando lo hace, la velocidad de la convergencia depende de la magnitud de la diferencia entre el mayor de los valores propios y el siguiente. Tiene el defecto adicional de que s\u00f3lo calcula\u00a0<em>ese<\/em> valor propio. Para calcular los siguientes, hay que transformar la matriz.<\/p>\n<h4>\u00bfAplicaciones?<\/h4>\n<p>Las hay a montones&#8230; pero estoy siguiendo a rajatabla la t\u00e1ctica de hacer entradas peque\u00f1as para evitar la tentaci\u00f3n de abandonar el blog cuando tarde mucho en escribir cada entrada. Lo que s\u00ed puedo es adelantar algunos de los usos de estas cosas.<\/p>\n<p>Por ejemplo, los \u00abobservables\u00bb en Mec\u00e1nica Cu\u00e1ntica son valores propios de operadores hermitianos. Ojo: estoy hablando ahora de operadores en vez de matrices, pero la mayor\u00eda de estos operadores pueden representarse mediante matrices.<\/p>\n<p>En Estad\u00edstica, los vectores propios son la base de un algoritmo conocido como Principal Component Analysis, o PCA. Para ir haciendo boca, le adelanto una de las propiedades que personalmente me molan m\u00e1s. Imaginemos que formamos una matriz a partir de los vectores propios:<br \/>\n$$<br \/>\nA = [v_1, v_2, v_3 \\cdots v_n]<br \/>\n$$Si todos los vectores propios son diferentes o, m\u00e1s bien, independientes, resulta que esta es una matriz ortogonal, que representa un giro en alg\u00fan n\u00famero de direcciones. Ahora transformaremos esta matriz con la matriz original:<br \/>\n$$<br \/>\nAQ = [Av_1, Av_2, Av_3 \\cdots Av_n]<br \/>\n$$Si no ves inmediatamente lo que ocurre en el lado derecho, tranquilo, que es la falta de pr\u00e1ctica: yo estas cosas las aprend\u00ed hace muchos a\u00f1os, y cuesta resucitarlas. Si es tu caso, aplica la f\u00f3rmula de multiplicaci\u00f3n de matrices y desarr\u00f3llala. El caso es que, sabiendo que los $v_n$ son vectores propios, podemos simplificar la ecuaci\u00f3n anterior de esta manera:<br \/>\n$$<br \/>\nAQ = [\\lambda _1 v_1, \\lambda _2 v_2, \\lambda _3 v_3 \\cdots \\lambda _n v_n]<br \/>\n$$Usando una de esas simplificaciones no muy evidentes, pero que se pueden comprobar f\u00e1cilmente, la ecuaci\u00f3n se puede reducir a esto:<br \/>\n$$<br \/>\nAQ = Q \\Lambda<br \/>\n$$La nueva matriz $\\Lambda$ es simplemente una matriz diagonal con un valor propio en cada uno de los elementos de la diagonal. El \u00faltimo paso es multiplicar ambos lados de la igualdad por la inversa de $Q$, la matriz ortogonal:<br \/>\n$$<br \/>\nAQQ^{-1} = A = Q \\Lambda Q^{-1}<br \/>\n$$En otras palabras, podemos descomponer la matriz original en una matriz ortogonal y una matriz diagonal, debidamente combinadas.<\/p>\n<p>\u00bfQu\u00e9 tiene esto de interesante para que yo diga que me mola? Vamos a multiplicar la matriz $A$ por s\u00ed misma, es decir, vamos a elevarla al cuadrado:<br \/>\n$$<br \/>\nA \\cdot A = Q \\Lambda Q^{-1} \\cdot Q \\Lambda Q^{-1} = Q \\Lambda ^2 Q^{-1}<br \/>\n$$Si ya tenemos la descomposici\u00f3n de la matriz, las potencias de la ra\u00edz se obtienen f\u00e1cilmente elevando la matriz diagonal a la potencia deseada&#8230; que como se puede comprobar, es una operaci\u00f3n muy sencilla.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Though this be madness, yet there is method in&#8217;t. Polonius Esta va a ser, probablemente, la entrada m\u00e1s esot\u00e9rica de esta serie. Yo mismo no tengo claro si esto me lo ense\u00f1aron en el primer a\u00f1o de la carrera. Supongo que s\u00ed, pero no tuve que usar estas cosas hasta mucho tiempo despu\u00e9s. Todo el [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":157,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[7],"tags":[21,22,19,20],"class_list":["post-155","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fintech","tag-eigenvalues","tag-eigenvectors","tag-linear-algebra","tag-matrices"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/intsight.com\/wp-content\/uploads\/2020\/03\/gyro.png?fit=200%2C200&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/comments?post=155"}],"version-history":[{"count":33,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/155\/revisions"}],"predecessor-version":[{"id":478,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/posts\/155\/revisions\/478"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/media\/157"}],"wp:attachment":[{"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/media?parent=155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/categories?post=155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/intsight.com\/index.php\/wp-json\/wp\/v2\/tags?post=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}