Condivisione della tecnologia

Regressione logistica (teoria pura)

2024-07-12

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

1. Cos'è la regressione logistica?

La regressione logistica è un metodo di apprendimento statistico comunemente utilizzato, utilizzato principalmente per risolvere problemi di classificazione.Nonostante la parola "regressione" nel nome, in realtà si tratta di un algoritmo di classificazione

2. Perché il machine learning deve utilizzare la regressione logistica?

1. Classificazione binaria

Questo è l'uso più elementare e comune della regressione logistica.Può prevedere se si verificherà un evento e il risultato dell'output è sì o no

Per esempio:

  • Prevedere se un utente farà clic su un annuncio
  • Determina se un'e-mail è spam
  • Diagnosticare se un paziente ha una malattia

Tutti questi esempi hanno una caratteristica comune, ovvero ci sono solo due risultati, vero (1) e falso (0).

2. Classificazione multicategoria

La regressione logistica può essere estesa a problemi di classificazione multicategoria attraverso metodi come One-vs-Rest o softmax

Per esempio:

  • Classificazione degli oggetti nel riconoscimento delle immagini
  • Classificazione del testo (classificazione delle notizie, analisi del sentiment, ecc.)

Questi esempi hanno tutti una caratteristica comune, ovvero lo stesso oggetto ha più risultati possibili, simili alle nostre comuni domande a scelta multipla. Esistono più opzioni, ma esiste solo un'opzione che si adatta meglio alla risposta.

3. Previsione della probabilità

La regressione logistica non solo fornisce risultati di classificazione, ma restituisce anche valori di probabilità, il che è molto utile in molti scenari.

Per esempio:

  • Prevedere la probabilità che un cliente acquisti un prodotto
  • Valutare la probabilità di rischio di insolvenza di un richiedente del prestito

Questi esempi hanno tutti una caratteristica comune, ovvero la previsione, ovvero l'utilizzo di risultati noti per dedurre risultati sconosciuti.

Se non hai capito il ruolo della regressione logistica, non importa, ti farò un esempio di facile comprensione.

Immagina di essere un medico e di dover determinare se un paziente ha una determinata malattia. La regressione logistica è come un assistente intelligente che ti aiuta a esprimere questo giudizio. Proprio come un medico esaminerà i vari indicatori dell'esame fisico di un paziente, la regressione logistica prenderà in considerazione molteplici fattori correlati (li chiamiamo caratteristiche). Alcuni parametri potrebbero essere più importanti di altri. La regressione logistica assegna un "peso" a ciascun fattore, riflettendone l'importanza. Infine, invece di dire semplicemente "sì" o "no", dà una probabilità. Ad esempio, "La probabilità che questo paziente contragga la malattia è del 70%". Puoi impostare uno standard, ad esempio se supera il 50% viene considerato "sì", altrimenti viene considerato "no". La regressione logistica "impara" da un gran numero di casi noti. Proprio come un medico che acquisisce esperienza attraverso un gran numero di casi.

Naturalmente il ruolo della regressione logistica va ben oltre questo, limitato dallo spazio (In effetti, voglio solo essere pigro), non entrerò troppo nelle presentazioni.

3.OK, introduciamo la formula della regressione logistica

Personalmente non mi piace darti molte formule matematiche in modo prolisso, per poi dirti che i principi sottostanti sono queste formule matematiche e lasciarti capire lentamente da solo.Ciò che spero è di essere in grado di analizzare alcune formule fondamentali e il motivo per cui è necessario utilizzare queste poche formule. Questo è qualcosa che spero di poter spiegare chiaramente nel mio articolo.

1. Formula di regressione lineare

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

  • eè la variabile dipendente, il valore che vogliamo prevedere.
  • b0è l'intercetta, che indica il valore della variabile dipendente quando tutte le variabili indipendenti sono 0
  • b1, b2, ..., bnè il coefficiente di regressione, che indica il grado di influenza di ciascuna variabile indipendente sulla variabile dipendente
  • x1, x2, ..., xnè la variabile indipendente, ovvero il valore utilizzato per prevedere la variabile dipendente

Ecco un esempio di regressione lineare

Non importa se non capisci il codice, guarda l'immagine

  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. Genera 100 dati di simulazione della casa

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

2. Utilizzare la regressione lineare per adattare i dati

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

3. Ottieni il coefficiente di regressione (b0 ~ bn)

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

4. Disegna un grafico a dispersione

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

5. Disegna la retta di regressione

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

6. Imposta il titolo dell'articolo

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

7. Imposta il carattere su corsivo && dimensione carattere (se presente)

  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. Aggiungi una legenda

plt.legend()

9. Visualizza grafici

plt.show()

Questo codice utilizza la regressione lineare per adattare la relazione tra l'area della casa e il prezzo (i titoli orizzontali e verticali sono descritti in inglese per evitare errori)

I risultati in esecuzione sono i seguenti:

Alcuni potrebbero chiedersi: perché produciamo una così grande quantità di dati?

Bella domanda~

Con questi dati possiamo fare un calcolo approssimativo y = b0 + b1x1 + b2x2 + ... + bn*xn E il coefficiente?

Nello specifico:

  • y rappresenta la variabile obiettivo che vogliamo prevedere, come i prezzi delle case.
  • x1, x2, ... xn rappresentano fattori che influenzano la variabile target, come l'area della casa, il numero di stanze, la posizione geografica, ecc.
  • b0, b1, b2, ...bn rappresentano il grado di influenza di ciascun fattore sulla variabile obiettivo, che è il coefficiente che vogliamo calcolare.

Raccogliendo una grande quantità di dati, possiamo utilizzare un modello di regressione lineare per calcolare questi coefficienti e costruire un modello predittivo.Questo modello può aiutarci a comprendere l'impatto di diversi fattori sulla variabile target e a prevedere il valore della variabile target in futuro (simile a y = kx + b in matematica. Con k e b specifici, possiamo prevedere y ottenendo x , la differenza è che qui ci sono più coefficienti k)

2.formula della funzione sigmoidea

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

L'immagine della funzione sig è simile alla seguente:

Domanda 1: Perché scegliere la funzione sigmoidea?

Come accennato in precedenza, l'uso più basilare della regressione logistica è risolvere problemi di classificazione binaria.

L'obiettivo della regressione logistica è convertire l'output di un modello lineare (che può essere qualsiasi numero reale) in un valore di probabilità che rappresenta la probabilità che si verifichi un evento e il valore di probabilità dovrebbe naturalmente variare da 0 a 1.

La funzione sigmoide svolge perfettamente questo compito: comprime l'output del modello lineare tra 0 e 1 e all'aumentare del valore di input, il valore di output aumenta gradualmente, il che è coerente con la tendenza al cambiamento del valore di probabilità.

Osserva la funzione di sig. Quando si avvicina all’infinito positivo, si avvicina a 1 infinitamente. Quando si avvicina all’infinito negativo, si avvicina a 0 infinitamente. Non si adatta semplicemente al nostro problema di 0 o 1?

Domanda 2: Come classificare le funzioni sigmoidali?

Poi qualcuno vuole ripetere, allora ti sbagli Anche se si dice che i due lati possono essere infinitamente vicini, il centro non può essere raggiunto. Ad esempio, 0,5 è compreso tra 0 e 1, quindi dici che 0,5 è vicino a 0. Oppure si sta avvicinando a 1?

Anche se si dice che i numeri al centro non possono essere vicini, posso impostarli artificialmente~

Ad esempio, se inserisco i numeri >= 0,5 nella categoria 1 e i numeri < 0,5 nella categoria 0, il problema sarà risolto~

Pertanto, 0,5 non è un punto critico, ma una soglia che abbiamo fissato artificialmente per la classificazione.

3. Formula di regressione logistica

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

Abbiamo detto tanto prima proprio per introdurre questa formula

Ti viene il mal di testa solo a guardarlo? Mi fa venire il mal di testa solo a guardarlo, quindi perché non lo semplifichiamo~

Vedi, è molto più rinfrescante così, proprio come un bel ragazzo a cui non piace travestirsi. Ha riordinato un po' il suo aspetto, e poi hai scoperto, wow, questo ragazzo sembra così bello~

Ehm, sto divagando~ AlloraLa regressione logistica è in realtà una regressione lineare + funzione sigmoide

z nella funzione sigmoidea utilizza la regressione lineare y = b0 + b1x1 + b2x2 + ... + bn*xn Rimpiazzare

Quindi cosa fa questo?

OK, diamo un'occhiata~

4. L'essenza e la funzione della regressione logistica

L'essenza della regressione logistica èPrevedere la probabilità che si verifichi un evento .Non classifica direttamente i dati, ma mappa i risultati della regressione lineare nell'intervallo 0~1 tramite una funzione (funzione sigmoide). Il valore in questo intervallo rappresenta la possibilità che si verifichi l'evento.

La base della regressione logistica è la regressione lineare. La regressione lineare costruisce un modello lineare e tenta di adattare i dati con una funzione lineare per ottenere un valore previsto.Questo valore previsto può essere qualsiasi valore e non è limitato dall'intervallo 0~1.

La funzione Sigmoide è una funzione "magica" che converte il valore previsto ottenuto mediante regressione lineare nell'intervallo 0~1 e i valori in questo intervallo possono essere interpretati come la probabilità che si verifichi l'evento.

Per eseguire la classificazione binaria, dobbiamo impostare una soglia, solitamente 0,5.Se la probabilità prevista è maggiore della soglia, viene determinata come una classe positiva, altrimenti viene determinata come una classe negativa.

Per esempio:

La funzione a sinistra può essere vista come una funzione di regressione lineare e la funzione a destra è la funzione sigmoidea mappata.

Tutte le immagini in questo articolo provengono da[Apprendimento automatico] La regressione logistica può essere appresa in dieci minuti, facile da capire (incluso il processo di soluzione scintilla)_bilibili_bilibili