Implementação detalhada de Python e PyTorch do modelo de regressão linear: um artigo para entender completamente a tecnologia básica de aprendizado de máquina

1. Introdução

1.1 Visão geral do modelo de regressão linear

arquivo

A regressão linear é uma análise preditiva em estatística usada para modelar a relação entre duas ou mais variáveis. A regressão linear usa uma linha reta de melhor ajuste (também conhecida como linha de regressão) para estabelecer uma relação intuitiva entre variáveis ​​independentes (entrada) e variáveis ​​dependentes (saída). A regressão linear simples é uma relação linear entre variáveis ​​de entrada e variáveis ​​de saída, enquanto a regressão linear múltipla é uma relação linear entre múltiplas variáveis ​​de entrada e variáveis ​​de saída.

1.2 Introdução ao Python e PyTorch

arquivo

Python é uma linguagem de programação poderosa, especialmente adequada para processamento e análise de big data, e é amplamente utilizada em vários tipos de computação científica. O Python possui muitas bibliotecas que podem implementar facilmente várias funções avançadas, como: NumPy, Pandas, Matplotlib, etc.

PyTorch é uma biblioteca de aprendizado de máquina Python de código aberto baseada no Torch. Foi desenvolvido principalmente pela equipe de pesquisa de IA do Facebook para implementar algoritmos de aprendizado profundo. PyTorch usa tensor como estrutura de dados básica, que pode ser calculada em GPU ou CPU. O recurso de definir dinamicamente o gráfico de cálculo torna o PyTorch mais vantajoso para escrever e depurar modelos.

Nas próximas seções, implementaremos um modelo de regressão linear usando Python e a biblioteca PyTorch.

2. Preparação de ferramentas e bibliotecas

Antes de começar a implementar o modelo de regressão linear, precisamos preparar ferramentas e bibliotecas relacionadas. Usaremos o Python como linguagem de programação e o PyTorch como a principal biblioteca de aprendizado profundo.

2.1 Configuração do ambiente Python

Primeiro, precisamos instalar o Python. Se o Python não estiver instalado em seu computador, você pode baixá-lo no site oficial do Python: https://www.python.org/downloads/
Após a conclusão da instalação, você pode verificar se o Python foi instalado com sucesso executando o seguinte comando em a linha de comando:

python --version

Você deve ver o número da versão do Python. Se o Python foi instalado com sucesso, podemos começar a instalar as bibliotecas Python necessárias. Essas bibliotecas incluem: NumPy, Pandas, Matplotlib e PyTorch.

2.2 Introdução à instalação e uso do PyTorch

Em seguida, precisamos instalar a biblioteca PyTorch. O processo de instalação do PyTorch depende do seu sistema operacional e se você possui o CUDA instalado (se planeja executar o PyTorch em uma GPU, precisará do CUDA). Você pode encontrar um guia de instalação detalhado no site oficial do PyTorch: https://pytorch.org/get-started/locally/

Execute o seguinte comando na linha de comando, escolha o comando apropriado de acordo com seu ambiente:

# For CPU only
pip install torch==1.9.0+cpu torchvision==0.10.0+cpu torchaudio===0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

# For CUDA 10.2
pip install torch==1.9.0+cu102 torchvision==0.10.0+cu102 torchaudio===0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

Quando a instalação estiver concluída, podemos verificar se o PyTorch foi instalado com sucesso executando o seguinte código Python:

import torch
print(torch.__version__)

3. Preparação de dados

3.1 Visão geral do conjunto de dados

Neste exemplo, usaremos um conjunto de dados fictício que contém informações sobre tamanhos e preços de casas. Nosso objetivo é prever preços de imóveis por área, o que é um problema típico de regressão linear.

Suponha que temos os seguintes dados:

Área (metro quadrado) Preço (10.000 yuans)
50 300
60 360
70 420

3.2 Carregamento e pré-processamento de dados

Em seguida, precisamos carregar os dados e pré-processá-los. Isso geralmente inclui etapas como manipulação de valores ausentes, normalização de dados, etc. Neste exemplo, assumimos que todos os dados estão completos e nenhuma manipulação de valor ausente é necessária. No entanto, para que o algoritmo de descida do gradiente converja mais rapidamente, precisamos normalizar os dados.

import numpy as np

# 房屋面积
areas = np.array([50, 60, 70, ..., 120, 130, 140], dtype=float)

# 房价
prices = np.array([300, 360, 420, ..., 720, 780, 840], dtype=float)

# 数据规范化
areas = (areas - np.mean(areas)) / np.std(areas)
prices = (prices - np.mean(prices)) / np.std(prices)

O código acima primeiro define as matrizes de área e preço da casa e, em seguida, normaliza as duas matrizes para que os valores das duas matrizes flutuem em torno de 0 com um desvio padrão de 1. A vantagem deste tratamento é que ele pode acelerar a convergência do gradiente descendente.

4. Base teórica da regressão linear

Nesta parte, introduziremos os conhecimentos teóricos básicos da regressão linear, incluindo o modelo matemático da regressão linear e o método do gradiente descendente.

4.1 Fórmula do modelo de regressão linear

A fórmula básica do modelo de regressão linear é a seguinte:

y = wx + b

Entre eles, y é a variável de destino que queremos prever, x é nossa variável de recurso, w e b são nossos parâmetros de modelo, representando peso e viés, respectivamente.

4.2 Função de Perda e Descida de Gradiente

Para treinar nosso modelo, precisamos de uma maneira de medir a diferença entre a previsão de nosso modelo e o valor real. Esta é a função de perda (também chamada de função de custo). Para modelos de regressão linear, geralmente usamos o erro quadrático médio (MSE) como a função de perda:

L = 1/N * ∑(y_pred - y_actual)^2

Entre eles, y_pred é o valor previsto do modelo, y_actual é o valor real e N é o número de amostras.

Nosso objetivo é minimizar a função de perda ajustando os parâmetros w e b do modelo. Esse processo é chamado de otimização. A descida do gradiente é um método de otimização comum.Seu princípio de funcionamento é calcular o gradiente (derivada) da função de perda em relação aos parâmetros e, em seguida, ajustar os parâmetros na direção oposta do gradiente para descer na função de perda.

5. Usando o PyTorch para implementar um modelo de regressão linear

Com a base teórica anterior estabelecida, agora podemos começar a usar o PyTorch para implementar nosso modelo de regressão linear.

5.1 Definir o modelo

Primeiro, precisamos definir nosso modelo. No PyTorch, podemos torch.nn.Moduledefinir nosso modelo herdando classes e implementando forwardmétodos para definir a propagação direta.

import torch
import torch.nn as nn

class LinearRegressionModel(nn.Module):
    def __init__(self):
        super(LinearRegressionModel, self).__init__()
        self.linear = nn.Linear(1, 1)  # 输入和输出的维度都是1

    def forward(self, x):
        out = self.linear(x)
        return out

5.2 Instanciar a classe modelo

Então, podemos criar uma instância do modelo.

model = LinearRegressionModel()

5.3 Configuração da função de perda e otimizador

Em seguida, definimos nossa função de perda e otimizador. Usamos o erro quadrático médio como a função de perda e a descida do gradiente estocástico como o otimizador.

criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

5.4 Modelo de Treinamento

Finalmente, podemos começar a treinar nosso modelo.

# 转换为 PyTorch 张量
inputs = torch.from_numpy(areas)
targets = torch.from_numpy(prices)

# 转换为二维张量
inputs = inputs.view(-1,1)
targets = targets.view(-1,1)

# 进行 60 轮训练
for epoch in range(60):
    # 前向传播
    outputs = model(inputs)
    loss = criterion(outputs, targets)
    
    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
    if (epoch+1) % 5 == 0:
        print ('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 60, loss.item()))

O código acima completará o processo de treinamento do modelo de regressão linear e os resultados do treinamento serão exibidos no console.

6. Avaliação e previsão do modelo

Após o treinamento, precisamos avaliar o desempenho do modelo e usar o modelo para fazer previsões.

6.1 Avaliação do Modelo

Primeiro, podemos calcular a perda média do modelo em todos os dados de treinamento.

model.eval()  # 将模型设置为评估模式
with torch.no_grad():  # 不需要计算梯度
    predictions = model(inputs)
    loss = criterion(predictions, targets)
print('Final Loss:', loss.item())

Aqui, model.eval()o modelo é configurado para o modo de avaliação, de modo que operações como dropout e normalização do lote não sejam consideradas no cálculo dos gradientes. torch.no_grad()é dizer ao PyTorch que não precisamos calcular gradientes, porque não precisamos fazer a otimização do modelo.

6.2 Previsão do Modelo

Vamos usar o modelo treinado para fazer previsões.

# 预测一个 100 平方米的房子的价格
area = torch.tensor([100.0])
area = (area - torch.mean(inputs)) / torch.std(inputs)  # 需要进行同样的数据规范化
price = model(area)
print('Predicted price:', price.item())

O código acima usa o modelo treinado para prever o preço de uma casa de 100 metros quadrados. Deve-se notar que quando prevemos novos dados, precisamos realizar a mesma operação de pré-processamento nos novos dados que os dados de treinamento.

Até agora, concluímos todo o conteúdo do modelo de regressão linear, incluindo o estudo do conhecimento teórico, implementação e treinamento do modelo usando PyTorch e avaliação e previsão do modelo.

7. Resumo

Concluímos um processo completo de construção, treinamento e previsão de modelo de regressão linear. Nesse processo, aprendemos o conhecimento teórico básico do modelo de regressão linear, como usar o PyTorch para implementar o modelo de regressão linear e como avaliar e usar o modelo treinado.

7.1 Resumo dos pontos-chave

Neste artigo, fizemos principalmente o seguinte:

  1. Os conceitos básicos e princípios matemáticos do modelo de regressão linear são introduzidos.
  2. O processo de treinamento e previsão do modelo de regressão linear é implementado usando Python e PyTorch.
  3. Mostra como avaliar o desempenho do modelo.

Por meio deste estudo, espero que você tenha uma compreensão mais profunda do modelo de regressão linear e possa usá-lo com flexibilidade em problemas práticos.

7.2 Perspectivas

Embora o modelo de regressão linear seja o modelo de aprendizado de máquina mais básico, suas ideias e métodos são refletidos em muitos modelos complexos. Por exemplo, uma rede neural pode ser vista como uma extensão e aprofundamento de um modelo de regressão linear. Portanto, entender e dominar o modelo de regressão linear é muito importante para aprender modelos de aprendizado de máquina mais complexos.

Se for útil, preste mais atenção à
conta pública pessoal do WeChat: [TechLead] Compartilhe o conhecimento completo de IA e pesquisa e desenvolvimento de serviços em nuvem e fale sobre minha visão única sobre tecnologia como TechLead.
TeahLead KrisChang, mais de 10 anos de experiência na indústria de Internet e inteligência artificial, mais de 10 anos de experiência em gerenciamento de equipes de tecnologia e negócios, Bacharel em Engenharia de Software Tongji, Mestre em Gerenciamento de Engenharia Fudan, Arquiteto Sênior de Serviço em Nuvem Certificado Alibaba, Negócios de Produtos AI com Centenas de milhões de receita principal.

Acho que você gosta

Origin blog.csdn.net/magicyangjay111/article/details/131981675
Recomendado
Clasificación