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