Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Переобучення | Вибір Найкращої Моделі
Лінійна регресія з Python

Переобучення

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

Перенавчання

Розгляньте дві регресійні прямі нижче. Яка з них краща?

OverfittingExample

Метрики вказують, що друга модель краща, тому її використовують для прогнозування X_new = [0.2, 0.5, 2.7]. Але після порівняння прогнозів із фактичними значеннями перша модель показує кращі результати.

OverfittingPrediction

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

Недонавчання

Недонавчання виникає, коли модель занадто проста, щоб навіть підлаштуватися під тренувальні дані, що також призводить до неточних прогнозів на невідомих даних.

UnderfittingExample

Отже, можна спробувати визначити, чи модель недонавчається або перенавчається, візуально.

UnderGoodOver

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

Розділення на тренувальну та тестову вибірки

Щоб оцінити продуктивність на невідомих даних, ми розділяємо набір даних на тренувальну та тестову вибірки з відомими цільовими значеннями.

будинки тренувальна тестова

Навчання на тренувальній вибірці та обчислення метрик як для тренувальної, так і для тестової вибірок для порівняння продуктивності.

traintestresults
TrainTestVideo

Розподіл має бути випадковим. Зазвичай 20–30% виділяється для тестової вибірки, а 70–80% використовується для навчання. Scikit-learn надає простий спосіб зробити це.

TrainTestFunc

Наприклад, щоб розділити навчальну вибірку у співвідношенні 70% для навчання та 30% для тестування, можна використати наступний код:

from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
question-icon

На основі значень MSE для моделей визначте, чи є перенавчання або недонавчання на тренувальній вибірці (датасет однаковий).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Переобучення

Перенавчання

Розгляньте дві регресійні прямі нижче. Яка з них краща?

OverfittingExample

Метрики вказують, що друга модель краща, тому її використовують для прогнозування X_new = [0.2, 0.5, 2.7]. Але після порівняння прогнозів із фактичними значеннями перша модель показує кращі результати.

OverfittingPrediction

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

Недонавчання

Недонавчання виникає, коли модель занадто проста, щоб навіть підлаштуватися під тренувальні дані, що також призводить до неточних прогнозів на невідомих даних.

UnderfittingExample

Отже, можна спробувати визначити, чи модель недонавчається або перенавчається, візуально.

UnderGoodOver

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

Розділення на тренувальну та тестову вибірки

Щоб оцінити продуктивність на невідомих даних, ми розділяємо набір даних на тренувальну та тестову вибірки з відомими цільовими значеннями.

будинки тренувальна тестова

Навчання на тренувальній вибірці та обчислення метрик як для тренувальної, так і для тестової вибірок для порівняння продуктивності.

traintestresults
TrainTestVideo

Розподіл має бути випадковим. Зазвичай 20–30% виділяється для тестової вибірки, а 70–80% використовується для навчання. Scikit-learn надає простий спосіб зробити це.

TrainTestFunc

Наприклад, щоб розділити навчальну вибірку у співвідношенні 70% для навчання та 30% для тестування, можна використати наступний код:

from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
Все було зрозуміло?

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

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

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