Compartilhamento de tecnologia

Regressão logística (teoria pura)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. O que é regressão logística?

A regressão logística é um método de aprendizagem estatística comumente usado, usado principalmente para resolver problemas de classificação.Apesar da palavra “regressão” no nome, na verdade é um algoritmo de classificação

2. Por que o aprendizado de máquina precisa usar regressão logística?

1. Classificação binária

Este é o uso mais básico e comum da regressão logística.Ele pode prever se um evento ocorrerá e o resultado de saída será sim ou não

Por exemplo:

  • Preveja se um usuário clicará em um anúncio
  • Determine se um e-mail é spam
  • Diagnosticar se um paciente tem uma doença

Todos esses exemplos têm uma característica comum, ou seja, existem apenas dois resultados, verdadeiro (1) e falso (0)

2. Classificação multicategoria

A regressão logística pode ser estendida a problemas de classificação multicategorias por meio de métodos como One-vs-Rest ou softmax

Por exemplo:

  • Classificação de objetos em reconhecimento de imagem
  • Classificação de texto (classificação de notícias, análise de sentimento, etc.)

Todos esses exemplos têm uma característica comum, ou seja, o mesmo objeto tem vários resultados possíveis, semelhantes às nossas questões comuns de múltipla escolha. Existem várias opções, mas há apenas uma opção que melhor se adapta à resposta.

3. Previsão de probabilidade

A regressão logística não apenas fornece resultados de classificação, mas também produz valores de probabilidade, o que é muito útil em muitos cenários.

Por exemplo:

  • Preveja a probabilidade de um cliente comprar um produto
  • Avalie a probabilidade de risco de inadimplência de um solicitante de empréstimo

Todos esses exemplos têm uma característica comum, que é a previsão, ou seja, usar resultados conhecidos para deduzir resultados desconhecidos.

Se você ainda não entendeu o papel da regressão logística, não importa.

Imagine que você é médico e precisa determinar se um paciente tem determinada doença. A regressão logística é como um assistente inteligente para ajudá-lo a fazer esse julgamento. Assim como um médico analisa vários indicadores do exame físico de um paciente, a regressão logística considerará vários fatores relacionados (nós os chamamos de características). Algumas métricas podem ser mais importantes que outras. A regressão logística atribui um “peso” a cada fator, refletindo sua importância. Finalmente, em vez de simplesmente dizer “sim” ou “não”, dá uma probabilidade. Por exemplo, “A probabilidade deste paciente contrair a doença é de 70%”. Você pode definir um padrão, por exemplo, se ultrapassar 50% é considerado “sim”, caso contrário é considerado “não”. A regressão logística “aprende” com um grande número de casos conhecidos. Assim como um médico ganhando experiência em um grande número de casos.

É claro que o papel da regressão logística vai muito além disso, limitado pelo espaço (Na verdade, eu só quero ser preguiçoso), não vou entrar em muita introdução.

3.OK, vamos apresentar a fórmula da regressão logística

Pessoalmente, não gosto de fornecer muitas fórmulas matemáticas de maneira prolixa e, em seguida, dizer que os princípios subjacentes são essas fórmulas matemáticas e deixar que você mesmo as compreenda lentamente.O que espero é ser capaz de analisar algumas fórmulas básicas e por que é necessário usá-las. Isso é algo que espero poder explicar claramente em meu artigo.

1. Fórmula de regressão linear

e = b0 + b1x1 + b2x2 + ... + bn*xn

  • eé a variável dependente, o valor que queremos prever.
  • b0é o intercepto, indicando o valor da variável dependente quando todas as variáveis ​​independentes são 0
  • b1, b2, ..., bné o coeficiente de regressão, indicando o grau de influência de cada variável independente na variável dependente
  • x1, x2, ..., xné a variável independente, ou seja, o valor usado para prever a variável dependente

Aqui está um exemplo de regressão linear

Não importa se você não entende o código, basta olhar a imagem

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import matplotlib.font_manager as fm
  4. # Generate some simulated house data
  5. np.random.seed(0)
  6. area = np.random.rand(100) * 200 + 50 # House area (square meters)
  7. price = 2 * area + 5000 + np.random.randn(100) * 500 # House price (ten thousand yuan)
  8. # Fit the data using linear regression
  9. from sklearn.linear_model import LinearRegression
  10. model = LinearRegression()
  11. model.fit(area.reshape(-1, 1), price)
  12. # Get the regression coefficients
  13. b0 = model.intercept_
  14. b1 = model.coef_[0]
  15. # Plot the scatter plot
  16. plt.scatter(area, price, label="House Data")
  17. # Plot the regression line
  18. plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
  19. # Set the plot title and axis labels
  20. plt.title("Linear Regression of House Area and Price")
  21. # Set the font to SimSun (楷体)
  22. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12) # Replace with your SimSun font path
  23. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  24. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
  25. # Add legend
  26. plt.legend()
  27. # Show the plot
  28. plt.show()

1. Gere dados de simulação de 100 casas

  1. np.random.seed(0)
  2. area = np.random.rand(100) * 200 + 50
  3. price = 2 * area + 5000 + np.random.randn(100) * 500

2. Use regressão linear para ajustar os dados

  1. from sklearn.linear_model import LinearRegression
  2. model = LinearRegression()
  3. model.fit(area.reshape(-1, 1), price)

3. Obtenha o coeficiente de regressão (b0 ~ bn)

  1. b0 = model.intercept_
  2. b1 = model.coef_[0]

4. Desenhe um gráfico de dispersão

plt.scatter(area, price, label="House Data")

5. Desenhe a linha de regressão

plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")

6. Defina o título do artigo

plt.title("Linear Regression of House Area and Price")

7. Defina a fonte para itálico e tamanho da fonte (se houver)

  1. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12)
  2. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  3. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)

8. Adicione uma legenda

plt.legend()

9. Exibir gráficos

plt.show()

Este código usa regressão linear para ajustar a relação entre área da casa e preço (os títulos horizontais e verticais são descritos em inglês para evitar erros)

Os resultados da execução são os seguintes:

Algumas pessoas podem perguntar: Por que produzimos uma quantidade tão grande de dados?

Boa pergunta~

Com esses dados, podemos calcular aproximadamente e = b0 + b1x1 + b2x2 + ... + bn*xn E o coeficiente?

Especificamente:

  • y representa a variável alvo que queremos prever, como os preços das casas.
  • x1, x2, ... xn representam fatores que afetam a variável alvo, como área da casa, número de quartos, localização geográfica, etc.
  • b0, b1, b2, ... bn representam o grau de influência de cada fator na variável alvo, que é o coeficiente que queremos calcular.

Ao coletar uma grande quantidade de dados, podemos utilizar um modelo de regressão linear para calcular esses coeficientes e construir um modelo preditivo.Este modelo pode nos ajudar a compreender o impacto de diferentes fatores na variável alvo e prever o valor da variável alvo no futuro (semelhante a y = kx + b em matemática. Com k e b específicos, podemos prever y obtendo x , a diferença é que existem mais coeficientes k aqui)

2.fórmula da função sigmóide

σ(x) = 1 / (1 + exp(-x))

A imagem da função sig fica assim:

Pergunta 1: Por que escolher a função sigmóide?

Como mencionamos antes, o uso mais básico da regressão logística é resolver problemas de classificação binária.

O objetivo da regressão logística é converter a saída de um modelo linear (que pode ser qualquer número real) em um valor de probabilidade que represente a probabilidade de ocorrência de um evento, e o valor de probabilidade deve naturalmente variar de 0 a 1.

A função sigmóide realiza esta tarefa perfeitamente: comprime a saída do modelo linear entre 0 e 1 e, à medida que o valor de entrada aumenta, o valor de saída aumenta gradualmente, o que é consistente com a tendência de mudança do valor de probabilidade.

Observe a função de sig. Quando se aproxima do infinito positivo, aproxima-se de 1 infinitamente. Quando se aproxima do infinito negativo, não se enquadra no nosso problema de 0 ou de 1?

Questão 2: Como classificar as funções sigmóides?

Então alguém quer dizer de novo, então você está errado. Embora se diga que os dois lados podem estar infinitamente próximos, o meio não pode ser alcançado. Por exemplo, 0,5 está entre 0 e 1, então você diz que 0,5 está próximo de 0. Ou está se aproximando de 1?

Embora se diga que os números do meio não podem ser próximos, posso defini-lo artificialmente ~

Por exemplo, se eu colocar os números >= 0,5 na categoria 1 e os números < 0,5 na categoria 0, o problema será resolvido ~

Portanto, 0,5 não é um ponto crítico, mas um limite que estabelecemos artificialmente para classificação.

3. Fórmula de regressão logística

p = σ(b0 + b1*x1 + b2*x2 + ... + bn*xn) = 1 / (1 + exp(-(b0 + b1*x1 + b2*x2 + ... + bn*xn)))

Já falamos muito antes apenas para apresentar esta fórmula

Dá dor de cabeça só de olhar? Só de olhar para isso me dá dor de cabeça, então por que não simplificamos isso ~

Veja, é muito mais revigorante assim, igual a um cara bonito que não gosta de se vestir bem. Ele arrumou um pouco a aparência, e aí você descobriu, uau, esse cara está tão lindo ~.

Ahem, estou divagando ~ EntãoA regressão logística é, na verdade, regressão linear + função sigmóide

z na função sigmóide usa regressão linear e = b0 + b1x1 + b2x2 + ... + bn*xn substituir

Então, o que isso faz?

OK, vamos dar uma olhada ~

4. A essência e função da regressão logística

A essência da regressão logística éPrever a probabilidade de um evento ocorrer .Não classifica diretamente os dados, mas mapeia os resultados da regressão linear para o intervalo 0~1 por meio de uma função (função sigmóide). O valor neste intervalo representa a possibilidade de ocorrência do evento.

A base da regressão logística é a regressão linear. A regressão linear constrói um modelo linear e tenta ajustar os dados com uma função linear para obter um valor previsto.Este valor previsto pode ser qualquer valor e não é restrito pelo intervalo 0~1.

A função Sigmóide é uma função "mágica" que converte o valor previsto obtido pela regressão linear no intervalo 0~1, e os valores neste intervalo podem ser interpretados como a probabilidade de ocorrência do evento.

Para realizar a classificação binária, precisamos definir um limite, geralmente 0,5.Se a probabilidade prevista for maior que o limite, é determinada como uma classe positiva, caso contrário, é determinada como uma classe negativa.

Por exemplo:

A função à esquerda pode ser vista como uma função de regressão linear e a função à direita é a função sigmóide mapeada.

Todas as fotos neste artigo vêm de[Aprendizado de máquina] A regressão logística pode ser aprendida em dez minutos, fácil de entender (incluindo processo de solução spark)_bilibili_bilibili