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

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

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

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

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

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

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()
copy

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

Note
Примітка

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

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

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 5.26

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

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

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

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

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

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

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()
copy

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

Note
Примітка

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

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

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

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

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

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