Você está na página 1de 47

A Matemática da Ciência de Dados e da Inteligência Artificial

Bruno Holandaa
a FACE, UFG

Junho 2023

Bruno Holanda (UFG) Palestra Junho 2023 1 / 38


O que são algoritmos?

Bruno Holanda (UFG) Palestra Junho 2023 2 / 38


Linguagens de Programação

Bruno Holanda (UFG) Palestra Junho 2023 3 / 38


Ambientes de Programação na Nuvem

Bruno Holanda (UFG) Palestra Junho 2023 4 / 38


Acesse nossos códigos pelo QR-code!

Bruno Holanda (UFG) Palestra Junho 2023 5 / 38


Um exemplo de algoritmo tradicional: Bubble Sort em Python

Tarefa: Ordene os números 64, 34, 25, 12, 22, 11, 90

Bruno Holanda (UFG) Palestra Junho 2023 6 / 38


Tarefa: Ordene os números:
2916, 1121, 3890, 2407, 4636, 1377, 4588, 2119, 406, 3462, 3820, 176, 2645, 2764,
3137, 4793, 376, 1037, 3259, 3667, 2969, 2779, 2365, 1691, 2341, 4195, 2961, 4570,
1113, 4012, 1679, 1120, 193, 4623, 2020, 2369, 3402, 4022, 178, 2431, 2313, 3377,
1867, 3961, 3782, 360, 2623, 3867, 4385, 4390, 4747, 3269, 3023, 3246, 3022, 245,
4405, 4967, 3346, 2257, 207, 2315, 4694, 2525, 1784, 266, 1905, 1350, 2752, 3355,
2570, 1991, 3332, 3876, 476, 1516, 2544, 4956, 4369, 4960, 250, 2510, 497, 3152,
4950, 2430, 4782, 427, 2329, 3373, 4770, 4833, 3414, 1433, 2026, 2359, 4719, 1865,
1579, 3132, 2745, 1544, 4289, 3681, 2437, 674, 2385, 4071, 3982, 1329, 1852, 2207,
3638, 1707, 2338, 124, 4634, 4455, 1279.

Bruno Holanda (UFG) Palestra Junho 2023 7 / 38


1 def bubbleSort ( arr ) :
2 n = len ( arr )
3
4 swapped = False
5
6 for i in range (n -1) :
7
8 for j in range (0 , n -i -1) :
9
10
11 if arr [ j ] > arr [ j + 1]:
12 swapped = True
13 arr [ j ] , arr [ j + 1] = arr [ j + 1] , arr [ j ]
14

15 if not swapped :
16
17 return
18

Bruno Holanda (UFG) Palestra Junho 2023 8 / 38


1 # Driver code to test above
2 arr = [64 , 34 , 25 , 12 , 22 , 11 , 90]
3
4 bubbleSort ( arr )
5
6 print ( " Sorted array is : " )
7 for i in range ( len ( arr ) ) :
8 print ( " % d " % arr [ i ] , end = " " )
9

Bruno Holanda (UFG) Palestra Junho 2023 9 / 38


Um algoritmo de Machine Learning: kNN

Bruno Holanda (UFG) Palestra Junho 2023 10 / 38


O Iris Dataset que é composto por cinco caracterı́sticas: SepalLength (Comprimento
da Sépala), SepalWidth (Largura da Sépala), PetalLength (Comprimento da Pétala),
PetalWidth (Largura da Pétala) e Class (Classe).

Bruno Holanda (UFG) Palestra Junho 2023 11 / 38


Lógica do Algoritmo

Bruno Holanda (UFG) Palestra Junho 2023 12 / 38


Bruno Holanda (UFG) Palestra Junho 2023 13 / 38
Bruno Holanda (UFG) Palestra Junho 2023 14 / 38
Bruno Holanda (UFG) Palestra Junho 2023 15 / 38
Observação: Existem Distâncias Não-Euclidianas

Bruno Holanda (UFG) Palestra Junho 2023 16 / 38


Na Prática: Importando a Base de Dados

1 import pandas as pd
2 nomes = [ ’ SepalLength ’ , ’ SepalWidth ’ , ’ PetalLength ’ , ’ PetalWidth ’ , ’
Class ’]
3 df = pd . read_csv ( ’ iris . data ’ , names = nomes )
4
5 X = df [ df . columns . difference ([ ’ Class ’ ]) ]. values
6 y = df [ ’ Class ’ ]. values
7

Bruno Holanda (UFG) Palestra Junho 2023 17 / 38


Treinando kNN em Python

1 from sklearn . neighbors import K N e i g h b o r s C l a s s i f i e r


2
3 iris_class if ic ad or = K N e i g h b o r s C l a s s i f i e r ( n_neighbors = 3)
4 iris_class if ic ad or . fit (X , y )
5

Bruno Holanda (UFG) Palestra Junho 2023 18 / 38


Avaliando o Desempenho

1 from sklearn . model_selection import cross_val_score


2

3 scores_dt = cross_val_score ( iris_classificador , X , y , scoring = ’


accuracy ’ , cv =5)
4 print ( scores_dt . mean () )
5

Bruno Holanda (UFG) Palestra Junho 2023 19 / 38


Bruno Holanda (UFG) Palestra Junho 2023 20 / 38
Fazendo Predições

1 novos_exemplos = [[1.6 ,0.5 ,5.0 ,3.6] ,


2 [4.2 ,1.2 ,5.8 ,2.7] ,
3 [5.2 ,2.4 ,7.0 ,3.2]]
4 print ( iris _c la ss if ic ad or . predict ( novos_exemplos ) )
5

Bruno Holanda (UFG) Palestra Junho 2023 21 / 38


Otimização

Aplicar os resultados de otimização de uma função de múltiplas variáveis em modelos


estatı́sticos e teóricos frequentemente utilizados em economia.1

O que já sabemos?

Calcular as derivadas parciais de primeira ordem de funções com múltiplas variáveis.


Calcular as hessianas de funções com múltiplas variáveis para determinar sua
concavidade.

1
Não teremos como objetivo (nessa aula) demonstrar rigorosamente os teoremas que serão
utilizados.
Bruno Holanda (UFG) Palestra Junho 2023 22 / 38
Otimização

Aplicar os resultados de otimização de uma função de múltiplas variáveis em modelos


estatı́sticos e teóricos frequentemente utilizados em economia.1

O que já sabemos?

Calcular as derivadas parciais de primeira ordem de funções com múltiplas variáveis.


Calcular as hessianas de funções com múltiplas variáveis para determinar sua
concavidade.

1
Não teremos como objetivo (nessa aula) demonstrar rigorosamente os teoremas que serão
utilizados.
Bruno Holanda (UFG) Palestra Junho 2023 22 / 38
Otimização

Aplicar os resultados de otimização de uma função de múltiplas variáveis em modelos


estatı́sticos e teóricos frequentemente utilizados em economia.1

O que já sabemos?

Calcular as derivadas parciais de primeira ordem de funções com múltiplas variáveis.


Calcular as hessianas de funções com múltiplas variáveis para determinar sua
concavidade.

1
Não teremos como objetivo (nessa aula) demonstrar rigorosamente os teoremas que serão
utilizados.
Bruno Holanda (UFG) Palestra Junho 2023 22 / 38
Motivação

Considere um conjunto de n observações sobre duas variáveis X e Y . O conjunto de


dados pode ser descrito por um conjunto de pontos no plano cartesiano (R2 ) dados por
{(x1 , y1 ), (x2 , y2 ), ..., (xn , yn )}. Como escolher valores para os parâmetros a e b de modo
que a reta y = ax + b seja o “melhor ajuste linear” para os dados do conjunto de
observações?

→ Ver exemplo no GeoGebra!

Bruno Holanda (UFG) Palestra Junho 2023 23 / 38


Motivação

Considere um conjunto de n observações sobre duas variáveis X e Y . O conjunto de


dados pode ser descrito por um conjunto de pontos no plano cartesiano (R2 ) dados por
{(x1 , y1 ), (x2 , y2 ), ..., (xn , yn )}. Como escolher valores para os parâmetros a e b de modo
que a reta y = ax + b seja o “melhor ajuste linear” para os dados do conjunto de
observações?

→ Ver exemplo no GeoGebra!

Bruno Holanda (UFG) Palestra Junho 2023 23 / 38


Melhor ajuste linear?

A projeção do ponto (xi , yi ) sobre a reta y = ax + b é o ponto (xi , axi + b). A distância
do ponto (xi , yi ) à reta y = ax + b é dado por |yi − axi − b|.
Nosso objetivo é escolher a e b que minimizem a função
n
X
f (a, b) = (yi − axi − b)2 .
i=1

Bruno Holanda (UFG) Palestra Junho 2023 24 / 38


Para refletir ao longo da aula...

Por que utilizar distância ao quadrado?


Será que existem únicos parâmetros a, b que minimizam a soma dos quadrados dos
resı́duos? Essa unicidade é importante?

Bruno Holanda (UFG) Palestra Junho 2023 25 / 38


Para refletir ao longo da aula...

Por que utilizar distância ao quadrado?


Será que existem únicos parâmetros a, b que minimizam a soma dos quadrados dos
resı́duos? Essa unicidade é importante?

Bruno Holanda (UFG) Palestra Junho 2023 25 / 38


Para refletir ao longo da aula...

Por que utilizar distância ao quadrado?


Será que existem únicos parâmetros a, b que minimizam a soma dos quadrados dos
resı́duos? Essa unicidade é importante?

Bruno Holanda (UFG) Palestra Junho 2023 25 / 38


Teorema (Condições de Primeira Ordem)
Dada uma função f : Rn → R duas vezes diferenciável. Então a condição necessária
para que o ponto a = (a1 , a2 , ..., an ) seja um ótimo (máximo/mı́nimo) local é

∂f ∂f ∂f
(a) = (a) = · · · = (a) = 0.
∂x1 ∂x2 ∂xn

Bruno Holanda (UFG) Palestra Junho 2023 26 / 38


Exemplo
A função f (x, y ) = x 2 + y 2 + x − 1 tem valor mı́nimo no ponto a = (−0.5, 0).

2
1
−1
1
−1
Figura: Gráfico da função f (x, y ) = x 2 + y 2 + x − 1. Este gráfico pode ser melhor visualizado
em GeoGebra.

Bruno Holanda (UFG) Palestra Junho 2023 27 / 38


Exercı́cio: Ache os pontos ótimos dos itens a seguir

(a) f (x, y ) = 2x 2 − y 2 + x + y .
(b) f (x, y , z) = x 2 + y 2 + z 2 − x − y − z.
(c) f (x, y ) = x 3 − 2xy + y 2 .

Bruno Holanda (UFG) Palestra Junho 2023 28 / 38


Algumas perguntas

(i) Por que as condições de primeira ordem são necessárias?


(ii) Existe alguma condição para discriminar se um ótimo é máximo ou mı́nimo local?

Bruno Holanda (UFG) Palestra Junho 2023 29 / 38


Algumas perguntas

(i) Por que as condições de primeira ordem são necessárias?


(ii) Existe alguma condição para discriminar se um ótimo é máximo ou mı́nimo local?

Bruno Holanda (UFG) Palestra Junho 2023 29 / 38


Definição
Dada uma função f : Rn → R duas vezes diferenciável. Então a sua matriz hessiana no
ponto a = (a1 , a2 , ..., an ) é:
 ∂2f ∂2f

∂x1 ∂x1
(a) · · · ∂x1 ∂xn
(a)
(D 2 f )(a) =  .. .. ..
.
 
. . .
∂2f ∂2f
∂xn ∂x1
(a) ··· ∂xn ∂xn
(a)

Bruno Holanda (UFG) Palestra Junho 2023 30 / 38


Definição
Uma matriz An×n é semidefinida positiva quando x T Ax > 0, para todo x ∈ Rn e
x 6= 0.
Uma matriz An×n é semidefinida negativa quando x T Ax < 0, para todo x ∈ Rn e
x 6= 0.

Bruno Holanda (UFG) Palestra Junho 2023 31 / 38


Teorema (Condições de Segunda Ordem)
Dada uma função f : Rn → R duas vezes diferenciável. Então e a = (a1 , a2 , ..., an ) um
ponto que satisfaz às condições de primeira ordem
∂f ∂f ∂f
(a) = (a) = · · · = (a) = 0.
∂x1 ∂x2 ∂xn
Então para que a seja um ponto de mı́nimo/máximo local, é suficiente que a hessiana
(D 2 f )(a) seja semidefinida positiva/negativa.

Bruno Holanda (UFG) Palestra Junho 2023 32 / 38


Voltando ao exemplo motivador...

n
X
f (a, b) = (yi − axi − b)2
i=1
Xn
yi2 + a2 xi2 + b 2 − 2axi yi − 2byi + 2abxi

=
i=1
X X X X X
= a2 xi2 − 2a xi yi + 2ab xi + nb 2 − 2b yi + yi2

Bruno Holanda (UFG) Palestra Junho 2023 33 / 38


Voltando ao exemplo motivador...

n
X
f (a, b) = (yi − axi − b)2
i=1
Xn
yi2 + a2 xi2 + b 2 − 2axi yi − 2byi + 2abxi

=
i=1
X X X X X
= a2 xi2 − 2a xi yi + 2ab xi + nb 2 − 2b yi + yi2

Bruno Holanda (UFG) Palestra Junho 2023 33 / 38


Voltando ao exemplo motivador...

n
X
f (a, b) = (yi − axi − b)2
i=1
Xn
yi2 + a2 xi2 + b 2 − 2axi yi − 2byi + 2abxi

=
i=1
X X X X X
= a2 xi2 − 2a xi yi + 2ab xi + nb 2 − 2b yi + yi2

Bruno Holanda (UFG) Palestra Junho 2023 33 / 38


Calculando as derivadas parciais...

∂f X X X
(a, b) = 2a xi2 − 2 xi yi + 2b xi .
∂a
∂f X X
(a, b) = 2a xi + 2nb − 2 yi .
∂b
∂f ∂f
O par de igualdades ∂a
(a, b) = ∂b
(a, b) = 0 pode ser reescrito através do seguinte
sistema:
P 2 P    P 
x
P i x i a x i y i
= P
xi n b yi

Bruno Holanda (UFG) Palestra Junho 2023 34 / 38


Calculando as derivadas parciais...

∂f X X X
(a, b) = 2a xi2 − 2 xi yi + 2b xi .
∂a
∂f X X
(a, b) = 2a xi + 2nb − 2 yi .
∂b
∂f ∂f
O par de igualdades ∂a
(a, b) = ∂b
(a, b) = 0 pode ser reescrito através do seguinte
sistema:
P 2 P    P 
x
P i x i a x i y i
= P
xi n b yi

Bruno Holanda (UFG) Palestra Junho 2023 34 / 38


A solução do sistema anterior é única e igual a

cov (x, y )
a∗ =
var (x)

b ∗ = y − a∗ x

Bruno Holanda (UFG) Palestra Junho 2023 35 / 38


Observações

Algoritmos para determinar se uma matriz é semidefinida positiva ou semidefinida


negativa.
Pontos de cela.
Generalização do método para o caso de otimização com restrições. Problema do
consumidor (Microeconomia).

Bruno Holanda (UFG) Palestra Junho 2023 36 / 38


Redes Neurais

Bruno Holanda (UFG) Palestra Junho 2023 37 / 38


Bibliografia

Blume, L., and Simon, C. P.


Mathematics for Economists.
Norton & Company, 1994.
de la Fuente, A.
Mathematical Methods and Models for Economists.
Cambridge University Press, 2000.
Wooldridge, J.
Introductory Econometrics: A Modern Approach.
Cengage Learning, 2008.

Bruno Holanda (UFG) Palestra Junho 2023 38 / 38

Você também pode gostar