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