última atualização em 17 de fevereiro de 2021
uma previsão de uma perspectiva de aprendizagem de máquinas é um único ponto que esconde a incerteza dessa previsão.os intervalos de previsão fornecem uma maneira de quantificar e comunicar a incerteza numa previsão. São diferentes dos intervalos de confiança que, em vez disso, procuram quantificar a incerteza em um parâmetro da população, como um desvio médio ou padrão. Os intervalos de previsão descrevem a incerteza para um único resultado específico.
neste tutorial, você vai descobrir o intervalo de Previsão e como calculá-lo para um modelo de regressão linear simples.
Após completar este tutorial, você saberá:
- que um intervalo de predição quantifica a incerteza de uma predição de um único ponto.os intervalos de previsão podem ser estimados analiticamente para modelos simples, mas são mais desafiadores para modelos não lineares de aprendizagem de máquinas.
- Como calcular o intervalo de Previsão para um modelo de regressão linear simples.
kick-start o seu projecto com as minhas novas estatísticas de livros para a aprendizagem de máquinas, incluindo tutoriais passo-a-passo e os ficheiros de código-fonte Python para todos os exemplos.vamos começar.
- actualizado Jun / 2019: nível de significância Corrigido como uma fracção dos desvios-padrão.
- Updated Abr/2020: Fixed typo in plot of prediction interval.
intervalos de Previsão para a aprendizagem de máquinas
Foto por Jim Bendon, alguns direitos reservados.
Visão Geral do Tutorial
Este tutorial está dividido em 5 partes; elas são:
- O que há de errado com uma estimativa pontual?o que é um intervalo de previsão?como calcular um intervalo de Previsão para a regressão Linear exemplo trabalhado
necessidade de ajuda com estatísticas para a aprendizagem com máquinas?
tome o meu curso livre de estoiro de e-mail de 7 dias agora (com o código de exemplo).
Clique para se inscrever e também obter uma versão ebook PDF livre do curso.
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)
|
em que yhat é o resultado estimado ou a previsão feita pelo modelo treinado para os dados de entrada.por definição, é uma estimativa ou uma aproximação e contém alguma incerteza.
a incerteza vem dos erros no próprio modelo e do ruído nos dados de entrada. O modelo é uma aproximação da relação entre as variáveis de entrada e as variáveis de saída.
dado o processo usado para escolher e afinar o modelo, será a melhor aproximação feita dada a informação disponível, mas ainda vai fazer erros. Os dados do domínio irão naturalmente obscurecer a relação subjacente e desconhecida entre as variáveis de entrada e saída. Isso fará dele um desafio para se encaixar no modelo, e também fará dele um desafio para um modelo adequado para fazer previsões.
dadas estas duas principais fontes de erro, a sua previsão pontual a partir de um modelo preditivo é insuficiente para descrever a verdadeira incerteza da previsão.o que é um intervalo de previsão?
um intervalo de previsão é uma quantificação da incerteza sobre uma previsão.
ele fornece um limite superior e inferior probabilístico sobre a estimativa de uma variável resultado.
um intervalo de Previsão para uma única observação futura é um intervalo que, com um determinado grau de confiança, conterá uma futura observação seleccionada aleatoriamente a partir de uma distribuição.
— Page 27, Statistical periods: A Guide for Practitioners and Researchers, 2017.
intervalos de previsão são mais comumente usados para fazer previsões ou previsões com um modelo de regressão, onde uma quantidade está sendo prevista.
Um exemplo da apresentação de um intervalo de predição é o seguinte:
Dada uma previsão de ‘y’ dado ‘x’, há 95% de probabilidade de que o intervalo de ‘a’ para ‘b’ cobre o resultado verdadeiro.
O intervalo de predição rodeia a predição feita pelo modelo e espera-se que cubra a gama do verdadeiro resultado.
O diagrama abaixo ajuda a compreender visualmente a relação entre a previsão, o intervalo de Previsão e o resultado real.
relação entre previsão, valor real e intervalo de previsão.
Taken from “Machine learning approaches for estimation of prediction interval for the model output”, 2006.
um intervalo de previsão é diferente de um intervalo de confiança.
um intervalo de confiança quantifica a incerteza sobre uma variável estimada da população, tal como a média ou o desvio-padrão. Enquanto que um intervalo de previsão quantifica a incerteza numa única observação estimada a partir da população.
na modelagem preditiva, um intervalo de confiança pode ser usado para quantificar a incerteza da habilidade estimada de um modelo, enquanto um intervalo de previsão pode ser usado para quantificar a incerteza de uma única previsão.
um intervalo de previsão é muitas vezes maior do que o intervalo de confiança, uma vez que deve levar em conta o intervalo de confiança e a variância na variável de saída prevista.
os intervalos de previsão serão sempre mais largos do que os intervalos de confiança , pois são responsáveis pela incerteza associada a e, o erro irredutível.
— Page 103, An Introduction to Statistical Learning: with Applications in R, 2013.
como calcular um intervalo de previsão
um intervalo de previsão é calculado como alguma combinação da variância estimada do modelo e da variância da variável resultado.os intervalos de previsão são fáceis de descrever, mas difíceis de calcular na prática.
em casos simples como regressão linear, podemos estimar o intervalo de previsão diretamente.
nos casos de algoritmos de regressão não linear, tais como redes neurais artificiais, é muito mais desafiador e requer a escolha e implementação de técnicas especializadas. Técnicas gerais como o método de recolocação de bootstrap podem ser usadas, mas são computacionalmente caras para calcular.
the paper “A Comprehensive Review of Neural Network-based Prediction intervalos and New Advances” provides a reasonably recent study of prediction intervalos for nonlinear models in the context of neural networks. A lista seguinte resume alguns métodos que podem ser utilizados para a incerteza de previsão de modelos de aprendizagem não linear de máquinas:
- O método Delta, do campo da regressão não linear.
- The Bayesian Method, from Bayesian modeling and statistics.
- O Método de estimativa da variância média, utilizando estatísticas estimadas.
- O método Bootstrap, usando a recolocação de dados e desenvolvendo um conjunto de modelos.
Podemos fazer o cálculo de um intervalo de previsão concreto com um exemplo trabalhado na próxima seção.
intervalo de Previsão para Regressão Linear
uma regressão linear é um modelo que descreve a combinação linear de entradas para calcular as variáveis de saída.
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.
não conhecemos os valores verdadeiros dos coeficientes b0 E b1. Também não conhecemos os verdadeiros parâmetros populacionais, tais como a média e o desvio padrão para x ou Y. todos estes elementos devem ser estimados, o que introduz incerteza na utilização do modelo para fazer previsões.
Podemos fazer algumas suposições, tais como as distribuições de x e y e os erros de previsão feitos pelo modelo, chamados residuais, são Gaussianos.
O intervalo de previsão em torno de yhat pode ser calculado da seguinte forma::
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.não sabemos na prática. Podemos calcular uma estimativa imparcial do desvio padrão previsto como segue (tomado a partir de abordagens de aprendizagem de máquina para estimativa do intervalo de Previsão para a saída do modelo):
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.
exemplo trabalhado
vamos fazer o caso de intervalos de previsão de regressão linear concreto com um exemplo trabalhado.
Primeiro, vamos definir um conjunto de dados simples de duas variáveis onde a variável de saída (y) depende da variável de entrada (x) com algum ruído gaussiano.
o exemplo abaixo define o conjunto de dados que vamos usar para este exemplo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# gerar variáveis relacionadas
from numpy import significa
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()
|
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
|
Uma parcela do conjunto de dados é criada.
Podemos ver a clara relação linear entre as variáveis com a propagação dos pontos destacando o ruído ou erro aleatório na relação.
gráfico de Dispersão das Variáveis Relacionadas
em seguida, podemos desenvolver uma regressão linear simples, dado que a variável de entrada x, irá prever a variável y. Podemos usar a função linregress () SciPy para encaixar no modelo e devolver os coeficientes b0 E b1 para o modelo.
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
|
# simples de regressão não linear do modelo
from 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.
1
|
b0=1.011, b1=49.117
|
Os coeficientes são, então, utilizados com as entradas do conjunto de dados para fazer uma previsão. As entradas resultantes e os valores-y previstos são traçados como uma linha no topo do Gráfico de dispersão para o conjunto de dados.
Podemos ver claramente que o modelo aprendeu a relação subjacente no conjunto de dados.
Scatter Plot of Dataset with Line for Simple Linear Regression Model
estamos agora prontos para fazer uma previsão com o nosso modelo de regressão linear simples e adicionar um intervalo de previsão.
Nós vamos caber o modelo como antes. Desta vez, vamos tirar uma amostra do conjunto de dados para demonstrar o intervalo de previsão. Usaremos a entrada para fazer uma predição, calcular o intervalo de predição para a predição, e comparar a predição e o intervalo com o valor esperado conhecido.
Primeiro, vamos definir os valores de entrada, Previsão e esperados.
1
2
3
|
x_in = x
y_out = y
yhat_out = yhat
|
em seguida, pode-se estimar o padrão de curvatura na direcção de previsão.
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.estatísticas de importação linregress
from matplotlib import pyplot
# semente do gerador de número aleatório
semente(1)
# preparar os dados
x = 20 * randn(1000) + 100
y = x + (10 * randn(1000) + 50)
# ajuste do modelo de regressão não-linear
b1, b0, r_value, o valor de p, std_err = linregress(x, y)
# marcar previsões
yhat = b0 + b1 * x
# definir nova entrada, valor esperado e a predição
x_in = x
y_out = y
yhat_out = yhat
# estimativa desvpad de yhat
sum_errs = arraysum((y – yhat)**2)
stdev = sqrt(1/(len(y)-2) * sum_errs)
# calcular a previsão de intervalo
intervalo = 1.96 * desvpad
print(‘a Previsão de Intervalo: %.3F ‘ % interval)
inferior, superior = yhat_out – interval, yhat_out + interval
print(‘95% likely that the true value is between%.3f e %.3f ‘ % (inferior, superior)
print (‘valor verdadeiro: %.3f ‘ % y_out)
# plot dataset and prediction with interval
pyplot.dispersão (x, y) pyplot.plot (x, yhat, color=’red’)
pyplot.errorbar (x_ in, yhat_out, yerr=interval, color=’black’, fmt=’o’)
pyplot.show ()
|
Running the example estimates the yhat standard deviation and then calculates the prediction interval.
uma vez calculado, o intervalo de previsão é apresentado ao utilizador para a variável de entrada dada. Porque nós inventamos este exemplo, nós sabemos o verdadeiro resultado, que nós também mostramos. Podemos ver que neste caso, o intervalo de previsão de 95% cobre o verdadeiro valor esperado.
1
2
3
|
Prediction Interval: 20.204
95% likelihood that the true value is between 160.750 and 201.159
True value: 183.124
|
Um enredo também é criado, mostrando as matérias conjunto de dados como um gráfico de dispersão, as previsões para o conjunto de dados, como uma linha vermelha, e a previsão e predição de intervalo como um ponto preto e linha, respectivamente.
Scatter Plot of Dataset With Linear Model and Prediction Interval
Extensions
Esta secção lista algumas ideias para alargar o tutorial que poderá desejar explorar.
- resuma a diferença entre tolerância, confiança e intervalos de previsão.desenvolver um modelo de regressão linear para um conjunto de dados padrão de aprendizagem da máquina e calcular os intervalos de Previsão para um pequeno conjunto de testes.descreve em pormenor como funciona um método de intervalo de predição não linear.se explorar alguma destas extensões, gostaria de saber.
Leitura Adicional
Esta secção fornece mais recursos sobre o tópico se você está procurando ir mais fundo.
Post
- Como Relatório Classificador de Desempenho com Intervalos de Confiança
- Como Calcular Intervalos de Confiança Bootstrap Para a Máquina de Resultados de Aprendizagem em Python
- Entender Série de Tempo, Previsão de Incerteza Utilizando Intervalos de Confiança com o Python
- Estimar o Número em que a Experiência se Repete para Estocástico de Algoritmos de Aprendizado
Livros
- A Compreensão das Novas Estatísticas: Tamanhos de Efeito, Intervalos de Confiança, e de Meta-Análise, de 2017.intervalos estatísticos: um guia para profissionais e investigadores, 2017.Uma Introdução à aprendizagem Estatística: com aplicações em R, 2013.Introduction to The New Statistics: Estimation, Open Science, and Beyond, 2016.Previsão: princípios e práticas, 2013.
Papers
- uma comparação de algumas estimativas de erro para modelos de rede neural, 1995.abordagens de aprendizagem de máquinas para estimar o intervalo de Previsão para a saída do modelo, 2006.A Comprehensive Review of Neural Network-based Prediction intervalos and New Advances, 2010.
API
- scipy.estatistica.linregress () API
- matplotlib.plot.scatter () API
- matplotlib.plot.barra de erro() API
Artigos
- Previsão de intervalo na Wikipédia
- Bootstrap previsão de intervalo entre Validado
Resumo
neste tutorial, você descobriu a previsão de intervalo e como calculá-lo para um simples modelo de regressão linear.especificamente, você aprendeu:
- que um intervalo de predição quantifica a incerteza de uma predição de um único ponto.que os intervalos de previsão podem ser estimados analiticamente para modelos simples, mas são mais desafiadores para modelos não lineares de aprendizagem de máquinas.
- Como calcular o intervalo de Previsão para um modelo de regressão linear simples.tem alguma pergunta?Faça suas perguntas nos comentários abaixo e farei o meu melhor para responder.
Get a Handle on Statistics for Machine Learning!
desenvolver uma compreensão de trabalho das estatísticas
…by writing lines of code in python
Discover how in my new Ebook:
Statistical Methods for Machine LearningIt provides self-study tutorials on topics like:
Hypothesis Tests, Correlation, Nonparametric Stats, Resampling, and much more…descubra como transformar dados em conhecimento
Skip the Academics. Apenas Resultados.
ver o que está dentro
Tweet Share