Koneoppimisen ennustusvälit

Tweet Share Share

päivitetty viimeksi 17.helmikuuta 2021

ennustaminen koneoppimisen näkökulmasta on yksi piste, joka kätkee ennustuksen epävarmuuden.

Ennustusvälit mahdollistavat ennusteen epävarmuuden kvantifioinnin ja viestimisen. Ne eroavat luottamusväleistä, joilla pyritään sen sijaan kvantifioimaan populaatioparametrin, kuten keskiarvon tai keskihajonnan, epävarmuus. Ennustusvälit kuvaavat yksittäisen tuloksen epävarmuutta.

tässä opetusohjelmassa tutustutaan ennustusväliin ja siihen, miten se lasketaan yksinkertaiselle lineaariselle regressiomallille.

tämän opetusohjelman suoritettuasi tiedät:

  • , että ennustusväli määrittää yhden pisteen ennustuksen epävarmuuden.
  • että ennustusvälit voidaan arvioida analyyttisesti yksinkertaisille malleille, mutta ovat haastavampia epälineaarisille koneoppimismalleille.
  • kuinka lasketaan ennusteväli yksinkertaiselle lineaariselle regressiomallille.

Kick-start your project with my new book Statistics for Machine Learning, including step-by-step tutorials and the Python source code files for all examples.

aloitetaan.

  • päivitetty kesä / 2019: korjattu merkitsevyystaso keskihajontojen murto-osana.
  • päivitetty huhti / 2020: Korjattu kirjoitusvirhe ennustusvälin kuvaajassa.
Ennustusvälit Koneoppimiselle

Ennustusvälit Koneoppimiselle
Kuva: Jim Bendon, jotkut oikeudet pidätetään.

Tutorial Overview

Tämä opetusohjelma on jaettu 5 osaan; ne ovat:

  1. mitä vikaa Piste-Estimaatissa on?
  2. mikä on Ennusteväli?
  3. Miten lasketaan Ennustusväli
  4. Ennustusväli lineaariselle regressiolle
  5. toiminut esimerkki

Tarvitsetko apua koneoppimisen tilastoinnissa?

ota ilmainen 7 päivän sähköpostin pikakurssi nyt (näytekoodilla).

klikkaa ilmoittautuaksesi ja saat myös ilmaisen PDF Ebook-version kurssista.

Download Your FREE Mini-Course

Why Calculate a Prediction Interval?

In predictive modeling, a prediction or a forecast is a single outcome value given some input variables.

For example:

1
yhat = model.predict (X)

missä yhat on koulutetun mallin antama arvioitu tulos tai ennuste annetulle syöttötiedolle X.

Tämä on pisteennuste.

määritelmän mukaan se on estimaatti tai likiarvo ja sisältää jonkin verran epävarmuutta.

epävarmuus tulee itse mallin virheistä ja syöttötiedon kohinasta. Malli on approksimaatio panosmuuttujien ja lähtömuuttujien suhteesta.

kun otetaan huomioon mallin valinta-ja viritysprosessi, se on paras saatavilla olevien tietojen perusteella tehty likiarvo, mutta se tekee silti virheitä. Tiedot toimialueen luonnollisesti hämärtää taustalla ja tuntematon suhde Tulo ja Lähtö muuttujat. Tällöin mallin sovittaminen on haastavaa, ja myös ennusteiden tekeminen sopii mallille.

kun otetaan huomioon nämä kaksi pääasiallista virhelähdettä, niiden pisteennustus ennustemallista ei riitä kuvaamaan ennusteen todellista epävarmuutta.

mikä on Ennusteväli?

ennusteväli on ennusteen epävarmuuden kvantifiointi.

se antaa todennäköisyyslaskennan tulosmuuttujan estimaatille ylä-ja alarajan.

yksittäisen tulevaisuushavainnon ennustusväli on aikaväli, joka tietyllä luotettavuusasteella sisältää jakaumasta satunnaisesti valitun tulevan havainnon.

— Page 27, Statistical Intervalls: a Guide for Practitioners and Researchers, 2017.

Ennustusvälejä käytetään yleisimmin tehtäessä ennusteita tai ennusteita regressiomallilla, jossa ennustetaan Suure.

esimerkki ennustevälin esittämisestä on seuraava:

kun ennustetaan ” y ”annettuna ” x”, on 95 prosentin todennäköisyys, että vaihteluväli ” a ” – ” b ” kattaa todellisen tuloksen.

ennusteväli ympäröi mallin tekemän ennusteen ja kattaa toivottavasti todellisen tuloksen vaihteluvälin.

alla oleva kaavio auttaa visuaalisesti hahmottamaan ennusteen, ennustusvälin ja todellisen tuloksen välistä suhdetta.

ennusteen, todellisen arvon ja ennustusvälin suhde

ennusteen, todellisen arvon ja ennustusvälin suhde.
otettu teoksesta ”Machine learning approaches for estimation of prediction interval for the model output”, 2006.

ennusteväli on eri kuin luottamusväli.

luottamusväli kvantifioi estimoidun populaatiomuuttujan, kuten keskiarvon tai keskihajonnan, epävarmuuden. Kun taas ennusteväli kvantifioi populaatiosta arvioidun yksittäisen havainnon epävarmuuden.

ennustemallinnuksessa voidaan käyttää luottamusväliä mallin arvioidun taidon epävarmuuden kvantifiointiin, kun taas ennusteväliä voidaan käyttää yksittäisen ennusteen epävarmuuden kvantifiointiin.

ennusteväli on usein luottamusväliä suurempi, koska siinä on otettava huomioon ennustettavan tuotosmuuttujan luottamusväli ja varianssi.

Ennustusvälit ovat aina laajemmat kuin luottamusvälit , koska ne selittävät E: hen liittyvän epävarmuuden, irreducible-virheen.

— Page 103, An Introduction to Statistical Learning: with Applications in R, 2013.

Miten lasketaan Ennusteväli

ennusteväli lasketaan jonkinlaisena yhdistelmänä mallin arvioidusta varianssista ja lopputulosmuuttujan varianssista.

Ennustusvälit on helppo kuvata, mutta käytännössä vaikea laskea.

yksinkertaisissa tapauksissa, kuten lineaarisessa regressiossa, voimme arvioida ennustusvälin suoraan.

epälineaaristen regressioalgoritmien, kuten keinotekoisten neuroverkkojen, tapauksessa se on paljon haastavampaa ja vaatii erikoistekniikoiden valintaa ja toteuttamista. Yleisiä tekniikoita, kuten bootstrap resampling menetelmä voidaan käyttää, mutta ovat laskennallisesti kalliita laskea.

paperi ”a Comprehensive Review of Neural Network-based Prediction Intervalls and New Advances” tarjoaa kohtuullisen tuoreen tutkimuksen epälineaaristen mallien ennustusväleistä neuroverkkojen yhteydessä. Seuraavassa luettelossa on yhteenveto menetelmistä, joita voidaan käyttää epälineaaristen koneoppimismallien ennustusepävarmuuteen:

  • Delta-menetelmä epälineaarisen regression kentältä.
  • Bayesilainen menetelmä, bayesilaisesta mallinnuksesta ja tilastoista.
  • Keskiarvovarianssin estimointimenetelmä, jossa käytetään estimoituja tilastoja.
  • Bootstrap-menetelmä, jossa hyödynnetään datan resampling ja kehitetään mallikokonaisuus.

voimme konkretisoida ennustevälin laskemisen seuraavassa osiossa toimivalla esimerkillä.

lineaarisen Regression Ennustusväli

lineaarinen regressio on malli, joka kuvaa tulojen lineaarista yhdistelmää lähtömuuttujien laskemiseksi.

For example, an estimated linear regression model may be written as:

1
yhat = b0 + b1 . x

Where yhat is the prediction, b0 and b1 are coefficients of the model estimated from training data and x is the input variable.

emme tiedä kertoimien B0 ja b1 todellisia arvoja. Emme myöskään tiedä todellisia populaatioparametreja, kuten keskiarvoa ja keskihajontaa X: lle tai y: lle. kaikki nämä tekijät on estimoitava, mikä tuo epävarmuutta mallin käyttöön, jotta voidaan tehdä ennusteita.

voimme tehdä joitakin oletuksia, kuten X: n ja y: n jakaumat ja mallin tekemät ennustevirheet, joita kutsutaan residuaaleiksi, ovat Gaussin.

ennusteväli yhatin ympärillä voidaan laskea seuraavasti:

1
yhat +/- z * sigma

Where yhat is the predicted value, z is the number of standard deviations from the Gaussian distribution (e.g. 1.96 for a 95% interval) and sigma is the standard deviation of the predicted distribution.

emme tiedä käytännössä. Voimme laskea puolueettoman estimaatin ennustetusta keskihajonnasta seuraavasti (otettu koneoppimisen lähestymistavoista mallin tuotoksen ennustusvälin arvioimiseksi):

1
stdev = sqrt(1 / (N – 2) * e(i)^2 for i to N)

Where stdev is an unbiased estimate of the standard deviation for the predicted distribution, n are the total predictions made, and e(i) is the difference between the ith prediction and actual value.

Työesimerkki

tehdään lineaaristen regressioennustusvälien tapaus konkreettiseksi työesimerkillä.

määritellään ensin yksinkertainen kahden muuttujan datajoukko, jossa lähtömuuttuja (y) riippuu tulomuuttujasta (x), jossa on jonkin verran Gaussin kohinaa.

alla olevassa esimerkissä määritellään aineisto, jota käytämme tässä esimerkissä.

# generoi liittyvät muuttujat
numpy import Mean
from numpy import std
from numpy.random import randn
from numpy.random import seed
from matplotlib import pyplot
# seed random number generator
seed(1)
# prepare data
x = 20 * randn(1000) + 100
y = x + (10 * randn(1000) + 50)
# summarize
print(’x: mean=%.3f stdv=%.3f’ % (mean(x), std(x)))
print(’y: mean=%.3f stdv=%.3f’ % (mean(y), std(y)))
# plot
pyplot.scatter(x, y)
pyplot.show()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Running the example first prints the mean and standard deviations of the two variables.

1
2

x: mean=100.776 stdv=19.620
y: mean=151.050 stdv=22.358

aineiston kuvaaja luodaan.

voidaan nähdä selkeä lineaarinen suhde muuttujien välillä pisteiden hajaantuessa korostaen kohinaa tai satunnaisvirhettä suhteessa.

liittyvien muuttujien Hajontakaavio

vastaavien muuttujien Hajontakaavio

seuraavaksi voidaan kehittää yksinkertainen lineaarinen regressio, joka syöttömuuttujan x perusteella ennustaa y-muuttujan. Linregressin () SciPy-funktiolla voidaan sovittaa malliin ja palauttaa mallin B0-ja b1-kertoimet.

1
2

# fit linear regression model
b1, b0, r_value, p_value, std_err = linregress(x, y)

We can use the coefficients to calculate the predicted y values, called yhat, for each of the input variables. The resulting points will form a line that represents the learned relationship.

1
2

# make prediction
yhat = b0 + b1 * x

The complete example is listed below.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# yksinkertainen epälineaarinen regressiomalli
alkaen numpy.random import randn
from numpy.random import seed
from scipy.stats import linregress
from matplotlib import pyplot
# seed random number generator
seed(1)
# prepare data
x = 20 * randn(1000) + 100
y = x + (10 * randn(1000) + 50)
# fit linear regression model
b1, b0, r_value, p_value, std_err = linregress(x, y)
print(’b0=%.3f, b1=%.3f’ % (b1, b0))
# make prediction
yhat = b0 + b1 * x
# plot data and predictions
pyplot.scatter(x, y)
pyplot.plot(x, yhat, color=’r’)
pyplot.show()

Running the example fits the model and prints the coefficients.

B0=1.011, B1=49.117
1

kertoimia käytetään sitten aineistosta saatujen syötteiden kanssa ennusteen tekemiseksi. Tuloksena saatavat tulot ja ennustetut y-arvot piirretään viivaksi aineiston scatter-kuvaajan päälle.

voimme selvästi nähdä, että malli on oppinut aineiston taustalla olevan suhteen.

aineiston Hajontakaavio yksinkertaisella lineaarisella Regressiomallilla

aineiston Hajontakaavio yksinkertaisella lineaarisella Regressiomallilla

olemme nyt valmiita tekemään ennusteen yksinkertaisella lineaarisella regressiomallilla ja lisäämään ennustusvälin.

me sovitellaan mallia kuten ennenkin. Tällä kertaa otamme yhden näytteen aineistosta osoittaaksemme ennustusvälin. Käytämme syötteen tehdä ennusteen, laskea ennusteen aikaväli ennusteen, ja vertaa ennuste ja aikaväli tunnettu odotusarvo.

määritellään ensin tulo -, ennuste-ja odotusarvot.

1
2
3
x_in = X
y_out = y

yhat_out = yhat

seuraavaksi voidaan arvioida vakiokäyrä ennusteen suuntaan.

1
SE = sqrt(1 / (N – 2) * e(i)^2 for i to N)

We can calculate this directly using the NumPy arrays as follows:

1
2
3

# estimate stdev of yhat
sum_errs = arraysum((y – yhat)**2)
stdev = sqrt(1/(len(y)-2) * sum_errs)

Next, we can calculate the prediction interval for our chosen input:

1
interval = z . stdev

We will use the significance level of 95%, which is 1.96 standard deviations.

Once the interval is calculated, we can summarize the bounds on the prediction to the user.

1
2
3

# calculate prediction interval
interval = 1.96 * stdev
lower, upper = yhat_out – interval, yhat_out + interval

We can tie all of this together. The complete example is listed below.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

# linear regression prediction with prediction interval
from numpy.random import randn
from numpy.random import seed
from numpy import power
from numpy import sqrt
from numpy import mean
from numpy import std
from numpy import sum as arraysum
from scipy.tilastot import linregress
from matplotlib import pyplot
# Seed random number generator
seed(1)
# preparate the data
x = 20 * randn(1000) + 100
y = x + (10 * randn(1000) + 50)
# fit the nonlinear regression model
B1, B0, r_value, p_value, std_err = linregress(x, y)
# Mark predictions
yhat = B0 + B1 * x
# define new input, expected value and prediction
x_in = x
y_out = y
yhat_out = yhat
# estimate StDev of yhat
sum_errs = arraysum ((y – yhat)**2)
stdev = sqrt(1/(len (y)-2) * sum_errs)
# calculate prediction interval
interval = 1, 96 * stdev
print (”Prediction Interval: %.3f ’ % interval)
lower, upper = yhat_out – interval, yhat_out + interval
print(’95%% todennäköisyys, että todellinen arvo on välillä %.3f ja %.3f ’ % (Alempi, Ylempi))
print (”todellinen arvo: %.3f ’ % y_out)
# havaintoaineisto ja ennustaminen intervallilla
pyplot.hajonta (x, y)
pyplot.plot (x, yhat, color= ”punainen”)
pyplot.errorbar (x_in, yhat_out, yerr=interval, color= ”black”, fmt= ”o”)
pyplot.show ()

esimerkin Juoksu arvioi yhatin keskihajonnan ja laskee sitten ennustevälin.

kun on laskettu, ennusteväli esitetään käyttäjälle annetun syöttömuuttujan osalta. Koska me keksimme tämän esimerkin, me tiedämme todellisen lopputuloksen,jonka me myös näytämme. Voimme nähdä, että tässä tapauksessa 95%: n ennusteväli ei kata todellista odotusarvoa.

1
2
3

Prediction Interval: 20.204
95% likelihood that the true value is between 160.750 and 201.159
True value: 183.124

luodaan myös kuvaaja, joka esittää raakaa aineistoa sirontajuonena, aineistoa koskevia ennusteita punaisena viivana ja ennustusväliä mustana pisteenä ja viivana.

tietokokonaisuuden Hajontakaavio lineaarisella mallilla ja Ennustusvälillä

tietokokonaisuuden Hajontakaavio lineaarisella mallilla ja Ennustusvälillä

laajennukset

tässä osiossa luetellaan joitakin ideoita opetusohjelman laajentamiseksi, joita haluat ehkä tutkia.

  • summaa toleranssin, luottamuksen ja ennustusvälien välisen eron.
  • kehitä lineaarinen regressiomalli tavalliselle koneoppimisen aineistolle ja laske ennustusvälit pienelle testisarjalle.
  • kuvaile yksityiskohtaisesti, miten yksi epälineaarinen ennustusvälimenetelmä toimii.

jos tutkit jotain näistä laajennuksista, haluaisin tietää.

lisätietoja

tästä osiosta saa lisää resursseja aiheeseen, jos haluaa mennä syvemmälle.

Posts

  • kuinka raportoida luokittajan suorituskyky Luottamusvälein
  • Miten lasketaan Bootstrap-luottamusvälit koneoppimisen tuloksille Pythonissa
  • ymmärrä aikasarjan ennusteen epävarmuus käyttämällä luottamusvälejä Pythonilla
  • arvioi stokastisten Koneoppimisalgoritmien kokeiden määrä

Kirjat

  • uusien tilastojen ymmärtäminen: Vaikutuskoot, luottamusvälit ja Meta-analyysi, 2017.
  • tilastolliset intervallit: a Guide for Practitioners and Researchers, 2017.
  • an Introduction to Statistical Learning: with Applications in R, 2013.
  • Introduction to the New Statistics: Estimation, Open Science, and Beyond, 2016.
  • Forecasting: principles and practice, 2013.

Papers

  • a comparison of some error estimates for neural network models, 1995.
  • Machine learning approaches for estimation of prediction interval for the model output, 2006.
  • a Comprehensive Review of Neural Network-based Prediction Intervalls and New Advances, 2010.

API

  • scipy.tilastot.linregress () API
  • matplotlib.pyplot.hajonta () API
  • matplotlib.pyplot.errorbar () API

Artikkelit

  • Ennustusväli Wikipediassa
  • Bootstrap-ennustusväli ristiin validoidulla

Yhteenveto

tässä opetusohjelmassa selvitit ennustusvälin ja sen laskemisen yksinkertaiselle lineaariselle regressiomallille.

erityisesti opit:

  • , että ennustusväli kvantifioi yhden pisteen ennustuksen epävarmuutta.
  • että ennustusvälit voidaan arvioida analyyttisesti yksinkertaisille malleille, mutta ne ovat haastavampia epälineaarisille koneoppimismalleille.
  • kuinka lasketaan ennusteväli yksinkertaiselle lineaariselle regressiomallille.

onko sinulla kysyttävää?
kysy kysymyksesi alla olevissa kommenteissa ja teen parhaani vastatakseni.

ota haltuun koneoppimisen tilastot!

koneoppimisen tilastolliset menetelmät

kehittävät työskentelyymmärrystä tilastoista

…kirjoittamalla koodirivejä Pythonilla

Discover how in my new Ebook:
Statistical Methods for Machine Learning

It provides self-study tutorials on topics like:
Hypothesis Tests, Correlation, Nonparametric Stats, Resampling, and much more…

selvitä, miten Data muutetaan tiedoksi

Ohita akateemikot. Pelkkiä Tuloksia.

see What ’ s Inside

Tweet Share Share

Vastaa

Sähköpostiosoitettasi ei julkaista.