Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Крос-валідація | Моделювання
Вступ до ML з Scikit-learn

bookКрос-валідація

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

  1. Обмежена навчальна вибірка: для навчання використовується лише частина даних, хоча більша кількість даних зазвичай покращує результати.
  2. Залежність від поділу: оскільки поділ відбувається випадково, результати можуть суттєво відрізнятися між запусками.

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

Спочатку розділіть увесь набір даних на 5 рівних частин, які називаються фолдами.

Далі використовуйте один фолд як тестову вибірку, а решту фолдів об'єднайте для формування навчальної вибірки.

Як і в будь-якому процесі оцінювання, навчальна вибірка використовується для навчання моделі, а тестова вибірка — для вимірювання її ефективності.

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

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

У Python оцінку крос-валідації можна обчислити за допомогою cross_val_score() з модуля sklearn.model_selection.

Note
Примітка

Хоча в цьому прикладі використовується 5 фолдів, ви можете обрати будь-яку кількість фолдів для крос-валідації. Наприклад, можна використати 10 фолдів, виділивши 9 для тренувальної вибірки та 1 для тестової вибірки. Це налаштовується за допомогою параметра cv у функції cross_val_score().

1234567891011
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
copy

Цей підхід забезпечує стабільніші та надійніші результати порівняно з методом поділу на тренувальну та тестову вибірки; однак він значно повільніший, оскільки вимагає навчання та оцінювання моделі п'ять разів (або n разів, якщо ви встановите n кількість фолдів), на відміну від одного разу при поділі на тренувальну та тестову вибірки.

Крос-валідація зазвичай використовується для налаштування гіперпараметрів, коли весь процес крос-валідації виконується для кожного можливого значення гіперпараметра.

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

question mark

Чому для оцінки ефективності моделі машинного навчання може віддаватися перевага крос-валідації над розділенням на навчальну та тестову вибірки?

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain how cross-validation improves model evaluation compared to train-test split?

What are some common use cases for cross-validation in machine learning?

How do I choose the number of folds for cross-validation?

Awesome!

Completion rate improved to 3.13

bookКрос-валідація

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

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

  1. Обмежена навчальна вибірка: для навчання використовується лише частина даних, хоча більша кількість даних зазвичай покращує результати.
  2. Залежність від поділу: оскільки поділ відбувається випадково, результати можуть суттєво відрізнятися між запусками.

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

Спочатку розділіть увесь набір даних на 5 рівних частин, які називаються фолдами.

Далі використовуйте один фолд як тестову вибірку, а решту фолдів об'єднайте для формування навчальної вибірки.

Як і в будь-якому процесі оцінювання, навчальна вибірка використовується для навчання моделі, а тестова вибірка — для вимірювання її ефективності.

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

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

У Python оцінку крос-валідації можна обчислити за допомогою cross_val_score() з модуля sklearn.model_selection.

Note
Примітка

Хоча в цьому прикладі використовується 5 фолдів, ви можете обрати будь-яку кількість фолдів для крос-валідації. Наприклад, можна використати 10 фолдів, виділивши 9 для тренувальної вибірки та 1 для тестової вибірки. Це налаштовується за допомогою параметра cv у функції cross_val_score().

1234567891011
import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
copy

Цей підхід забезпечує стабільніші та надійніші результати порівняно з методом поділу на тренувальну та тестову вибірки; однак він значно повільніший, оскільки вимагає навчання та оцінювання моделі п'ять разів (або n разів, якщо ви встановите n кількість фолдів), на відміну від одного разу при поділі на тренувальну та тестову вибірки.

Крос-валідація зазвичай використовується для налаштування гіперпараметрів, коли весь процес крос-валідації виконується для кожного можливого значення гіперпараметра.

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

question mark

Чому для оцінки ефективності моделі машинного навчання може віддаватися перевага крос-валідації над розділенням на навчальну та тестову вибірки?

Select the correct answer

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

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

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

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