Введение

То, как вы создаете свои подмножества данных для своего проекта глубокого обучения, имеет важное значение и имеет большое значение для конечной производительности модели. Чтобы рассмотреть некоторые основы, Andrew Ng и Deeplizard подготовили отличные вводные обзоры:

Как описано в видеоролике Deeplizard выше, создание разделений данных обычно включает в себя случайное перемешивание данных и последующее их разделение на подмножества для обучения, проверки и тестирования. Во многих библиотеках это даже встроено (например, функция подгонки Keras). Когда размер вашей выборки исчисляется тысячами (или, если вам повезет, миллионами!), вы вряд ли случайно сгенерируете асимметричное распределение, но что, если у вас есть набор данных с 40 или 50 пациентами?

Небольшие проблемы с данными

Медицинские наборы данных часто имеют небольшой масштаб, поэтому при разработке сплитов требуется особое внимание. При наличии всего нескольких образцов случайное разделение может привести к проверочному набору, который сильно отличается от вашего тестового набора, и, что еще хуже, тестовому набору, который в конечном итоге отличается от данных, которые вы можете ожидать. найти в дикой природе. Кроме того, как предлагает Орельен Жерон, лучше всего оценивать производительность вашего подмножества тестов удержания после того, как вы обучили (и зафиксировали) свою оптимальную модель, чтобы избежать систематической ошибки — в его книге есть отличный обзор некоторые другие полезные соображения.

В конечном счете, это означает, что вы можете не осознавать, что у вас есть проблема с распределением данных по разбиениям, до поздней стадии экспериментального рабочего процесса.



Как решить эту проблему с малыми данными? …

Использование стратификации по нескольким меткам

Как описано выше, обычная практика работы с большими наборами данных заключается в разбиении ваших данных на подмножества после случайного перемешивания, однако это может привести к проблемам с небольшими выборками. Чтобы преодолеть это, мы можем заставить наши разделения равномерно перетасовывать функции, представляющие ключевой интерес при обучении/валидации/тестировании. Чтобы узнать, как это сделать, просмотрите блокнот, который я написал ниже. Записная книжка представляет собой простой сквозной пример и может быть легко адаптирована к более сложным наборам данных.

К концу этой записной книжки вы увидите, как избежать дисбаланса распределения при создании подмножеств с помощью библиотеки scikit-multilearn.

Вывод

Для небольших наборов данных стоит приложить усилия для оптимизации подмножеств обучения/проверки/тестирования таким образом, чтобы ключевые функции, представляющие интерес, были равномерно распределены. В созданной мной записной книжке я упоминаю объем опухоли в качестве теоретического примера, но его можно легко распространить и на другие характеристики, например возраст, пол и т. д. Вероятно, оптимально сосредоточиться на нескольких ключевых характеристиках, чтобы вы по-прежнему в значительной степени уважают процесс рандомизации.

Примечание автора

Этот пост является первым из более запланированных статей по глубокому обучению и медицинским исследованиям. Если у вас есть предложения, связанные с содержанием, поделитесь ими в комментариях ниже, и я сделаю все возможное, чтобы включить их в исправление или последующий пост. Наконец, если вам был полезен этот контент, поддержите статью, поделившись ею, похлопав в ладоши (несколько раз!) или оставив отзыв в комментариях ниже.

Спасибо за прочтение :) Подписывайтесь на меня на Medium или Twitter, чтобы быть в курсе.