Крос-Валідація
У попередньому розділі для оцінки моделі використовувався поділ на навчальну та тестову вибірки. Цей метод має два основних недоліки:
- Обмежені навчальні дані: для навчання використовується лише частина набору даних, хоча більша кількість даних зазвичай покращує результати.
- Залежність від поділу: оскільки поділ є випадковим, результати можуть суттєво відрізнятися між запусками.
Для вирішення цих проблем використовується альтернативний метод оцінки — крос-валідація.
Спочатку розділити весь набір даних на 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-ближчих сусідів, повний цикл крос-валідації виконується для кожного кандидатного значення. Такий підхід забезпечує ретельну оцінку кожного налаштування гіперпараметра на всьому наборі даних, дозволяючи обрати значення, яке послідовно забезпечує найкращу продуктивність.
Дякуємо за ваш відгук!