Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Інтерполяція проти Екстраполяції | Поліноміальна Регресія
Лінійна регресія з Python

Інтерполяція проти Екстраполяції

Свайпніть щоб показати меню

У попередньому розділі ми помітили, що наші прогнози за допомогою різних моделей стають більш різноманітними на краях.

ExtrapolationGIF

Прогнози стають ненадійними, коли ми виходимо за межі діапазону навчальних даних. Прогнозування за межами цього діапазону називається екстраполяцією, а прогнозування в межах — інтерполяцією.

ExtrapolationVideo

Регресія погано справляється з екстраполяцією. Вона використовується для інтерполяції та може давати абсурдні прогнози, коли нові приклади виходять за межі діапазону навчальної вибірки.

Довірчі інтервали

OLS також може повертати довірчі інтервали для регресійної прямої:

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 — рівень довіри (зазвичай 0.05). Це дає нижню та верхню межі для кожного значення у X_new_tilde. Потім можна побудувати графік регресійної прямої разом із її довірчим інтервалом.

12345678910111213141516171819202122
import 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()

Оскільки ми не знаємо справжній розподіл цільової змінної, лінія регресії є лише наближенням. Довірчий інтервал показує, де ймовірно знаходиться справжня лінія. Інтервал розширюється у міру віддалення від навчальних даних.

Note
Примітка

Довірчі інтервали будуються за умови, що модель обрана правильно (наприклад, проста лінійна регресія або поліноміальна регресія ступеня 4).

Якщо модель обрана невдало, довірчий інтервал є ненадійним, як і сама лінія. У наступному розділі буде розглянуто, як обрати найкращу модель.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 3. Розділ 4
some-alt