Como usar algoritmos de otimização para ajustar manualmente os modelos de regressão

Como usar algoritmos de otimização para ajustar manualmente os modelos de regressão

Os modelos de regressão são ajustados aos dados de treinamento usando regressão linear e algoritmos de otimização de busca local.

Modelos como regressão linear e regressão logística são treinados pela otimização de mínimos quadrados, e esta é a abordagem mais eficiente para encontrar coeficientes que minimizam o erro para esses modelos.

No entanto, é possível usar alternativas algoritmos de otimização para ajustar um modelo de regressão a um conjunto de dados de treinamento. Este pode ser um exercício útil para aprender mais sobre como a regressão funciona e a natureza central da otimização no aprendizado de máquina aplicado. Também pode ser necessário para regressão com dados que não atendem aos requisitos de um procedimento de otimização de mínimos quadrados.

Neste tutorial, você descobrirá como otimizar manualmente os coeficientes dos modelos de regressão.

Depois de concluir este tutorial, você saberá:

  • Como desenvolver os modelos de inferência para regressão do zero.
  • Como otimizar os coeficientes de um modelo de regressão linear para prever valores numéricos.
  • Como otimizar os coeficientes de um modelo de regressão logística usando hill climbing estocástico.

Vamos começar.

Como usar algoritmos de otimização para ajustar manualmente os modelos de regressão

Como usar algoritmos de otimização para ajustar manualmente os modelos de regressão
Foto de Christian Collins, alguns direitos reservados.

Visão geral do tutorial

Este tutorial é dividido em três partes; eles estão:

  1. Otimizar modelos de regressão
  2. Otimize um modelo de regressão linear
  3. Otimize um modelo de regressão logística

Otimizar modelos de regressão

Modelos de regressão, como regressão linear e regressão logística, são algoritmos bem conhecidos do campo da estatística.

Ambos os algoritmos são lineares, o que significa que a saída do modelo é uma soma ponderada das entradas. A regressão linear é projetada para “regressão”Problemas que requerem um número para ser previsto, e a regressão logística é projetada para“classificação”Problemas que requerem um rótulo de classe para ser previsto.

Esses modelos de regressão envolvem o uso de um algoritmo de otimização para encontrar um conjunto de coeficientes para cada entrada para o modelo que minimiza o erro de previsão. Como os modelos são lineares e bem compreendidos, algoritmos de otimização eficientes podem ser usados.

No caso de regressão linear, os coeficientes podem ser encontrados por otimização de mínimos quadrados, que pode ser resolvida usando álgebra linear. No caso de regressão logística, um algoritmo de otimização de busca local é comumente usado.

É possível usar qualquer algoritmo de otimização arbitrário para treinar modelos de regressão linear e logística.

Ou seja, podemos definir um modelo de regressão e usar um determinado algoritmo de otimização para encontrar um conjunto de coeficientes para o modelo que resulta em um mínimo de erro de previsão ou um máximo de precisão de classificação.

O uso de algoritmos de otimização alternativos deve ser menos eficiente, em média, do que o uso da otimização recomendada. No entanto, pode ser mais eficiente em alguns casos específicos, como se os dados de entrada não atendam às expectativas do modelo como uma distribuição gaussiana e não estão correlacionados com entradas externas.

Também pode ser um exercício interessante para demonstrar a natureza central da otimização em algoritmos de aprendizado de máquina de treinamento e, especificamente, modelos de regressão.

A seguir, vamos explorar como treinar um modelo de regressão linear usando escalada estocástica.

Otimize um modelo de regressão linear

O modelo de regressão linear pode ser o modelo preditivo mais simples que aprende com os dados.

O modelo tem um coeficiente para cada entrada e a saída prevista é simplesmente os pesos de algumas entradas e coeficientes.

Nesta seção, vamos otimizar os coeficientes de um modelo de regressão linear.

Primeiro, vamos definir um problema de regressão sintética que podemos usar como foco de otimização do modelo.

Podemos usar a função make_regression () para definir um problema de regressão com 1.000 linhas e 10 variáveis ​​de entrada.

O exemplo abaixo cria o conjunto de dados e resume a forma dos dados.

A execução do exemplo imprime a forma do conjunto de dados criado, confirmando nossas expectativas.

Em seguida, precisamos definir um modelo de regressão linear.

Antes de otimizar os coeficientes do modelo, devemos desenvolver o modelo e nossa confiança em como ele funciona.

Vamos começar desenvolvendo uma função que calcula a ativação do modelo para uma determinada linha de entrada de dados do conjunto de dados.

Esta função pegará a linha de dados e os coeficientes para o modelo e calculará a soma ponderada da entrada com a adição de um coeficiente extra de interceptação y (também chamado de deslocamento ou polarização). O Predict_row () a função abaixo implementa isso.

Estamos usando listas Python simples e estilo de programação imperativo em vez de matrizes NumPy ou compressões de lista intencionalmente para tornar o código mais legível para iniciantes em Python. Sinta-se à vontade para otimizá-lo e postar seu código nos comentários abaixo.

Em seguida, podemos chamar o Predict_row () função para cada linha em um determinado conjunto de dados. O Predict_dataset () a função abaixo implementa isso.

Novamente, estamos usando intencionalmente um estilo de codificação simples e imperativo para facilitar a leitura, em vez de compressões de lista.

Por fim, podemos usar o modelo para fazer previsões em nosso conjunto de dados sintético para confirmar se está tudo funcionando corretamente.

Podemos gerar um conjunto aleatório de coeficientes de modelo usando a função rand ().

Lembre-se de que precisamos de um coeficiente para cada entrada (dez entradas neste conjunto de dados) mais um peso extra para o coeficiente de interceptação de y.

Podemos então usar esses coeficientes com o conjunto de dados para fazer previsões.

Podemos avaliar o erro quadrático médio dessas previsões.

É isso.

Podemos unir tudo isso e demonstrar nosso modelo de regressão linear para modelagem preditiva de regressão. O exemplo completo está listado abaixo.

Executar o exemplo gera uma previsão para cada exemplo no conjunto de dados de treinamento e, em seguida, imprime o erro quadrático médio para as previsões.

Observação: Seus resultados podem variar devido à natureza estocástica do algoritmo ou procedimento de avaliação, ou diferenças na precisão numérica. Considere executar o exemplo algumas vezes e compare o resultado médio.

Esperaríamos um grande erro dado um conjunto de pesos aleatórios, e é isso que vemos neste caso, com um valor de erro de cerca de 7.307 unidades.

Agora podemos otimizar os coeficientes do conjunto de dados para obter um erro baixo neste conjunto de dados.

Primeiro, precisamos dividir o conjunto de dados em conjuntos de treinamento e teste. É importante reter alguns dados não usados ​​na otimização do modelo para que possamos preparar uma estimativa razoável do desempenho do modelo quando usado para fazer previsões sobre novos dados.

Usaremos 67 por cento dos dados para treinamento e os 33 por cento restantes como um conjunto de teste para avaliar o ...

Você também pode estar interessado em