Interpolação vs Extrapolação
No capítulo anterior, observamos que nossas previsões utilizando diferentes modelos tornam-se mais diversas nas extremidades.
As previsões tornam-se não confiáveis quando nos afastamos do intervalo dos dados de treinamento. Prever além desse intervalo é extrapolação, enquanto prever dentro dele é interpolação.
A regressão não lida bem com a extrapolação. Ela é utilizada para interpolação e pode gerar previsões absurdas quando novas instâncias estão fora do intervalo do conjunto de treinamento.
Intervalos de Confiança
OLS também pode retornar intervalos de confiança para a linha de regressão:
lower = model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']
alpha é o nível de confiança (tipicamente 0.05). Isso fornece limites inferior e superior para cada valor em X_new_tilde.
É possível então plotar a linha de regressão juntamente com seu intervalo de confiança.
12345678910111213141516171819202122import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) n = 4 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80) # 1-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new.reshape(-1,1)) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) lower = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_lower'] # Get lower bound for each point upper = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_upper'] # get upper bound for each point plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.fill_between(X_new, lower, upper, alpha=0.4) plt.show()
Como não se conhece a distribuição verdadeira do alvo, a linha de regressão é apenas uma aproximação. O intervalo de confiança indica onde a linha verdadeira provavelmente se encontra. O intervalo se amplia à medida que nos afastamos dos dados de treinamento.
Os intervalos de confiança são construídos assumindo que escolhemos corretamente o modelo (por exemplo, Regressão Linear Simples ou Regressão Polinomial de grau 4).
Se o modelo for escolhido de forma inadequada, o intervalo de confiança se torna não confiável, assim como a própria linha. Você aprenderá como selecionar o melhor modelo na próxima seção.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 5.26
Interpolação vs Extrapolação
Deslize para mostrar o menu
No capítulo anterior, observamos que nossas previsões utilizando diferentes modelos tornam-se mais diversas nas extremidades.
As previsões tornam-se não confiáveis quando nos afastamos do intervalo dos dados de treinamento. Prever além desse intervalo é extrapolação, enquanto prever dentro dele é interpolação.
A regressão não lida bem com a extrapolação. Ela é utilizada para interpolação e pode gerar previsões absurdas quando novas instâncias estão fora do intervalo do conjunto de treinamento.
Intervalos de Confiança
OLS também pode retornar intervalos de confiança para a linha de regressão:
lower = model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_lower']
upper = model.get_prediction(X_new_tilde).summary_frame(alpha)['mean_ci_upper']
alpha é o nível de confiança (tipicamente 0.05). Isso fornece limites inferior e superior para cada valor em X_new_tilde.
É possível então plotar a linha de regressão juntamente com seu intervalo de confiança.
12345678910111213141516171819202122import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) n = 4 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80) # 1-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new.reshape(-1,1)) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) lower = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_lower'] # Get lower bound for each point upper = regression_model.get_prediction(X_new_tilde).summary_frame(0.05)['mean_ci_upper'] # get upper bound for each point plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.fill_between(X_new, lower, upper, alpha=0.4) plt.show()
Como não se conhece a distribuição verdadeira do alvo, a linha de regressão é apenas uma aproximação. O intervalo de confiança indica onde a linha verdadeira provavelmente se encontra. O intervalo se amplia à medida que nos afastamos dos dados de treinamento.
Os intervalos de confiança são construídos assumindo que escolhemos corretamente o modelo (por exemplo, Regressão Linear Simples ou Regressão Polinomial de grau 4).
Se o modelo for escolhido de forma inadequada, o intervalo de confiança se torna não confiável, assim como a própria linha. Você aprenderá como selecionar o melhor modelo na próxima seção.
Obrigado pelo seu feedback!