Data Science do zero: Primeiras regras com o Python



Baixar 5.26 Mb.
Pdf preview
Página68/75
Encontro24.07.2022
Tamanho5.26 Mb.
#24344
1   ...   64   65   66   67   68   69   70   71   ...   75
Data Science do zero - Primeiras regras
def safe(f):
"""retorna uma nova função que é igual a f,
exceto que ele exibe infinito como saída toda vez que f produz um erro"""
def safe_f(*args, **kwargs):
try:
return f(*args, **kwargs)
except:
return float('inf') # isso significa “infinito” em Python
return safe_f


Juntando Tudo
No geral, temos alguma
target_fn
que queremos minimizar, e também temos o seu
gradient_fn
. Por exemplo,
target_fn
poderia representar erros em um modelo como
uma função dos seus parâmetros, e talvez queiramos encontrar os parâmetros
que produzem os menores erros possíveis.
Além do mais, digamos que escolhemos (de alguma forma) um valor inicial para
os parâmetros
theta_0
. Logo, podemos implementar o gradiente descendente
como:
def minimize_batch(target_fn, gradient_fn, theta_0, tolerance=0.000001):
"""usa o gradiente descendente para encontrar theta que minimize a função alvo"""
step_sizes = [100, 10, 1, 0.1, 0.01, 0.001, 0.0001, 0.00001]
theta = theta_0 # ajusta theta para o valor inicial
target_fn = safe(target_fn) # versão segura de target_fn
value = target_fn(theta) # valor que estamos minimizando
while True:
gradient = gradient_fn(theta)
next_thetas = [step(theta, gradient, -step_size)
for step_size in step_sizes]
# escolhe aquele que minimiza a função de erro
next_theta = min(next_thetas, key=target_fn)
next_value = target_fn(next_theta)
# para se estivermos “convergindo”
if abs(value - next_value) < tolerance:
return theta
else:
theta, value = next_theta, next_value
Chamamos de
minimize_batch
porque, para cada passo do gradiente, ele considera o
conjunto inteiro de dados (devido ao
target_fn
retornar o erro no conjunto de dados
inteiro). Na próxima seção, veremos uma abordagem alternativa que considera
apenas um ponto de cada vez.
Às vezes vamos querer maximizar uma função e podemos fazê-la ao minimizar
seu negativo (que possui um gradiente negativo correspondente):

Baixar 5.26 Mb.

Compartilhe com seus amigos:
1   ...   64   65   66   67   68   69   70   71   ...   75




©historiapt.info 2022
enviar mensagem

    Página principal