Teknologian jakaminen

Logistinen regressio (puhdas teoria)

2024-07-12

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

1. Mikä on logistinen regressio?

Logistinen regressio on yleisesti käytetty tilastollinen oppimismenetelmä, jota käytetään pääasiassa luokitteluongelmien ratkaisemiseen.Huolimatta sanasta "regressio" nimessä, se on itse asiassa luokittelualgoritmi

2. Miksi koneoppimisen täytyy käyttää logistista regressiota?

1. Binääriluokitus

Tämä on logistisen regression yksinkertaisin ja yleisin käyttötapa.Se voi ennustaa, tapahtuuko tapahtuma ja tulos on kyllä ​​vai ei

Esimerkiksi:

  • Ennusta, napsauttaako käyttäjä mainosta
  • Selvitä, onko sähköposti roskapostia
  • Diagnosoi, onko potilaalla jokin sairaus

Näillä esimerkeillä kaikilla on yhteinen piirre, eli tuloksia on vain kaksi, tosi (1) ja epätosi (0).

2. Monikategorialuokitus

Logistista regressiota voidaan laajentaa monikategorisiksi luokitteluongelmiin esimerkiksi One-vs-Rest tai softmax-menetelmillä.

Esimerkiksi:

  • Objektien luokittelu kuvantunnistuksessa
  • Tekstin luokittelu (uutisten luokittelu, tunneanalyysi jne.)

Näillä esimerkeillä on yhteinen piirre, eli samalla objektilla on useita mahdollisia tuloksia, jotka ovat samankaltaisia ​​kuin yleiset monivalintakysymyksemme. Vaihtoehtoja on useita, mutta vastausta varten on vain yksi vaihtoehto.

3. Todennäköisyysennuste

Logistinen regressio ei ainoastaan ​​anna luokitustuloksia, vaan myös tuottaa todennäköisyysarvoja, mikä on erittäin hyödyllistä monissa skenaarioissa.

Esimerkiksi:

  • Ennusta todennäköisyys, että asiakas ostaa tuotteen
  • Arvioi lainanhakijan maksukyvyttömyyden todennäköisyys

Näillä esimerkeillä kaikilla on yhteinen piirre, joka on ennustaminen, eli tunnettujen tulosten käyttäminen tuntemattomien tulosten päättelemiseen.

Jos et ole ymmärtänyt logistisen regression roolia, sillä ei ole väliä, annan sinulle helposti ymmärrettävän esimerkin.

Kuvittele, että olet lääkäri ja sinun on määritettävä, onko potilaalla tietty sairaus. Logistinen regressio on kuin älykäs apulainen, joka auttaa sinua tekemään tämän arvion. Aivan kuten lääkäri tarkastelee erilaisia ​​potilaan fyysisen tutkimuksen indikaattoreita, logistinen regressio ottaa huomioon useita toisiinsa liittyviä tekijöitä (kutsumme niitä ominaisuuksiksi). Jotkut mittarit voivat olla tärkeämpiä kuin toiset. Logistinen regressio antaa kullekin tekijälle "painon", mikä kuvastaa sen tärkeyttä. Lopuksi, sen sijaan, että sanoisit "kyllä" tai "ei", se antaa todennäköisyyden. Esimerkiksi "Tämän potilaan todennäköisyys saada sairaus on 70 %." Voit asettaa standardin, esimerkiksi jos se ylittää 50%, sitä pidetään "kyllä", muuten sitä pidetään "ei". Logistinen regressio "oppii" suuresta määrästä tunnetuista tapauksista. Aivan kuten lääkäri, joka hankkii kokemusta useiden tapausten kautta.

Tietysti logistisen regression rooli menee paljon tätä pidemmälle, tilan rajoittamana (Itse asiassa haluan vain olla laiska), en mene liian pitkälle esittelyyn.

3.OK, otetaan käyttöön logistisen regression kaava

En henkilökohtaisesti halua antaa sinulle paljon matemaattisia kaavoja pitkäveteisesti ja sitten kertoa sinulle, että taustalla olevat periaatteet ovat nämä matemaattiset kaavat, ja anna sinun ymmärtää ne hitaasti itse.Toivon voivani analysoida muutamia ydinkaavoja ja miksi on tarpeen käyttää näitä muutamia kaavoja. Toivon voivani selittää selkeästi artikkelissani.

1. Lineaarisen regression kaava

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

  • yon riippuva muuttuja, arvo, jonka haluamme ennustaa.
  • b0on leikkauspiste, joka osoittaa riippuvan muuttujan arvon, kun kaikki riippumattomat muuttujat ovat 0
  • b1, b2, ..., mrdon regressiokerroin, joka osoittaa kunkin riippumattoman muuttujan vaikutuksen asteen riippuvaan muuttujaan
  • x1, x2, ..., xnon riippumaton muuttuja, eli arvo, jota käytetään riippuvan muuttujan ennustamiseen

Tässä on esimerkki lineaarisesta regressiosta

Sillä ei ole väliä, jos et ymmärrä koodia, katso vain kuvaa

  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. Luo 100 talosimulaatiodataa

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

2. Käytä lineaarista regressiota tietojen sovittamiseksi

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

3. Hanki regressiokerroin (b0 ~ bn)

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

4. Piirrä sirontakaavio

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

5. Piirrä regressioviiva

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

6. Aseta artikkelin otsikko

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

7. Aseta fontiksi kursivoitu && fonttikoko (jos sellainen on)

  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. Lisää selitys

plt.legend()

9. Näytä kaaviot

plt.show()

Tämä koodi käyttää lineaarista regressiota sovittaakseen talon pinta-alan ja hinnan välisen suhteen (vaaka- ja pystysuuntaiset otsikot on kuvattu englanniksi virheiden välttämiseksi)

Juoksun tulokset ovat seuraavat:

Jotkut saattavat kysyä: Miksi tuotamme niin paljon dataa?

Hyvä kysymys~

Voimmeko näiden tietojen perusteella laskea karkeasti y = b0 + b1x1 + b2x2 + ... + bn*xn Entä kerroin?

Erityisesti:

  • y edustaa tavoitemuuttujaa, jonka haluamme ennustaa, kuten asuntojen hintoja.
  • x1, x2, ... xn edustavat kohdemuuttujaan vaikuttavia tekijöitä, kuten talon pinta-ala, huonemäärä, maantieteellinen sijainti jne.
  • b0, b1, b2, ... bn edustavat kunkin tekijän vaikutusastetta kohdemuuttujaan, joka on kerroin, jonka haluamme laskea.

Keräämällä suuren määrän dataa voimme käyttää lineaarista regressiomallia näiden kertoimien laskemiseen ja ennustavan mallin rakentamiseen.Tämä malli voi auttaa meitä ymmärtämään eri tekijöiden vaikutusta kohdemuuttujaan ja ennustamaan kohdemuuttujan arvoa tulevaisuudessa (samaan tapaan kuin y = kx + b matematiikassa. Tietyillä k:llä ja b:llä voimme ennustaa y:n saamalla x , ero on siinä, että tässä on enemmän kertoimia k)

2.sigmoidifunktion kaava

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

Sig-funktion kuva näyttää tältä:

Kysymys 1: Miksi valita sigmoiditoiminto?

Kuten aiemmin mainittiin, logistisen regression yksinkertaisin käyttötarkoitus on binääriluokitteluongelmien ratkaiseminen.

Logistisen regression tavoitteena on muuntaa lineaarisen mallin tulos (joka voi olla mikä tahansa reaaliluku) todennäköisyysarvoksi, joka edustaa tapahtuman todennäköisyyttä, ja todennäköisyysarvon tulisi luonnollisesti vaihdella välillä 0-1.

Sigmoidifunktio suorittaa tämän tehtävän täydellisesti: se pakkaa lineaarisen mallin lähdön välille 0 ja 1, ja kun tuloarvo kasvaa, lähtöarvo kasvaa vähitellen, mikä on yhdenmukainen todennäköisyysarvon muuttuvan trendin kanssa.

Katso sig:n funktiota Kun se lähestyy positiivista ääretöntä, se lähestyy 0:aa äärettömästi.

Kysymys 2: Miten sigmoidifunktiot luokitellaan?

Sitten joku haluaa sanoa uudelleen, niin olet väärässä. Vaikka sanotaan, että molemmat puolet voivat olla äärettömän lähellä, keskikohtaa ei voida saavuttaa. Esimerkiksi 0,5 on välillä 0 ja 1, niin sanotaan, että 0,5 on lähellä 0. Vai lähestyykö se 1?

Vaikka sanotaan, että keskellä olevat numerot eivät voi olla lähellä, voin asettaa sen keinotekoisesti~

Jos esimerkiksi laitan numerot >= 0,5 luokkaan 1 ja luvut < 0,5 luokkaan 0, ongelma ratkeaa~

Siksi 0,5 ei ole kriittinen piste, vaan kynnys, jonka asetimme keinotekoisesti luokittelulle.

3. Logistinen regressiokaava

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

Olemme sanoneet niin paljon aiemmin vain esitelläksemme tämän kaavan

Tuleeko siitä päänsärkyä, kun katsoo sitä? Minulle tulee päänsärky jo katsoessani sitä, joten miksi emme yksinkertaistaisi sitä~

Katsos, se tuntuu paljon virkistävämmältä näin, aivan kuin komea kaveri, joka ei pidä pukeutumisesta. Hän siivosi hieman ulkonäköään, ja sitten huomasit, vau, tämä kaveri näyttää niin komealta~

Hmm, poikkean ~ JotenLogistinen regressio on itse asiassa lineaarinen regressio + sigmoidifunktio

z sigmoidifunktiossa käyttää lineaarista regressiota y = b0 + b1x1 + b2x2 + ... + bn*xn Korvata

Joten mitä tämä tekee?

Okei, katsotaan ~

4. Logistisen regression olemus ja toiminta

Logistisen regression ydin onEnnusta tapahtuman todennäköisyys .Se ei luokittele tietoja suoraan, vaan kartoittaa lineaarisen regression tulokset 0~1-välille funktion kautta (Sigmoid-funktio). Tämän intervallin arvo edustaa tapahtuman mahdollisuutta.

Logistisen regression perusta on lineaarinen regressio. Lineaarinen regressio rakentaa lineaarisen mallin ja yrittää sovittaa tiedot lineaariseen funktioon ennustetun arvon saamiseksi.Tämä ennustettu arvo voi olla mikä tahansa arvo, eikä sitä rajoita väli 0-1.

Sigmoid-funktio on "maaginen" funktio, joka muuntaa lineaarisella regressiolla saadun ennustetun arvon 0~1-väliksi, ja tämän välin arvot voidaan tulkita tapahtuman todennäköisyydeksi.

Binääriluokituksen suorittamiseksi meidän on asetettava kynnys, yleensä 0,5.Jos ennustettu todennäköisyys on suurempi kuin kynnys, se määritetään positiiviseksi luokaksi, muussa tapauksessa negatiiviseksi luokaksi.

Esimerkiksi:

Vasemmalla oleva funktio voidaan nähdä lineaarisena regressiofunktiona ja oikealla oleva funktio on kartoitettu sigmoidifunktio.

Kaikki tämän artikkelin kuvat ovat peräisin[Machine Learning] Logistinen regressio voidaan oppia kymmenessä minuutissa, helppo ymmärtää (mukaan lukien kipinäratkaisuprosessi)_bilibili_bilibili