Regressão linear usando o método de descida de gradiente [explicado com exemplo de codificação]
Publicados: 2020-12-21O aprendizado de máquina ainda está circulando, não importa se você deseja ser um desenvolvedor de software, cientista de dados ou analista de dados. Para fazer esforços sérios em regressão linear, você deve ser bem versado em Python. Começar em uma fase inicial pode ser uma tarefa tediosa, este artigo ajudará você a entender a regressão mais detalhadamente.
O método gradiente descendente é optado em várias iterações devido às técnicas de otimização que oferece. Com o algoritmo, é viável reduzir o tamanho, por exemplo, regressão logística e rede neural. Antes de começar com o gradiente, vamos dar uma olhada na regressão linear.
Leia: Algoritmos de aprendizado de máquina para ciência de dados
Índice
O que é Regressão Linear?
É a abordagem linear que é adotada para a modelagem da relação entre uma variável dependente e uma ou mais variáveis independentes. A relação linear entre tais variáveis seria expressa no formato de equação ay= mx+b.
É um algoritmo de aprendizado de máquina monitorado que aprimorará sua curva de aprendizado a partir de uma determinada variável dependente de x e y como a outra responsável por causar um efeito. Essa natureza ajuda a prever os valores e fatores de certeza para x e y.
O que é Descida Gradiente?
O uso da regressão de gradiente envolve a otimização do algoritmo usado para encontrar os valores dos parâmetros necessários de uma função que permite minimizar diretamente o custo de uma função.

Vamos entender o conceito com um cenário, imagine que você queira descer um forte em um ambiente escuro como breu. Durante isso, vamos supor que você está completamente incapacitado e precisa encontrar a distância mais curta e fácil para voltar. A descida do gradiente será o recurso utilizado para descobrir a forma otimizada de chegar ao seu destino. Com uma entrada direcional básica, o algoritmo seria possível traçar e sugerir a melhor rota.
O gradiente é um dos algoritmos mais usados e amplamente aceitos no aprendizado de máquina, também é considerado como a base para dominar o aprendizado de máquina nos estágios iniciais.
Para uma melhor aproximação do gradiente vamos tentar implementá-lo com um código em um exemplo, trabalhando em python com a ajuda do NumPy.
da importação NumPy *
#y = mx + b
# m é a inclinação, b é a interceptação em y
def compute_error_for_line_given_points(b, m, pontos):
erro total = 0
para i em range(0, len(pontos)):
x = pontos[i, 0]
y = pontos[i, 1]
totalError += (y – (m * x + b)) ** 2
return totalError / float(len(pontos))
def step_gradient(b_current, m_current, points, learningRate):
b_gradiente = 0
m_gradiente = 0
N = float(len(pontos))
para i em range(0, len(pontos)):
x = pontos[i, 0]
y = pontos[i, 1]
b_gradiente += -(2/N) * (y – ((m_atual * x) + b_atual))
m_gradiente += -(2/N) * x * (y – ((m_atual * x) + b_atual))
new_b = b_current – (learningRate * b_gradient)
new_m = m_current – (learningRate * m_gradient)
retornar [novo_b, novo_m]
def gradient_descent_runner(pontos, start_b, start_m, learning_rate, num_iterations):
b = inicial_b

m = inicial_m
para i em range(num_iterations):
b, m = step_gradient(b, m, array(pontos), learning_rate)
retornar [b, m]
def executar():
pontos = genfromtxt(“data.csv”, delimitador=”,”)
taxa_aprendizagem = 0,0001
inicial_b = 0 # estimativa inicial de interceptação y
inicial_m = 0 # estimativa de inclinação inicial
num_iterations = 1000
print "Iniciando a descida do gradiente em b = {0}, m = {1}, erro = {2}".format(initial_b, initial_m, compute_error_for_line_given_points(initial_b, initial_m, points))
imprima “Executando…”
[b, m] = gradient_descent_runner(pontos, inicial_b, inicial_m, taxa_de aprendizagem, num_iterações)
print “Após {0} iterações b = {1}, m = {2}, erro = {3}”.format(num_iterations, b, m, compute_error_for_line_given_points(b, m, points))
if __name__ == '__main__':
corre()
Referência do código
Esta é uma representação visual do programa de busca de gradiente onde os problemas são resolvidos na regressão linear plotando os pontos em uma única linha. O código é uma demonstração de como funciona e ajuda a definir vários pontos ao longo de uma linha. A descida de gradiente tenta encontrar os melhores valores para esses parâmetros em relação a uma função de erro.
O código contém uma função peculiar chamada 'executar'. Ele ajuda a definir um conjunto de parâmetros usados no algoritmo para fazer um conjunto inicial de previsões com base no comportamento das variáveis e na inclinação da linha. Os outros fatores envolvem o número de iterações necessárias para atingir o gradiente descendente no formato mostrado abaixo:
inicial_b = 0 # estimativa inicial de interceptação y
inicial_m = 0 # estimativa de inclinação inicial
num_iterations = 1000
Você pode facilmente entender que o método Gradient é bastante simples e direto. Depois de entender suas habilidades de funcionamento, a única parte em que você precisa se concentrar é o custo da função que você está interessado em otimizar.

O objetivo é fazer esforços contínuos para fazer diferentes iterações para cada um dos valores das variáveis, avaliar seus custos e criar novas variáveis que iniciem um melhor e baixo custo no programa.
Leitura obrigatória: perguntas da entrevista de aprendizado de máquina
Dicas para descida de gradiente
1. Taxa de Aprendizagem
O protocolo de otimização ajuda a reduzir o valor da taxa de aprendizado mesmo em decimais menores, tente embaralhar diferentes valores adequados para a plataforma e depois optar pelo melhor valor de trabalho. O aprendizado pode ser muito mais rápido e proveitoso, para que isso aconteça, certifique-se de limitar o número de passagens por cada conjunto de dados. O número ideal seria entre 1 e 10.
2. Custo médio do gráfico
O tempo de treinamento para cada instância do conjunto de dados pode causar um atraso devido ao tempo extra gasto durante a execução do algoritmo. Para melhores resultados, escolha a média acima de 100 ou 1000 para melhores chances de encontrar uma melhor tendência de aprendizado para o algoritmo.
Resumo
Neste artigo você aprendeu sobre gradiente e como criar tal algoritmo, isso ajuda a fazer previsões precisas e mais eficazes com um modelo de regressão aprendido. Para entender em um nível muito abrangente e profundo com cenários de casos reais, inscreva-se no upGrad. Oferecemos cursos com curadoria especialmente estruturados para aspirantes a cientistas de dados e candidatos a aprendizado de máquina.