Você está na página 1de 11

6.

Diagonalización de matrices
Estudiaremos el método de diagonalización de Jacobi, el cual es aplicable a
matrices simétricas. Como ejemplo de aplicación, se va a desarrollar el método
estadístico de análisis de componentes principales.

6.1 El método de Jacobi

Toda matriz simétrica (o hermítica, aunque aquí nos centraremos en el caso de


trabajar en variable real) S={sij} es diagonalizable, es decir, se puede encontrar
una matriz X tal que
SX = X∆ ,

donde D={dij} es una matriz diagonal. Así pues, escribimos también


X −1SX = ∆ . Es decir, la matriz diagonal se obtiene a partir de una
transformación de semejanza matricial aplicada sobre S. Además, el hecho de
que S sea simétrica permite demostrar que la matriz X es unitaria: la inversa de
X es su transpuesta:
X T SX = ∆ .

La diagonalización de una matriz 2¥2 por el método de Jacobi es simple y nos


va a permitir generalizar las ideas a matrices de dimensión mayor. Si la matriz
simétrica es
s s12 
S =  11 
s
 12 s 22 

podemos plantear su diagonalización a través de una matriz 2¥2 unitaria y que


contiene los vectores propios en sus columnas. Una matriz unitaria siempre se
puede expresar como el producto de matrices de rotación en un plano. En este
caso particular escribimos:
 cos α − sen α 
X =   .
 sen α cos α 

Entonces, la ecuación que debe cumplirse es que la matriz

 cos α sen α  s11 s12  cos α − sen α 


X T SX =    
 − sen α cos α  s12 s 22  sen α cos α 

sea diagonal. Por consiguiente, se debe satisfacer la igualdad

( )
0 = d 12 = d 21 = (s 22 − s11 ) senα cos α + s12 cos 2 α − sen 2α .

Teniendo en cuenta que 2senacosa=sen(2a) y que cos2a–sen2a =cos(2a), la


ecuación que permite despejar a es

6-1
1
tan (2α ) = ,
θ

s 22 − s11 2tanα
siendo θ = . Puesto que tan (2α ) = se despeja la tangente de
2s12 1 − tan 2 α
a de la siguiente ecuación de segundo grado:

tan 2 α + 2θtanα − 1 = 0 ,

siendo la solución asociada a un menor error de redondeo aquella donde

signo (θ)
tanα = .
θ + 1+ θ2

Sin embargo, lo que interesa es conocer los valores numéricos de sena y del
cosa:

1
cos α = y sen α = cos α tanα .
1 + tan 2 α

Esto permite codificar a la matriz X de dimensión 2×2. De esta transformación


de semejanza se obtiene la matriz diagonal que contiene los valores propios.

En el caso de que S sea una matriz simétrica de dimensión n×n este resultado
se puede generalizar. La matriz unitaria X se obtiene como el producto de
matrices unitarias de rotaciones planas con la estructura siguiente:

1 L 0 0 L 0 0 L 0
 
M O M M L M M M
0 L cos α 0 L 0 − sen α L 0
 
0 L 0 1 0 0 L 0
J j =  M M O M M.

0 L 0 0 1 0 L 0
 
0 L sen α 0 L 0 cos α L 0
M L M M L M M O M
 
0 L 0 0 L 0 0 L 1 

En cada matriz de rotación, Jj, los elementos trigonométricos ocupan las


posiciones variables pq y qp. Estas posiciones p y q se pueden escoger de
diversas formas: consecutivamente barriendo iterativamente el triángulo
superior (o inferior) de la matriz o cada vez buscando el elemento que queda
de S fuera de la diagonal con mayor valor absoluto. En cada rotación elemental
estos elementos Spq y Sqp se van a anular. Puede parecer que el proceso de

6-2
diagonalización con el método de Jacobi se consiga con un número prefijado
de pasos, pero esto no es así. Resulta que cada vez que un elemento se pone
a cero aplicando una matriz de rotación Jj, los valores de su misma fila y
columna se ven alterados. Así, si antes algunos de estos elementos ya eran
cero, pueden dejar de serlo al aplicar la rotación elemental. El proceso debe ser
necesariamente iterativo y después de un cierto número de pasos se consigue
transformar la matriz S en ∆, la matriz diagonal. El criterio de finalización es que
el elemento de fuera de la diagonal y con mayor valor absoluto sea menor que
un cierto valor de tolerancia prefijado. A lo largo del proceso, las matrices Jj se
van multiplicando de forma ordenada a medida que se van utilizando. De esta
forma, el producto final de todas ellas va a ser la matriz de vectores propios X:

[ [ ] ]
L J 3T J 2T J 1T SJ 1 J 2 J 3 L = ∆

(1
L J J J )S (J J J L) = ∆
42
T
3
4 434 14243
T
2
T
1 1 2 3

X T X

Si sólo se desean conocer los valores propios de S no hace falta efectuar estos
productos matriciales. Toda esta operativa se encuentra codificada en el
algoritmo que se da a continuación:

ALGORITMO DE DIAGONALIZACIÓN DE MATRICES SIMÉTRICAS POR EL


MÉTODO DE JACOBI

1) Pedir S, la matriz simétrica n×n a diagonalizar


2) Definir X=I: matriz de los vectores propios (en las columnas)
3) Definir la tolerancia del proceso
4) Buscar elemento Spq(j) tal que │Spq(j)│=maxi<k {│Sik(j)│}
5) Si │Spq(j)│ < tolerancia entonces

Los valores propios quedan en la diagonal de S.


Opcional: ordenar valores y vectores propios.
Imprimir resultados y finalizar.

en caso contrario

d=Sqq(j)-Spp(j)

Si │d│ > tolerancia entonces

e=Spq(j)/d

Si │e│ > tolerancia entonces


θ=1/(2e)
signo (θ )
t=
θ + 1+ θ2
sino
t=e

6-3
fin si
1
c=
1+ t 2
s=tc
sino
t=1.0 (ángulo α de 45 grados)
1
c=
2
s=c
fin si
s
τ=
1+ c
h = t Spq(j)

Efectuar los cambios debidos a la rotación:

a) Cambios inmediatos
Spq(j+1)=0 Lo que queremos !
Sqp(j+1)=0
Spp(j+1) = Spp(j) – h Se deja la traza
Sqq(j+1) = Sqq(j) + h invariante

b) Otros cambios en las filas y columnas de la matriz S:


Spk(j+1) = Spk(j) – s (Sqk(j) + τ Spk(j))
Sqk(j+1) = Sqk(j) + s (Spk(j) – τ Sqk(j))
Skp(j+1) = Skp(j) – s (Skq(j) + τ Skp(j))
Skq(j+1) = Skq(j) + s (Skp(j) – τ Skq(j)) ∀ k≠p,q

c) Cambios en las columnas de la matriz X:


Xkp(j+1) = Xkp(j) – s (Xkq(j) + τ Xkp(j))
Xkq(j+1) = Xkq(j) + s (Xkp(j) – τ Xkq(j)) ∀k

Ir al paso 4)
fin si

6.2. Análisis de Componentes Principales (ACP)

En muchas aplicaciones científicas, un conjunto de n objetos se representan a


través de una colección de m descriptores, índices o parámetros. En algunos
casos m es un número lo suficientemente grande como para que sea difícil
analizar el conjunto de datos en toda su dimensionalidad. En términos más
abstractos, se puede decir que se consideran los n objetos como n puntos
ubicados en un espacio de m dimensiones. Entonces, el objetivo perseguido es
el de clasificar esos objetos, representarlos en un espacio de dimensión menor
p<m, de tal manera que esa proyección en ese espacio sea óptima desde
algún punto de vista, es decir, que la reducción de dimensionalidad no sea
gratuita sino justificada.

6-4
En la metodología de ACP se ordenan los descriptores en una matriz A de
dimensión n¥m. El criterio matemático utilizado para conseguir la reducción de
dimensionalidad es tal que, para un valor prefijado de p, se retenga en ese
subespacio la máxima varianza estadística total de los datos originales. Esto
conduce a especificar una nueva serie de ejes ortogonales entre sí, los
componentes principales (CP). Cada CP es una combinación lineal de las
variables o descriptores originales. Veámoslo:

El primer tratamiento numérico que debe hacerse es el de escalar las columnas


de descriptores de la matriz A. Esto es así porqué cada columna (cada
variable) puede estar especificada en un sistema de unidades distinto. De
hecho, cada variable no tiene porqué ser de la misma naturaleza que las otras.
Hay varias posibilidades de escalado. La más común consiste en obtener
vectores columnas centrados y normalizados adimensionales. Así pues, a cada
columna aj de la matriz A,

A = (a1 a2 L am ) ,
se le calcula su media
1 n
aj = ∑ aij
n i =1

y las desviaciones típicas multiplicadas por n:

∑ (a − aj ) ,
n
2
sj = ij
i =1

obteniendo la matriz de variables adimensionales siguiente:

A → Z = (z1 z 2 L z m ) ,

donde cada vector columna zj se define a partir de la transformación

a j − 1a j
aj → zj = ,
sj
siendo 1 el vector columna con n unos.

La matriz de variables homogeneizadas adimensionales permite calcular la


matriz de los coeficientes de correlación entre cada par de columnas de datos:

R = ZT Z .

Esta matriz es de dimensión m¥m.

Los CP vienen dados por los vectores propios de la matriz R:

RX = X∆ ,
donde

6-5
X = (x 1 x2 L xm ) i ∆ = Diag {λ1, λ 2 ,..., λ m } .

Todos los valores propios son no negativos (recordemos que la matriz Z se


obtiene de tal manera que es definida no negativa). Precisamente los valores
propios de esta matriz son los parámetros que indican qué fracción de la
varianza total original retiene cada nuevo CP:

λi
fi = 100 m
%.
∑λ j =1
j

Por ello, la ordenación, de mayor a menor, de los valores propios induce un


orden de preferencia de los CP. A partir de ahora supondremos que

λ 1 ≥ λ 2 ≥ ... ≥ λ m .

El criterio de Kaiser consiste en tomar como representativos los p primeros


componentes asociados a valores propios superiores a 1.0. Esto es así porqué,
debido a la estructura de la matriz de correlaciones, la suma de valores propios
va a dar m, el número de variables. En cierto modo, el valor propio indica de
cuantas variables originales el vector propio resume la información. Así se
identifican los componentes con valor propio superior a 1 como aquellos que
contienen información acumulada de más de una variable original. Se trata de
componentes que realmente han condensado la información.

El primer CP, x1, describe un eje que minimiza la suma de las distancias
euclidianas al cuadrado de todos los puntos a aquel eje. El segundo CP, x2,
está dado por la proyección ortogonal al primer CP que retenga la segunda
mayor cantidad de varianza de los datos originales; el tercer CP, x3, es un
vector ortogonal a los dos primeros que tiene el tercer puesto en la jerarquía
establecida respecto a retención de varianza, etcétera.

El conjunto de los m CP genera una nueva matriz de coordenadas (scores)


para los puntos-objeto. A los coeficientes de cada vector propio xj se les llama
pesos (en inglés, loadings) e indican que combinaciones lineales de las
variables originales se deben construir para definir las nuevas coordenadas
adimensionales de los objetos estudiados:

B = ZX .

Lo más usual, a efecto de reducir la dimensionalidad del problema, consiste en


elegir los p=2 o p=3 primeros CP. Luego se representan los datos en mapas de
2 o 3 dimensiones. Normalmente, a cada eje se especifica qué porcentaje de
varianza retenida, fj, tiene asociado. Por lo que hemos visto esos porcentajes
son aditivos (los CP son ortogonales).

Los últimos valores propios suelen ser muy pequeños o cero. Esto indica que
esas nuevas variables no son relevantes. En realidad esto esta asociado al
hecho de que hay variables originales de la matriz A que son redundantes

6-6
entre ellas (linealmente dependientes) y que no era necesario incluirlas en
dicha matriz para describir a los objetos.

De todo lo que se acaba de decir se desprende que, en el marco del ACP y


contrariamente a lo que sucede en el proceso de regresión multilineal, la
elección de descriptores se hace con total independencia de otras variables
dependientes asociados a los objetos estudiados.

Ejercicio desarrollado

Se dispone de un conjunto de 9 elementos químicos y para cada uno de ellos


se han recopilado 5 propiedades (elementos de la matriz A):

1er. PI AE Radio Peso Número


Elemento
KJ/mol KJ/mol covalente (pm) atómico atómico
H 1310 -72 37 1 1
He 2370 21 54 4 2
Li 519 -60 134 7 3
Be 900 18 91 9 4
B 799 -28 82 11 5
C 1090 -122 77 12 6
N 1400 7 74 14 7
O 1310 -142 70 16 8
F 1680 -328 68 19 9

Un análisis de componentes principales nos provee de los siguientes


resultados:

Datos transformados (pseudoestandarizados), Z:

1 0.0298 0.0206 -0.5194 -0.5744 -0.5164


2 0.7209 0.3183 -0.2949 -0.3898 -0.3873
3 -0.4858 0.0590 0.7615 -0.2052 -0.2582
4 -0.2374 0.3087 0.1937 -0.0821 -0.1291
5 -0.3033 0.1614 0.0748 0.0410 0.0000
6 -0.1136 -0.1394 0.0088 0.1026 0.1291
7 0.0885 0.2735 -0.0308 0.2257 0.2582
8 0.0298 -0.2034 -0.0836 0.3488 0.3873
9 0.2710 -0.7987 -0.1100 0.5334 0.5164

Triangulo inferior de la matriz de correlaciones a diagonalizar (matriz de


productos escalares entre columnas de datos), Z:

1 2 3 4 5
1 1.000000
2 -0.103402 1.000000
3 -0.702816 0.107492 1.000000
4 -0.028112 -0.616255 0.150363 1.000000
5 0.021209 -0.627604 0.064786 0.993190 1.000000

Del valor marcado en negrita se desprende que las variables 4 y 5 (peso


atómico y número atómico) están fuertemente correlacionadas. Se puede
prescindir de una de ellas en el estudio. Esto va a revertir en la existencia de un
valor propio casi nulo.

6-7
Valores propios (número de orden, valor, porcentaje fj y porcentaje acumulado):

1 2.51074 50.2% 50.2%


2 1.73242 34.6% 84.9%
3 0.47543 9.5% 94.4%
4 0.27848 5.6% 99.9%
5 0.00294 0.1% 100.0%

Vectores propios (escritor por filas), XT:

1 : -0.00966 0.50056 -0.04691 -0.61078 -0.61163


2 : 0.69545 -0.14037 -0.70178 -0.06386 -0.00826
3 : 0.30394 0.82351 0.10221 0.33420 0.32758
4 : 0.65084 -0.22703 0.69954 -0.07856 -0.17128
5 : 0.01679 -0.00522 0.07412 -0.71064 0.69942

Nuevas coordenadas B=ZX de los átomos (éstas tienden a cero a medida que
consideramos vectores columna asociados a valores propios más pequeños):

1 : 0.701 0.423 -0.388 -0.215 0.009


2 : 0.641 0.692 0.194 0.288 -0.005
3 : 0.282 -0.865 -0.174 0.263 0.013
4 : 0.277 -0.338 0.132 -0.061 -0.023
5 : 0.055 -0.289 0.062 -0.185 -0.030
6 : -0.211 -0.073 -0.072 -0.066 0.017
7 : -0.158 0.028 0.409 -0.088 0.018
8 : -0.548 0.083 0.076 -0.087 0.018
9 : -1.04 0.340 -0.239 0.150 -0.017

La representación gráfica de los objetos en el espacio de los dos primeros


componentes es la siguiente:

0.8
He

0.4 H
Componente Principal 2 (34.6%)

O
0.0 N
C

B
Be
-0.4

-0.8
Li

-1.2
-1.2 -0.8 -0.4 0.0 0.4 0.8
Componente Principal 1 (50.2%)

¿Qué sugiere esta disposición espacial?

6-8
El primer componente contiene información de las 4 últimas propiedades (ver
elementos marcados en negrita en el vector propio). Los porcentajes de
participación se obtienen elevando al cuadrado esas componentes. El segundo
componente contiene, básicamente, información de las propiedades primera y
tercera.

6-9
Programa

!--------------------------------------------------------------------
! Diagonalizacion de matrices simetricas por el metodo de Jacobi
! Esta rutina preserva la matriz de entrada
!--------------------------------------------------------------------
SUBROUTINE JACOBI(Z,X,D,n,toler)
!--------------------------------------------------------------------
! Parametros : n : Dimension de la matriz
! Z(n,n) : Matriz a diagonalizar
! X(n,n) : Matriz de vectores propios
! D(n) : Vector de valores propios
! toler : Tolerancia del proceso
!--------------------------------------------------------------------
implicit double precision (A-H,O-Z)
integer p,q
parameter (cero=0.0d0,one=1.0d0,half=.50d0)
dimension Z(n,n),X(n,n),D(n),A(n,n)

do i=1,n; do j=1,n; A(i,j)=Z(i,j);end do; end do ! Transfiere matriz

do p=1,N ! Inicializa vectores y valores propios


do q=1,n
X(p,q)=cero
end do
X(p,p)=one
end do
if (n==1) then ! Caso particular
D(1)=A(1,1)
RETURN
end if

DO WHILE (.true.) ! Iteraciones

amax=CERO ! Busca el elemento a eliminar


DO iP=1,n-1 ! En el triangulo inferior
DO iQ=ip,n !
if (ip/=iq) then
if (ABS(A(iP,iQ))>amax) then
p=ip
q=iq
amax=abs(A(ip,iq))
end if
end if
end do
end do ! Elemento a eliminar: A(p,q)

aa=A(Q,Q)-A(P,P)
if (abs(aa)>toler) then
div=a(p,q)/aa
IF (ABS(div)>toler) then
theta=half/div
t=one/(abs(theta)+dsqrt(one+theta*theta))
if (theta<cero) t=-t
else
t=div
end if
else
t=one
end if
c=one/dsqrt(one+t*t)

6-10
s=t*c
tau=s/(one+c)
h=t*a(p,q)

! Cambios de la rotacion
a(p,p)=a(p,p)-h
a(q,q)=a(q,q)+h
a(p,q)=cero
a(q,p)=cero
do k=1,n ! Cambios en filas y columnas de A
if (k/=p .and. k/=q) then
Apk=A(p,k)
Aqk=A(q,k)
A(p,k)=apk-s*(Aqk+Apk*tau)
A(q,k)=aqk+s*(Apk-Aqk*tau)
Akp=A(k,p)
Akq=A(k,q)
A(k,p)=akp-s*(Akq+Akp*tau)
A(k,q)=akq+s*(Akp-Akq*tau)
end if
Xkp=X(k,p) ! Cambios en las columnas vectores propios
Xkq=X(k,q)
X(k,p)=Xkp-s*(Xkq+Xkp*tau)
X(k,q)=Xkq+s*(Xkp-Xkq*tau)
end do
if (amax<toler) exit ! Elemento eliminado muy pequeño: acaba

END DO

! Los valores propios han quedado en la diagonal


do i=1,n; D(i)=A(i,i);end do

! Ordena valores y vectores propios


do p=1,n-1
do q=p+1,n
if (D(q)<D(p)) then
G=D(p); D(p)=D(q); D(q)=G
do j=1,n
G=X(j,p); X(j,p)=X(j,q); X(j,q)=G
end do
end if
end do
end do
END
!--------------------------------------------------------------------

6-11