Aprendizagem de Máquina

Revisão de Matrizes em Aprendizagem de Máquina

Prof. Jodavid Ferreira

UFPE

Lista de Notação



  • \(X\) ou \(Y\)
  • \(x\) ou \(y\)
  • \(\mathbf{x}\) ou \(\mathbf{y}\)
  • \(\dot{\mathbf{x}}\) ou \(\dot{\mathbf{y}}\)
  • \(\mathbf{X}\) ou \(\mathbf{Y}\)
  • \(\dot{\mathbf{X}}\) ou \(\dot{\mathbf{Y}}\)

  • \(p\)
  • \(n\)
  • \(i\)
  • \(j\)

representam variáveies aleatórias (v.a.);

representam realizações da variáveis aleatórias;

representam vetores aleatórios;

representam realização de vetores aleatórios;

representam matrizes aleatórios;

representam realização de matrizes aleatória;


dimensão das \(features\), variáveis, parâmetros

tamanho da amostra

\(i\)-ésima observação, instância

\(j\)-ésima \(feature\), variável, parâmetro

Álgebra Linear em AM



  • A álgebra linear fornece a linguagem matemática fundamental para representar e manipular dados em Aprendizagem de Máquina.

  • Conjuntos de dados são frequentemente estruturados como matrizes, onde as linhas representam (observações, instâncias, amostras e as colunas representam características, features, variáveis.

  • Muitos algoritmos de aprendizagem de máquina, desde regressão linear até redes neurais profundas, são baseados em operações algébricas lineares.

  • Compreender essas operações é crucial para entender como esses algoritmos funcionam internamente.

Álgebra Linear em AM




  • Vamos revisitar operações matriciais fundamentais e essenciais para a compreensão dos conceitos de aprendizagem de máquina


  • Especificamente, vamos caminhar por propriedades e aplicações da adição, subtração, multiplicação, inversão e decomposição de matrizes.

Matriz, Vetor e Escalar



Uma matriz é um arranjo bidiomensional de valores dispostos em \(n\) linhas e \(p\) colunas (uma matriz \(n \times p\)). Cada elemento pode ser denotado como \(a_{ij}\), onde \(i\) é o número da linha e \(j\) é o número da coluna.

Exemplo de Matriz:

\[\dot{\mathbf{X}} = \left[ \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \end{array} \right]\]


Neste exemplo acima, a matriz possui 2 linhas e 3 colunas, dizemos que é uma matriz de dimensão \(2 \times 3\) e o elemento na primeira linha e segunda coluna, ou seja, \(a_{12} = 2\).

Matriz, Vetor e Escalar


  • Um vetor pode ser considerado um caso especial de matriz com uma única linha (vetor linha) ou uma única coluna (vetor coluna).

Exemplo de Vetor linha: \[\dot{\mathbf{x}} = \left[ \begin{array}{c} 1 \quad 2 \quad 3 \end{array} \right]\]

Neste caso acima, o vetor possui 1 linha e 3 colunas, dizemos que é um vetor de dimensão \(1 \times 3\).


  • Cada elemento da matriz ou vetor é um escalar, ou seja, um único valor numérico.

Exemplo de escalar:

  • Elemento \(a_{2} = 2\) do vetor \(\dot{\mathbf{x}}\) é um escalar,

  • ou, \(x = 5 \text{ ou } x = 10\)

Tipos de Matrizes



  • Matriz Quadrada:


\[\dot{\mathbf{X}} = \left[ \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array} \right]\]

Uma matriz com um número igual de linhas e colunas (\(n = p\)). Muitas operações importantes, como inversão e cálculo do determinante, são definidas apenas para matrizes quadradas.

Tipos de Matrizes



  • Matriz Identidade (\(\dot{\mathbf{I}}\)):


\[\dot{\mathbf{I}} = \left[ \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right]\]


Uma matriz quadrada onde todos os elementos da diagonal principal são 1 e todos os outros elementos são 0.

Ela atua como a identidade multiplicativa para matrizes (\(\dot{\mathbf{X}}\dot{\mathbf{I}} = \dot{\mathbf{I}}\dot{\mathbf{X}} = \dot{\mathbf{X}}\)).

Tipos de Matrizes



  • Matriz Diagonal:


\[\dot{\mathbf{X}} = \left[ \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 3 \end{array} \right]\]


Uma matriz quadrada onde todos os elementos fora da diagonal principal são 0.

Tipos de Matrizes



  • Matriz Nula:


\[\dot{\mathbf{X}} = \left[ \begin{array}{ccc} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{array} \right]\]


Uma matriz onde todos os elementos são 0.

Neste caso, ela não precisa ser quadrada, pode possuir diferentes dimensões para \(n\) e \(p\).

Transposição de Matrizes



  • Matriz Tranposta:

Seja \(\dot{\mathbf{X}}\) uma matriz \(n \times p\), a transposta de \(\dot{\mathbf{X}}\) é uma matriz \(p \times n\) denotada por \(\dot{\mathbf{X}}^\top\)

\[\dot{\mathbf{X}} = \left[ \begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array} \right]\]

temos que a matriz transposta de \(\dot{\mathbf{X}}\) é:

\[\dot{\mathbf{X}}^\top = \left[ \begin{array}{ccc} 1 & 4 & 7 \\ 2 & 5 & 8 \\ 3 & 6 & 9 \end{array} \right]\] neste caso, o que é linha passa a ser coluna e vice-versa.

Tipos de Matrizes



  • Matriz Simétrica:


\[\dot{\mathbf{X}} = \left[ \begin{array}{ccc} 1 & 2 & 3 \\ 2 & 4 & 5 \\ 3 & 5 & 6 \end{array} \right]\]


Uma matriz quadrada onde \(\dot{\mathbf{X}} = \dot{\mathbf{X}}^\top\), o que significa que \(a_{ij} = a_{ji}\), \(\forall i = 1, \ldots, n,\, \text{ e } \forall j = 1, \ldots, p\)..

Matrizes de covariância, são matrizes simétricas.

Adição e Subtração de Matrizes



Suponha duas matrizes \(A\) e \(B\):

  • Para que essas operações sejam definidas, as matrizes \(A\) e \(B\) devem ter as mesmas dimensões \(A_{n \times p}\) e \(B_{n \times p}\) (o mesmo número de linhas e o mesmo número de colunas).


  • A adição (\(A_{n \times p} + B_{n \times p}\)) e a subtração (\(A_{n \times p} - B_{n \times p}\)) são operações elemento a elemento.


  • Se \(A\) e \(B\) são matrizes \(n \times p\), então sua soma \(C = A + B\) e diferença \(D = A - B\) também são matrizes \(n \times p\), com elementos \(c_{ij} = a_{ij} + b_{ij}\) e \(d_{ij} = a_{ij} - b_{ij}\), respectivamente.

Adição e Subtração de Matrizes



Exemplo de Adição

Sejam as matrizes:

\[A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \quad \text{ e } \quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix}\]

Então, a soma \(A + B\) é?

\[A + B = \begin{bmatrix} 1+5 & 2+6 \\ 3+7 & 4+8 \end{bmatrix} = \begin{bmatrix} 6 & 8 \\ 10 & 12 \end{bmatrix}\]

Adição e Subtração de Matrizes



Exemplo de Subtração

Sejam as matrizes:

\[A = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \quad \text{ e } \quad B = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}\]

Então, a diferença \(A - B\) é?

\[A - B = \begin{bmatrix} 5-1 & 6-2 \\ 7-3 & 8-4 \end{bmatrix} = \begin{bmatrix} 4 & 4 \\ 4 & 4 \end{bmatrix}\]

Multiplicação por Escalar



  • A multiplicação por escalar, envolve multiplicar cada elemento de uma matriz \(A\) por um escalar \(c\). Se \(A\) é uma matriz \(n \times p\), então \(B = cA\) também é uma matriz \(n \times p\) com elementos \(b_{ij} = c a_{ij}\)

Exemplo:

Seja \[A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}\quad \text{ e } \quad c = 3\]

Então, \(cA = ?\)

\[cA = 3 \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} = \begin{bmatrix} 3 \cdot 1 & 3 \cdot 2 \\ 3 \cdot 3 & 3 \cdot 4 \end{bmatrix} = \begin{bmatrix} 3 & 6 \\ 9 & 12 \end{bmatrix}\]

Multiplicação de Matrizes

Produto Escalar



  • A multiplicação de uma matriz \(A\) de dimensão \(n \times p\), por uma matriz \(B\) de dimensão \(p \times m\), resulta em uma matriz \(C\) com dimensão \(n \times m\), onde cada elemento \(c_{ij}\) é o produto escalar da \(i\)-ésima linha de \(A\) com a \(j\)-ésima coluna de \(B\).

  • Matematicamente, \[c_{ij} = \sum_{k=1}^{p} a_{ik} b_{kj}, \]

  • o número de colunas na primeira matriz deve ser igual ao número de linhas na segunda matriz para que a multiplicação seja definida.

Multiplicação de Matrizes



Exemplo

Sejam as matrizes:

\[A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}\quad \text{ e }\quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix}\]

Então, o produto \(C = AB\) é?

\[C = \begin{bmatrix} (1 \cdot 5 + 2 \cdot 7) & (1 \cdot 6 + 2 \cdot 8) \\ (3 \cdot 5 + 4 \cdot 7) & (3 \cdot 6 + 4 \cdot 8) \end{bmatrix} = \begin{bmatrix} 19 & 22 \\ 43 & 50 \end{bmatrix}\]

Multiplicação de Matrizes



Exemplo 2 - (\(n\times p\) por \(p \times m\)):


Seja \(A_{3 \times 2}\) e \(B_{2 \times 3}\):

\[A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix}, \quad B = \begin{bmatrix} 7 & 8 & 9 \\ 10 & 11 & 12 \end{bmatrix}\]

O produto \(AB\) será uma matriz \(3 \times 3\):

\(AB = \begin{bmatrix} (1\cdot7 + 2\cdot10) & (1\cdot8 + 2\cdot11) & (1\cdot9 + 2\cdot12) \\ (3\cdot7 + 4\cdot10) & (3\cdot8 + 4\cdot11) & (3\cdot9 + 4\cdot12) \\ (5\cdot7 + 6\cdot10) & (5\cdot8 + 6\cdot11) & (5\cdot9 + 6\cdot12) \end{bmatrix} = \begin{bmatrix} 27 & 30 & 33 \\ 61 & 68 & 75 \\ 95 & 106 & 117 \end{bmatrix}\)

Multiplicação de Matrizes



Propriedade Não Comutativa

  • Em geral, a multiplicação de matrizes não é comutativa, ou seja, \(AB \neq BA\).

Exemplo: Sejam

\[A = \begin{bmatrix} 1 & 0 \\ 0 & 2 \end{bmatrix} \quad \text{ e } \quad B= \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}\] Quem é \(AB\) e \(BA\)?

\[AB = \begin{bmatrix} 0 & 1 \\ 2 & 0 \end{bmatrix},\text{ enquanto }BA = \begin{bmatrix} 0 & 2 \\ 1 & 0 \end{bmatrix}\]

Portanto, \(AB \neq BA\).

Multiplicação de Matrizes


Propriedade Associativa

  • A multiplicação de matrizes é associativa, ou seja, \((AB)C = A(BC)\).

Exemplo: Sejam

\[A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix}, \quad \text{ e } \quad C = \begin{bmatrix} 9 & 10 \\ 11 & 12 \end{bmatrix}\]

Então, \((AB)C = A(BC)\)?

\[AB = \begin{bmatrix} 19 & 22 \\ 43 & 50 \end{bmatrix}, \quad BC = \begin{bmatrix} 111 & 122 \\ 151 & 166 \end{bmatrix}\]

Portanto, \((AB)C = \begin{bmatrix} 413 & 454 \\ 937 & 1030 \end{bmatrix}\) e \(A(BC) = \begin{bmatrix} 413 & 454 \\ 937 & 1030 \end{bmatrix}\).

Multiplicação de Matrizes

Exemplo em R



No R a multiplicação de matrizes pode ser realizada com o operador %*%.

A <- matrix(1:4, nrow = 2, byrow = T)
B <- matrix(5:8, nrow = 2, byrow = T)

C <- A %*% B

Qual a dimensão da matriz saída?

     [,1] [,2]
[1,]   19   22
[2,]   43   50

Observação: O operador * com matrizes no R realiza Hadamard product(Produto Hadamard), ou seja, a multiplicação elemento a elemento, não a multiplicação de matrizes. \(C = A \odot B\), \(A\) e \(B\) devem possuir as mesmas dimensões, assim, \(C\) vai ter as mesmas dimensões de \(A\) e \(B\).

Multiplicação de Matrizes

Exemplo em Python


No python, a multiplicação de matrizes pode ser realizada usando a biblioteca NumPy com a função np.dot(A, B) ou o operador mais conciso @ (A @ B).

Primeira forma de multiplicação:

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

C = np.dot(A, B)
print(C)
[[19 22]
 [43 50]]

Segunda forma de multiplicação:

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

D = A @ B
print(D)
[[19 22]
 [43 50]]

Da mesma forma que no R, o operador * em Python realiza a multiplicação elemento a elemento, não a multiplicação de matrizes.

Determinante de Matrizes



Seja \(A\) uma matriz quadrada \(n \times n\),


\[A = \begin{bmatrix} 2 & 3 & 2\\ 4 & 1 & 5 \\ 5 & 6 & 3 \end{bmatrix}\] seu determinante é denotado por \(|A|\), o traço denotado por \(tr(A)\), são obtidos como:



  • \(|A| = ?\)

  • \(tr(A) = ?\)

Determinante de Matrizes



Seja \(A\) uma matriz quadrada \(n \times n\),


\[A = \begin{bmatrix} 2 & 3 & 2\\ 4 & 1 & 5 \\ 5 & 6 & 3 \end{bmatrix}\] seu determinante é denotado por \(|A|\), o traço denotado por \(tr(A)\), são obtidos como:



  • \(|A| = 2(1 \cdot 3 - 5 \cdot 6) + 3(5 \cdot 5 - 4 \cdot 3) + 2(4 \cdot 6 - 1 \cdot 5) = 23\)

  • \(tr(A) = 2 + 1 + 3 = 6\).

Posto de Matrizes



  • O posto (ou rank) de uma matriz \(A\) é o número máximo de linhas (ou colunas) linearmente independentes dessa matriz.

Matriz de Posto Completo:

  • Uma matriz \(A\) de dimensão \(n \times p\) é dita de posto completo se suas colunas são linearmente independetes.

  • Seja, duas colunas de \(A\), \(A_{:1}\) e \(A_{:2}\) são linearmente dependentes se, e somente se, uma for um múltiplo escalar da outra, ou seja, se existir um número (escalar) \(c\) tal que: \(A_{:2} = cA_{:1}\)

  • Isso significa que \(\text{posto}(A) = p\);

  • Se \(A\) é matriz quadrada, ou seja, \(n = p\) e de posto completo, então, seu \(|A| \neq 0\);

  • Uma matriz \(A\) é invertível (possui inversa), se ela for de posto completo, ou seja, \(\text{posto}(A) = p\);

Posto de Matrizes



Exemplo 1:

É uma matriz de Posto Completo?

\[A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}\]

Sim.

  • O determinante neste caso é : \(|A| = -2\);
  • Não existe nenhum escalar que multiplicado pela primeira coluna, retorne a segunda.

Posto de Matrizes



Exemplo 2:

É uma matriz de Posto Completo?

\[A = \begin{bmatrix} 1 & 3 & 5 \\ 9 & 87 & 45 \\ 6 & 50 & 30 \end{bmatrix}\]

Não. Neste caso é dito que posto da matriz \(A\) é 2.

O valor do \(|A| = 0\). E conseguimos escrever a terceira coluna como função da primeira. \[A_{:3} = 5A_{:1} = 5\begin{bmatrix} 1 \\ 9 \\ 6 \end{bmatrix} = \begin{bmatrix} 5 \\ 45 \\ 30 \end{bmatrix} \]

Inversão de Matrizes


  • Apenas matrizes quadradas podem ser invertidas.

  • Uma matriz quadrada é invertível (não singular) se e somente se seu determinante for diferente de zero.

  • Para uma matriz quadrada \(A_{n \times n}\), sua inversa, denotada por \(A^{-1}\), é uma matriz \(n \times n\) tal que \(AA^{-1} = A^{-1}A = I_n\), onde \(I_n\) é a matriz identidade \(n \times n\).


Métodos para Encontrar a Inversa (Breve Visão Geral)

Alguns métodos para calcular a inversa de uma matriz, são:


- Usar a adjunta da matriz dividida pelo seu determinante.


- Empregar a eliminação de Gauss-Jordan (redução de linhas) para transformar a matriz na matriz identidade, aplicando simultaneamente as mesmas operações a uma matriz identidade para obter a inversa.

Inversão de Matrizes

Exemplo utilizando matriz adjunta e determinante


Considere a matriz \(A_{3\times 3}\):

\[ A = \begin{bmatrix} 2 & -1 & 0 \\ 1 & 2 & -1 \\ 3 & 0 & 1 \end{bmatrix} \]

A inversa de \(A\), denotada por \(A^{-1}\), é dada por:

\[ A^{-1} = \frac{1}{|A|} \text{adj}(A) \]

Quem é \(\text{adj}(A)\)?

\[\text{adj}(A) = \text{Cof}(A)^\top\]

Quem é \(\text{Cof}(A)\)?

Inversão de Matrizes

Exemplo utilizando matriz adjunta e determinante



Vamos encontrar agora, a matriz dos cofatores de \(A\). A matriz dos cofatores \(\text{Cof}(A)\) é composta pelos cofatores \(C_{ij}\) de cada elemento \(a_{ij}\) de \(A\). Os cofatores são calculados como:

\[ C_{ij} = (-1)^{i+j} |M_{ij}| \]

onde \(M_{ij}\) é a matriz obtida removendo a \(i\)-ésima linha e a \(j\)-ésima coluna de \(A\).

Calculando os cofatores:

  • \[ C_{11} = (-1)^{1+1} \begin{vmatrix} 2 & -1 \\ 0 & 1 \end{vmatrix} = 2 \]

Inversão de Matrizes

Exemplo utilizando matriz adjunta e determinante



  • \[ C_{12} = (-1)^{1+2} \begin{vmatrix} 1 & -1 \\ 3 & 1 \end{vmatrix} = -4 \]

  • \[ C_{13} = (-1)^{1+3} \begin{vmatrix} 1 & 2 \\ 3 & 0 \end{vmatrix} = -6 \]

  • \[ C_{21} = (-1)^{2+1} \begin{vmatrix} -1 & 0 \\ 0 & 1 \end{vmatrix} = 1 \]

  • \[ C_{22} = (-1)^{2+2} \begin{vmatrix} 2 & 0 \\ 3 & 1 \end{vmatrix} = 2 \]

  • \[ C_{23} = (-1)^{2+3} \begin{vmatrix} 2 & -1 \\ 3 & 0 \end{vmatrix} = -3 \]

  • \[ C_{31} = (-1)^{3+1} \begin{vmatrix} -1 & 0 \\ 2 & -1 \end{vmatrix} = 1 \]

  • \[ C_{32} = (-1)^{3+2} \begin{vmatrix} 2 & 0 \\ 1 & -1 \end{vmatrix} = 2 \]

  • \[ C_{33} = (-1)^{3+3} \begin{vmatrix} 2 & -1 \\ 1 & 2 \end{vmatrix} = 5 \]

Inversão de Matrizes

Exemplo utilizando matriz adjunta e determinante



Assim, a matriz dos cofatores é:

\[ \text{Cof}(A) = \begin{bmatrix} 2 & -4 & -6 \\ 1 & 2 & -3 \\ 1 & 2 & 5 \end{bmatrix} \]

Assim, a matriz adjunta \(\text{adj}(A)\) é a transposta da matriz dos cofatores:

\[ \text{adj}(A) = \text{Cof}(A)^\top = \begin{bmatrix} 2 & 1 & 1 \\ -4 & 2 & 2 \\ -6 & -3 & 5 \end{bmatrix} \]

Inversão de Matrizes

Exemplo utilizando matriz adjunta e determinante



Então, a inversa de \(A\), denotada por \(A^{-1}\), é dada por:

\[ A^{-1} = \frac{1}{|A|} \text{adj}(A) \]

O determinante de \(A\), denotado por \(|A|\), é calculado como:

\[ |A| = 2(2 - 0) -1(-3-1) + 0(0-6) = 4 +4 = 8 \]

Substituindo os valores:

\[ A^{-1} = \frac{1}{8} \begin{bmatrix} 2 & 1 & 1 \\ -4 & 2 & 2 \\ -6 & -3 & 5 \end{bmatrix} = \begin{bmatrix} \frac{2}{8} & \frac{1}{8} & \frac{1}{8} \\ -\frac{4}{8} & \frac{2}{8} & \frac{2}{8} \\ -\frac{6}{8} & -\frac{3}{8} & \frac{5}{8} \end{bmatrix} = \begin{bmatrix} \frac{1}{4} & \frac{1}{8} & \frac{1}{8} \\ -\frac{1}{2} & \frac{1}{4} & \frac{1}{4} \\ -\frac{3}{4} & -\frac{3}{8} & \frac{5}{8} \end{bmatrix}. \]

Inversão de Matrizes

Exemplo utilizando método de eliminação de Gauss-Jordan



Para calcular a inversa de uma matriz utilizando o método de eliminação de Gauss-Jordan, seguimos os seguintes passos:


Considere a matriz \(A_{3\times 3}\):


\[ A = \begin{bmatrix} 2 & -1 & 0 \\ 1 & 2 & -1 \\ 3 & 0 & 1 \end{bmatrix} \]


e a matriz identidade \(I\) de mesma ordem, formamos a matriz aumentada \([A | I]\)

Inversão de Matrizes

Exemplo utilizando método de eliminação de Gauss-Jordan



A matriz aumentada \([A | I]\)

\[ \left[\begin{array}{ccc|ccc} 2 & -1 & 0 & 1 & 0 & 0 \\ 1 & 2 & -1 & 0 & 1 & 0 \\ 3 & 0 & 1 & 0 & 0 & 1 \end{array}\right] \]

  • Como um passo 2, vamos aplicar operações elementares para transformar \(A\) em \(I\).

  • Aplicamos operações elementares nas linhas para transformar a matriz \(A\) na matriz identidade \(I\), e as mesmas operações são aplicadas simultaneamente à matriz \(I\).

Inversão de Matrizes

Exemplo utilizando método de eliminação de Gauss-Jordan


Passo 1: Transformar o elemento \(a_{11} = 2\) igual a 1

Dividimos a primeira linha por 2:

\[ \left[\begin{array}{ccc|ccc} 1 & -0.5 & 0 & 0.5 & 0 & 0 \\ 1 & 2 & -1 & 0 & 1 & 0 \\ 3 & 0 & 1 & 0 & 0 & 1 \end{array}\right] \]

Passo 2: Anular os elementos abaixo de \(a_{11}\)

Subtraímos a primeira linha da segunda (\(L_2 - L_1\)) e três vezes a primeira linha da terceira (\(L_3 - 3L_1\)):

\[ \left[\begin{array}{ccc|ccc} 1 & -0.5 & 0 & 0.5 & 0 & 0 \\ 0 & 2.5 & -1 & -0.5 & 1 & 0 \\ 0 & 1.5 & 1 & -1.5 & 0 & 1 \end{array}\right] \]

Inversão de Matrizes

Exemplo utilizando método de eliminação de Gauss-Jordan


Passo 3: Tornar o elemento \(a_{22} = 2.5\) igual a 1

Dividimos a segunda linha por 2.5 (\(L_2/2.5\)):

\[ \left[\begin{array}{ccc|ccc} 1 & -0.5 & 0 & 0.5 & 0 & 0 \\ 0 & 1 & -0.4 & -0.2 & 0.4 & 0 \\ 0 & 1.5 & 1 & -1.5 & 0 & 1 \end{array}\right] \]

Passo 4: Anular os elementos acima e abaixo de \(a_{22}\)

Somamos 0.5 vezes a segunda linha à primeira (\(L_1 + 0.5L_2\)) e subtraímos 1.5 vezes a segunda linha da terceira (\(L_3 - 1.5L_2\)):

\[ \left[\begin{array}{ccc|ccc} 1 & 0 & -0.2 & 0.4 & 0.2 & 0 \\ 0 & 1 & -0.4 & -0.2 & 0.4 & 0 \\ 0 & 0 & 1.6 & -1.2 & -0.6 & 1 \end{array}\right] \]

Inversão de Matrizes

Exemplo utilizando método de eliminação de Gauss-Jordan


Passo 5: Tornar o elemento \(a_{33} = 1.6\) igual a 1

Dividimos a terceira linha por 1.6 (\(L_3/1.6\)):

\[ \left[\begin{array}{ccc|ccc} 1 & 0 & -0.2 & 0.4 & 0.2 & 0 \\ 0 & 1 & -0.4 & -0.2 & 0.4 & 0 \\ 0 & 0 & 1 & -0.75 & -0.375 & 0.625 \end{array}\right] \]

Passo 6: Anular os elementos acima de \(a_{33}\)

Somamos 0.2 vezes a terceira linha à primeira (\(L_1 + 0.2L_3\)) e 0.4 vezes a terceira linha à segunda (\(L_2 + 0.4L_3\)):

\[ \left[\begin{array}{ccc|ccc} 1 & 0 & 0 & 0.25 & 0.125 & 0.125 \\ 0 & 1 & 0 & -0.5 & 0.25 & 0.25 \\ 0 & 0 & 1 & -0.75 & -0.375 & 0.625 \end{array}\right] \]

Inversão de Matrizes

Exemplo utilizando método de eliminação de Gauss-Jordan


A matriz à direita do resultado anterior é a inversa de \(A\):

\[ A^{-1} = \begin{bmatrix} 0.25 & 0.125 & 0.125 \\ -0.5 & 0.25 & 0.25 \\ -0.75 & -0.375 & 0.625 \end{bmatrix} = \begin{bmatrix} \frac{1}{4} & \frac{1}{8} & \frac{1}{8} \\ -\frac{1}{2} & \frac{1}{4} & \frac{1}{4} \\ -\frac{3}{4} & -\frac{3}{8} & \frac{5}{8} \end{bmatrix} \]

Este processo demonstra como aplicar a eliminação de Gauss-Jordan para encontrar a inversa de uma matriz.

Inversão de Matrizes

Exemplo em R



No R a inversa de matrizes pode ser realizada com a função solve.

A <- matrix(c(2, -1, 0, 1, 2, -1, 3,0, 1), nrow = 3, byrow=T)
inv_A <- solve(A)
A
     [,1] [,2] [,3]
[1,]    2   -1    0
[2,]    1    2   -1
[3,]    3    0    1


A inversa obtida é:

print(inv_A)
      [,1]   [,2]  [,3]
[1,]  0.25  0.125 0.125
[2,] -0.50  0.250 0.250
[3,] -0.75 -0.375 0.625

Inversão de Matrizes

Exemplo em Python



No python, a inversão de matrizes pode ser realizada usando a biblioteca NumPy com a função np.linalg.inv(A)


import numpy as np

A = np.array([[2, -1, 0], [1, 2, -1], [3, 0, 1]])
print(A)
[[ 2 -1  0]
 [ 1  2 -1]
 [ 3  0  1]]


inv_A = np.linalg.inv(A)
print(inv_A)
[[ 0.25   0.125  0.125]
 [-0.5    0.25   0.25 ]
 [-0.75  -0.375  0.625]]

Exemplo de utilização em AM



Seja \(\dot{\mathbf{X}}\) uma matriz de dimensão \(n \times p\), tal que, \(\dot{\mathbf{X}} \in \mathbb{R}^p\) e seja \(\dot{\mathbf{y}} \in \mathbb{R}\) um vetor de \(n \times 1\). Então, desejamos criar uma função para \(\dot{\mathbf{y}}\) através de uma combinação linear das \(p\) variáveis de \(\dot{\mathbf{X}}\), ou seja,


\[ \dot{\mathbf{y}} \approx \beta_0 + \beta_1 \dot{\mathbf{x}}_1 + \beta_2 \dot{\mathbf{x}}_2 + \ldots + \beta_p \dot{\mathbf{x}}_p \]


Essa equação acima lembra algo a vocês?

  • Qual é a abordagem muito conhecida e utilizada para determinar os \(\boldsymbol{\beta} = [\beta_0 \quad \beta_1 \quad \ldots \quad \beta_p]^\top\)?

Mínimos Quadrados Ordinários.

Exemplo de utilização em AM



MQO - mínimos quadrados ordinários

  • Considere que as etapas anteriores são satisfeitas para esse exemplo, a solução final é obtida da equação1:



\[ \hat{\boldsymbol{\beta}} = (\dot{\mathbf{X}}^\top \dot{\mathbf{X}} )^{-1} \dot{\mathbf{X}}^\top \mathbf{\dot{\mathbf{y}}} \]

Observação: Caso \(\dot{\mathbf{X}}^\top \dot{\mathbf{X}}\) não seja invertível, a equação anterior não possui solução.

Exemplo de utilização em AM


MQO - mínimos quadrados ordinários

Vamos fazer no R!

Algumas informações sobre dados para utilizar:

  • Dataset - mtcars: Os dados foram extraídos da revista Motor Trend US, de 1974, e incluem o consumo de combustível e 10 aspectos do design e desempenho de automóveis para 32 automóveis (modelos 1973-74).
# ----------------------------------------------
# Exemplo de Implementação
# dos Mínimos Quadrados Ordinários

# Selecionando algumas variáveis
# qsec -> velocidade: Tempo em percorrer 1/4 de milha
# cyl <- cilindros: Número de cilindros
# drat <- eixo: Relação de eixo traseiro
# wt <- peso: Peso (1000 libras
mtcarros2 <- datasets::mtcars |> 
  dplyr::select(qsec, cyl, drat, wt)

Decomposição de Matrizes



A decomposição de matrizes, também conhecida como fatoração de matrizes:

é o processo de expressar uma matriz como um produto de duas ou mais matrizes.


Algumas decomposições são:

  • Decomposição LU;

  • Decomposição em Valores Singulares (SVD);

  • Decomposição em Autovalores;

Decomposição LU


A decomposição LU fatoriza uma matriz quadrada \(A\) no produto de uma matriz triangular inferior \(L\) e uma matriz triangular superior \(U\), de tal forma que \(A = LU\)


Um exemplo

Seja a matriz \(A\):

\[ A = \begin{bmatrix} 2 & 1 & 1 \\ 4 & 3 & 3 \\ 8 & 7 & 9 \end{bmatrix} \]

A decomposição LU de \(A\) é:

\[ L = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 4 & 3 & 1 \end{bmatrix} \quad \text{ e } \quad U = \begin{bmatrix} 2 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 2 \end{bmatrix} \]

Decomposição LU



  1. Inicialização:

    • \(U\) é inicialmente igual a \(A\).
    • \(L\) é a matriz identidade de mesma ordem que \(A\).

    Assim, temos:

    \[ U = \begin{bmatrix} 2 & 1 & 1 \\ 4 & 3 & 3 \\ 8 & 7 & 9 \end{bmatrix}, \quad L = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

Decomposição LU



  1. Eliminação para zerar os elementos abaixo da diagonal principal de \(U\):

    • Primeira coluna:

      • Para zerar \(U_{21}\) (elemento na segunda linha, primeira coluna):

        • Calculamos o multiplicador \(a_{21} = \frac{U_{21}}{U_{11}} = \frac{4}{2} = 2\).

        • Atualizamos a segunda linha de \(U\):

          \[U_{2,:} = U_{2,:} - a_{21} U_{1,:} = \begin{bmatrix} 4 & 3 & 3 \end{bmatrix} - 2 \begin{bmatrix} 2 & 1 & 1 \end{bmatrix} = \begin{bmatrix} 0 & 1 & 1 \end{bmatrix}\]

      • Atualizamos \(L_{21} = a_{21} = 2\).

\[ U = \begin{bmatrix} 2 & 1 & 1 \\ 0 & 1 & 1 \\ 8 & 7 & 9 \end{bmatrix}, \quad L = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

Decomposição LU



  • Para zerar \(U_{31}\):

    • Calculamos o multiplicador \(a_{31} = \frac{U_{31}}{U_{11}} = \frac{8}{2} = 4\).

    • Atualizamos a terceira linha de \(U\):

      \[U_{3,:} = U_{3,:} - a_{31} U_{1,:} = \begin{bmatrix} 8 & 7 & 9 \end{bmatrix} - 4 \begin{bmatrix} 2 & 1 & 1 \end{bmatrix} = \begin{bmatrix} 0 & 3 & 5 \end{bmatrix}\]

  • Atualizamos \(L_{31} = a_{31} = 4\).

\[ U = \begin{bmatrix} 2 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 3 & 5 \end{bmatrix}, \quad L = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 4 & 0 & 1 \end{bmatrix} \]

Decomposição LU



  • Segunda coluna:

    • Para zerar \(U_{32}\):

      • Calculamos o multiplicador \(a_{32} = \frac{U_{32}}{U_{22}} = \frac{3}{1} = 3\).

      • Atualizamos a terceira linha de \(U\):

        \[ U_{3,:} = U_{3,:} - a_{32} U_{2,:} = \begin{bmatrix} 0 & 3 & 5 \end{bmatrix} - 3\begin{bmatrix} 0 & 1 & 1 \end{bmatrix} = \begin{bmatrix} 0 & 0 & 2 \end{bmatrix} \]

  • Atualizamos \(L_{32} = a_{32} = 3\).

\[ U = \begin{bmatrix} 2 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 2 \end{bmatrix}, \quad L = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 4 & 3 & 1 \end{bmatrix} \]

Decomposição LU



  1. Resultado final:

    • As matrizes \(L\) e \(U\) são:

      \[ L = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 4 & 3 & 1 \end{bmatrix} \quad \text{ e } \quad U = \begin{bmatrix} 2 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 2 \end{bmatrix} \]

Portanto, a decomposição LU da matriz \(A\) resulta em:

\[ A = LU = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 4 & 3 & 1 \end{bmatrix} \begin{bmatrix} 2 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 2 \end{bmatrix} \]

Decomposição LU



# Decomposição LU

# Exemplo de matriz A
A <- matrix(c(2,1,1,4,3,3,8,7,9), nrow=3, byrow=TRUE)

# Decomposição LU
lu_decomp <- pracma::lu(A)

# Resultados
A
     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    4    3    3
[3,]    8    7    9
lu_decomp$L  # Matriz triangular inferior L
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    2    1    0
[3,]    4    3    1
lu_decomp$U  # Matriz triangular superior U
     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    0    1    1
[3,]    0    0    2

Decomp. em Valores Singulares (SVD)



A Decomposição em Valores Singulares de uma matriz \(A_{n \times p}\) é dada por \(A = U \Sigma V^\top\), onde \(U\) é uma matriz ortogonal \(n \times n\), \(\Sigma\) é uma matriz diagonal \(n \times p\) com números reais não negativos na diagonal (os valores singulares), e \(V\) é uma matriz ortogonal \(p \times p\).

Um exemplo

Seja a matriz \(A\):

\[ A = \begin{bmatrix} 2 & 1 & 1 \\ 1 & 1 & 1 \\ 3 & 2 & 1 \end{bmatrix} \]

Decomp. em Valores Singulares (SVD)



A decomposição SVD de \(A\) é:

\[ U = \begin{bmatrix} -0.51 & -0.11 & -0.85 \\ -0.34 & -0.88 & 0.32 \\ -0.78 & 0.46 & 0.41 \end{bmatrix} \]

\[ \Sigma = \begin{bmatrix} 4.74 & 0 & 0 \\ 0 & 0.60 & 0 \\ 0 & 0 & 0.35 \end{bmatrix} \]

\[ V = \begin{bmatrix} -0.78 & 0.46 & -0.41 \\ -0.51 & -0.11 & 0.85 \\ -0.35 & -0.88 & -0.33 \end{bmatrix} \]

Decomp. em Valores Singulares (SVD)

Exemplo em R



No R a Decomp. em Valores Singulares (SVD) de matrizes pode ser realizada com a função svd.

A <- matrix(c(2,1,1,1,1,1,3,2,1), nrow=3, byrow=TRUE)
svd_A <- svd(A)
A
     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    1    1    1
[3,]    3    2    1

Decomp. em Valores Singulares (SVD)

Exemplo em R


A Decomp. em Valores Singulares (SVD) obtida é:

D <- diag(svd_A$d)
A_conf <- svd_A$u %*% D %*% t(svd_A$v)

print(svd_A)
print(A_conf)
$d
[1] 4.7448261 0.6040681 0.3488942

$u
           [,1]       [,2]       [,3]
[1,] -0.5122298 -0.1141024 -0.8512351
[2,] -0.3466186 -0.8793666  0.3264506
[3,] -0.7857965  0.4622717  0.4108878

$v
           [,1]       [,2]       [,3]
[1,] -0.7857965  0.4622717 -0.4108878
[2,] -0.5122298 -0.1141024  0.8512351
[3,] -0.3466186 -0.8793666 -0.3264506

     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    1    1    1
[3,]    3    2    1

Decomp. em Valores Singulares (SVD)

Exemplo em Python



No python, a Decomp. em Valores Singulares (SVD) de matrizes pode ser realizada usando a biblioteca NumPy com a função np.linalg.svd(A)


import numpy as np

A = np.array([[2, -1, 0], [1, 2, -1], [3, 0, 1]])
print(A)

# SVD
U, s, V = np.linalg.svd(A)
print("U:\n", U)
[[ 2 -1  0]
 [ 1  2 -1]
 [ 3  0  1]]
U:
 [[-0.52996434  0.28894678 -0.79727508]
 [-0.19784677 -0.9563449  -0.21508392]
 [-0.82461776  0.04375149  0.56399588]]

Decomp. em Valores Singulares (SVD)

Exemplo em Python



print("Valores Singulares:\n", s)
Valores Singulares:
 [3.78628097 2.43074118 0.86923745]
print("V:\n", V)
V:
 [[-0.98556572  0.03546245 -0.16553737]
 [-0.10169609 -0.90574702  0.41143681]
 [-0.13534442  0.42233251  0.89627961]]


A_conf = U @ np.diag(s) @ V
print(A_conf)
[[ 2.00000000e+00 -1.00000000e+00 -1.80442871e-16]
 [ 1.00000000e+00  2.00000000e+00 -1.00000000e+00]
 [ 3.00000000e+00  1.00590637e-16  1.00000000e+00]]

Decomp. em Autovalores



Para uma matriz quadrada \(A\), se ela tiver \(n\) autovetores linearmente independentes, ela pode ser decomposta como \(A = PDP^{-1}\), onde \(P\) é uma matriz cujas colunas são os autovetores de \(A\), e \(D\) é uma matriz diagonal cujos elementos diagonais são os autovalores correspondentes.

Vamos realizar a decomposição em autovalores (diagonalização) da matriz \(A\):

\[ A = \begin{bmatrix} 2 & 1 & 1 \\ 4 & 3 & 3 \\ 8 & 7 & 9 \end{bmatrix} \]

Decomp. em Autovalores

Exemplo em R



No R a Decomp. em Autovalores de matrizes pode ser realizada com a função svd.

A <- matrix(c(2, 1, 1, 4, 3, 3, 8,7, 9), nrow = 3, byrow=T)
eigen_A <- eigen(A)
A
eigen_A
     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    4    3    3
[3,]    8    7    9
eigen() decomposition
$values
[1] 12.5962091  1.1203466  0.2834443

$vectors
           [,1]       [,2]       [,3]
[1,] -0.1202010 -0.3817259  0.2088556
[2,] -0.3415178 -0.4637352 -0.8471311
[3,] -0.9321573  0.7995217  0.4886187

Decomp. em Autovalores

Exemplo em R


A Decomp. em Autovalores obtida é:

D <- diag(eigen_A$values)
A_conf <- eigen_A$vectors %*% D %*% solve(eigen_A$vectors)

print(eigen_A)
eigen() decomposition
$values
[1] 12.5962091  1.1203466  0.2834443

$vectors
           [,1]       [,2]       [,3]
[1,] -0.1202010 -0.3817259  0.2088556
[2,] -0.3415178 -0.4637352 -0.8471311
[3,] -0.9321573  0.7995217  0.4886187
print(A_conf)
     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    4    3    3
[3,]    8    7    9

Decomp. em Autovalores

Exemplo em Python



A Decomp. em Autovalores pode ser realizada usando np.linalg.eig(A) na NumPy.

import numpy as np

A = np.array([[2, 1, 1], [4, 3, 3], [8, 7, 9]])
print(A)
[[2 1 1]
 [4 3 3]
 [8 7 9]]

# Eigendecomposition
eigenValues, eigenVectors = np.linalg.eig(A)

Decomp. em Autovalores

Exemplo em Python



A Decomp. em Autovalores pode ser realizada usando np.linalg.eig(A) na NumPy.

print("Autovalores:\n", eigenValues)
Autovalores:
 [12.59620906  1.12034665  0.28344429]
print("Autovetores:\n", eigenVectors)
Autovetores:
 [[-0.12020102 -0.38172591  0.20885564]
 [-0.34151779 -0.46373523 -0.84713107]
 [-0.93215734  0.79952171  0.48861873]]
# Reconstruindo A
D = np.diag(eigenValues)
A_conf = eigenVectors @ D @ np.linalg.inv(eigenVectors)
print(A_conf)
[[2. 1. 1.]
 [4. 3. 3.]
 [8. 7. 9.]]

Referências



Básicas

  • Bolfarine, H. e Sandoval, M.C. (2001). Introdução à Inferência Estatística, Coleção Matemática Aplicada, Sociedade Brasileira de Matemática.

  • Casella, G. e Berger, R. (1990) “Statistical Inference”, Wadsworth & Brooks, California

  • Mood, A. , Graybill, F. e Boes, D. (1974) “Introduction to the Theory of Statistics”, McGraw-Hill, New York.


Complementar

  • Bickel, P.J. e Doksum, K. A. (2001). Mathematical Statistics: Basic Ideas and Selected Topics. San Francisco: Holden Day.

  • Dudewicz, E.J. e Mishra, S.N. (1988) - Modern Mathematical Statistics - John Wiley & Sons.

  • Lehmann, E. and Casella, G. (1998) “Theory of Point Estimation”, 2nd edition, Springer, New York.




OBRIGADO!


Slide produzido com quarto