Крос-валідація
Свайпніть щоб показати меню
Розділення на навчальну та тестову вибірки має два недоліки:
- Менше навчальних даних, що може знизити якість моделі;
- Залежність від випадкового розділення, що призводить до нестабільних результатів. Щоб уникнути цього, використовується крос-валідація.
Спочатку весь набір даних ділять на 5 рівних частин, які називають фолдами.
Далі використовуйте одну підмножину як тестову вибірку, а решту підмножин об'єднайте для формування навчальної вибірки.
Як і в будь-якому процесі оцінювання, навчальна вибірка використовується для навчання моделі, а тестова вибірка — для оцінки її ефективності.
Процес повторюється так, щоб кожна підмножина один раз виступала тестовим набором, а решта підмножин формували навчальний набір.
Крос-валідація створює кілька показників точності — по одному для кожного розбиття.
Їхнє середнє значення відображає середню ефективність моделі.
У Python це обчислюється за допомогою cross_val_score().
Можна обрати будь-яку кількість фолдів. Наприклад, використання 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 разів.
Вона широко використовується для налаштування гіперпараметрів, коли крос-валідація повторюється для кожного значення гіперпараметра — наприклад, тестування кількох значень k у k-NN.
Це допомагає обрати варіант, який стабільно показує найкращі результати.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат