Команда Ендрю Нга одного разу зробила велику помилку у науковій статті. І це сталося через випадкове розділення даних. Ось що саме сталося (з рішенням):
Зазвичай генерують набори тренувань і валідації за допомогою випадкового розщеплення. Однак у багатьох випадках це може бути фатальним для створення моделей. Розгляньте можливість створення моделі, яка генеруватиме підписи до зображень. Через природу мови кожне зображення може містити багато різних підписів. - Зображення-1 → Підпис-1, Підпис-2, Підпис-3 тощо. - Зображення-2 → Підпис-1, Підпис-2, Підпис-3 тощо. Подивись на 👇 це
Якщо ми використовуємо випадкове розбиття, то одна і та ж точка даних (зображення) буде доступна в потягу та наборах валідації. В результаті ми отримуємо оцінку моделі на тих екземплярах, на яких вона була навчена. Це приклад витоку даних (також званого груповим витоком), що призводить до перенавчання!
Те саме сталося в статті Ендрю Нга, де вони підготували медичний набір даних для виявлення пневмонії. - Загальна кількість зображень = 112k - Загальна кількість пацієнтів = 30 тис. Через випадкове розщеплення зображення одного й того ж пацієнта були доступні як у навчальному, так і в валідаційному наборах. Це призвело до витоку даних, і оцінки валідації виглядали значно кращими, ніж мали б. Це їхня початкова стаття👇
Розподіл групового перетасування вирішив цю проблему. Є два кроки: 1) Згрупувати всі навчальні екземпляри, що відповідають одному зображенню. 2) Після групування ВСЯ ГРУПА (усі приклади одного зображення) має бути випадково призначена до поїзда або валідаційного набору. Це запобігатиме груповому витоку.
Якщо ви використовуєте Sklearn, GroupShuffleSplit реалізує цю ідею. Як приклад, розглянемо наступний набір даних: - x1 і x2 — це функції. - y — цільова змінна. - група позначає критерії групування. Подивись на 👇 це
Спочатку ми імпортуємо GroupShuffleSplit зі sklearn і створюємо об'єкт. Далі, метод split() цього об'єкта дозволяє виконати групове розщеплення. Він повертає генератор, і ми можемо розпакувати його, щоб отримати наступний вихід: - Точки даних у групах «A» і «C» розташовані разом у навчальному наборі. - Точки даних у групі "B" розташовані разом у наборі валідації/тестування. Подивись на 👇 це
Через кілька днів команда Ендрю Нга оновила статтю після застосування тієї ж стратегії розподілу груп, щоб гарантувати, що ті самі пацієнти не потраплять і до навчального, і до валідаційного набору. 👉 Слово вам: чи стикалися ви з такою проблемою раніше?
11,84K