Métodos de otimização são utilizados para ajustar os parâmetros dos modelos de aprendizado de máquina, minimizando a função de custo. Algoritmos de otimização comuns incluem Gradiente Descendente, Adam, e outros.
Exemplo: Implementar o algoritmo de Gradiente Descendente para regressão linear
import numpy as np
# Função de Gradiente Descendente
def gradiente_descendente(X, y, lr=0.01, epochs=1000):
m, n = X.shape
theta = np.zeros(n)
for epoch in range(epochs):
gradients = -2/m * X.T.dot(y - X.dot(theta))
theta -= lr * gradients
return theta
# Exemplo de dados
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3
# Adicionar a coluna de 1s para o termo de bias
X_b = np.c_[np.ones((4, 1)), X]
# Aplicar Gradiente Descendente
theta = gradiente_descendente(X_b, y)
print(f'Parâmetros Otimizados: {theta}')