Крос-валідація
У попередньому розділі для оцінки моделі використовувався поділ на навчальну та тестову вибірки. Цей метод має два основні недоліки:
- Обмежена навчальна вибірка: для навчання використовується лише частина даних, хоча більша кількість даних зазвичай покращує результати.
- Залежність від поділу: оскільки поділ відбувається випадково, результати можуть суттєво відрізнятися між запусками.
Щоб вирішити ці проблеми, застосовується альтернативний метод оцінки — крос-валідація.
Спочатку розділіть увесь набір даних на 5 рівних частин, які називаються фолдами.
Далі використовуйте один фолд як тестову вибірку, а решту фолдів об'єднайте для формування навчальної вибірки.
Як і в будь-якому процесі оцінювання, навчальна вибірка використовується для навчання моделі, а тестова вибірка — для вимірювання її ефективності.
Процес повторюється так, щоб кожна складка один раз виступала як тестова вибірка, а решта складок формували навчальну вибірку.
Цей процес дає п’ять показників точності, по одному з кожного розбиття. Обчислення середнього значення цих показників дає середню ефективність моделі.
У Python оцінку крос-валідації можна обчислити за допомогою cross_val_score()
з модуля sklearn.model_selection
.
Хоча в цьому прикладі використовується 5 фолдів, ви можете обрати будь-яку кількість фолдів для крос-валідації. Наприклад, можна використати 10 фолдів, виділивши 9 для тренувальної вибірки та 1 для тестової вибірки. Це налаштовується за допомогою параметра cv
у функції cross_val_score()
.
1234567891011import 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())
Цей підхід забезпечує стабільніші та надійніші результати порівняно з методом поділу на тренувальну та тестову вибірки; однак він значно повільніший, оскільки вимагає навчання та оцінювання моделі п'ять разів (або n разів, якщо ви встановите n кількість фолдів), на відміну від одного разу при поділі на тренувальну та тестову вибірки.
Крос-валідація зазвичай використовується для налаштування гіперпараметрів, коли весь процес крос-валідації виконується для кожного можливого значення гіперпараметра.
Наприклад, при визначенні оптимальної кількості сусідів у алгоритмі k-ближчих сусідів, ви виконуєте повний цикл крос-валідації для кожного кандидатного значення. Такий підхід забезпечує ретельну оцінку кожного налаштування гіперпараметра на всьому наборі даних, дозволяючи обрати значення, яке послідовно забезпечує найкращу продуктивність.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Крос-валідація
Свайпніть щоб показати меню
У попередньому розділі для оцінки моделі використовувався поділ на навчальну та тестову вибірки. Цей метод має два основні недоліки:
- Обмежена навчальна вибірка: для навчання використовується лише частина даних, хоча більша кількість даних зазвичай покращує результати.
- Залежність від поділу: оскільки поділ відбувається випадково, результати можуть суттєво відрізнятися між запусками.
Щоб вирішити ці проблеми, застосовується альтернативний метод оцінки — крос-валідація.
Спочатку розділіть увесь набір даних на 5 рівних частин, які називаються фолдами.
Далі використовуйте один фолд як тестову вибірку, а решту фолдів об'єднайте для формування навчальної вибірки.
Як і в будь-якому процесі оцінювання, навчальна вибірка використовується для навчання моделі, а тестова вибірка — для вимірювання її ефективності.
Процес повторюється так, щоб кожна складка один раз виступала як тестова вибірка, а решта складок формували навчальну вибірку.
Цей процес дає п’ять показників точності, по одному з кожного розбиття. Обчислення середнього значення цих показників дає середню ефективність моделі.
У Python оцінку крос-валідації можна обчислити за допомогою cross_val_score()
з модуля sklearn.model_selection
.
Хоча в цьому прикладі використовується 5 фолдів, ви можете обрати будь-яку кількість фолдів для крос-валідації. Наприклад, можна використати 10 фолдів, виділивши 9 для тренувальної вибірки та 1 для тестової вибірки. Це налаштовується за допомогою параметра cv
у функції cross_val_score()
.
1234567891011import 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())
Цей підхід забезпечує стабільніші та надійніші результати порівняно з методом поділу на тренувальну та тестову вибірки; однак він значно повільніший, оскільки вимагає навчання та оцінювання моделі п'ять разів (або n разів, якщо ви встановите n кількість фолдів), на відміну від одного разу при поділі на тренувальну та тестову вибірки.
Крос-валідація зазвичай використовується для налаштування гіперпараметрів, коли весь процес крос-валідації виконується для кожного можливого значення гіперпараметра.
Наприклад, при визначенні оптимальної кількості сусідів у алгоритмі k-ближчих сусідів, ви виконуєте повний цикл крос-валідації для кожного кандидатного значення. Такий підхід забезпечує ретельну оцінку кожного налаштування гіперпараметра на всьому наборі даних, дозволяючи обрати значення, яке послідовно забезпечує найкращу продуктивність.
Дякуємо за ваш відгук!