le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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
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:
Tutti questi esempi hanno una caratteristica comune, ovvero ci sono solo due risultati, vero (1) e falso (0).
La regressione logistica può essere estesa a problemi di classificazione multicategoria attraverso metodi come One-vs-Rest o softmax
Per esempio:
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.
La regressione logistica non solo fornisce risultati di classificazione, ma restituisce anche valori di probabilità, il che è molto utile in molti scenari.
Per esempio:
Questi esempi hanno tutti una caratteristica comune, ovvero la previsione, ovvero l'utilizzo di risultati noti per dedurre risultati sconosciuti.
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.
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.
y = b0 + b1x1 + b2x2 + ... + bn*xn
Non importa se non capisci il codice, guarda l'immagine
- import matplotlib.pyplot as plt
- import numpy as np
- import matplotlib.font_manager as fm
-
- # Generate some simulated house data
- np.random.seed(0)
- area = np.random.rand(100) * 200 + 50 # House area (square meters)
- price = 2 * area + 5000 + np.random.randn(100) * 500 # House price (ten thousand yuan)
-
- # Fit the data using linear regression
- from sklearn.linear_model import LinearRegression
- model = LinearRegression()
- model.fit(area.reshape(-1, 1), price)
-
- # Get the regression coefficients
- b0 = model.intercept_
- b1 = model.coef_[0]
-
- # Plot the scatter plot
- plt.scatter(area, price, label="House Data")
-
- # Plot the regression line
- plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
-
- # Set the plot title and axis labels
- plt.title("Linear Regression of House Area and Price")
-
- # Set the font to SimSun (楷体)
- font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12) # Replace with your SimSun font path
-
- plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
- plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
-
- # Add legend
- plt.legend()
-
- # Show the plot
- plt.show()
1. Genera 100 dati di simulazione della casa
- np.random.seed(0)
- area = np.random.rand(100) * 200 + 50
- price = 2 * area + 5000 + np.random.randn(100) * 500
2. Utilizzare la regressione lineare per adattare i dati
- from sklearn.linear_model import LinearRegression
- model = LinearRegression()
- model.fit(area.reshape(-1, 1), price)
3. Ottieni il coefficiente di regressione (b0 ~ bn)
- b0 = model.intercept_
- 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)
- font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12)
- plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
- 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)
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:
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)
σ(x) = 1 / (1 + exp(-x))
L'immagine della funzione sig è simile alla seguente:
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?
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.
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~
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.