2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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
Tämä on logistisen regression yksinkertaisin ja yleisin käyttötapa.Se voi ennustaa, tapahtuuko tapahtuma ja tulos on kyllä vai ei
Esimerkiksi:
Näillä esimerkeillä kaikilla on yhteinen piirre, eli tuloksia on vain kaksi, tosi (1) ja epätosi (0).
Logistista regressiota voidaan laajentaa monikategorisiksi luokitteluongelmiin esimerkiksi One-vs-Rest tai softmax-menetelmillä.
Esimerkiksi:
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.
Logistinen regressio ei ainoastaan anna luokitustuloksia, vaan myös tuottaa todennäköisyysarvoja, mikä on erittäin hyödyllistä monissa skenaarioissa.
Esimerkiksi:
Näillä esimerkeillä kaikilla on yhteinen piirre, joka on ennustaminen, eli tunnettujen tulosten käyttäminen tuntemattomien tulosten päättelemiseen.
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.
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.
y = b0 + b1x1 + b2x2 + ... + bn*xn
Sillä ei ole väliä, jos et ymmärrä koodia, katso vain kuvaa
- 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. Luo 100 talosimulaatiodataa
- np.random.seed(0)
- area = np.random.rand(100) * 200 + 50
- price = 2 * area + 5000 + np.random.randn(100) * 500
2. Käytä lineaarista regressiota tietojen sovittamiseksi
- from sklearn.linear_model import LinearRegression
- model = LinearRegression()
- model.fit(area.reshape(-1, 1), price)
3. Hanki regressiokerroin (b0 ~ bn)
- b0 = model.intercept_
- 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)
- 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. 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)
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:
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)
σ(x) = 1 / (1 + exp(-x))
Sig-funktion kuva näyttää tältä:
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.
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.
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 ~
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.