Вопрос или проблема
Я работаю с двумя наборами текстовых данных, один из которых содержит 68 тысяч образцов текста, а другой – 100 тысяч образцов. Я закодировал текстовые наборы в векторы BERT.
Образец текста > 'Я работаю с NLP' ==> кодирование BERT ==> [0.98, 0.11, 0.12....n-ый]
# сырой текст 68к # кодирование BERT [68000, 1024]
Я хочу попробовать разные пользовательские модели NLP на этих векторах, но набор данных слишком большой, чтобы быстро тестировать производительность моделей.
Чтобы быстро проверить разные модели, лучший способ – взять небольшой поднабор данных из всей совокупности и подать его на разные алгоритмы. В конечном счете, выберите лучшие алгоритмы для подгонки под весь набор данных.
Я планирую отобрать как минимум 10 тысяч образцов из набора данных в 68 тысяч и 10 тысяч образцов из набора в 100 тысяч. Я могу случайным образом выбрать 10 тысяч из 68 тысяч, но этот метод не является самым лучшим для выборки.
Есть ли советы о том, как выбрать векторы (текст) из 68 тысяч образцов, сохраняя вероятностное распределение оригинальной популяции, и сколько образцов было бы достаточно для одного поднабора?
Спасибо!
Один из вариантов – пронумеровать каждый кусок текста, а затем случайным образом выбрать целое число из списка чисел. Это пропорционально выборочно отберет эмпирическое распределение.
«Сколько образцов?» зависит от разнообразия текстового набора данных. Если куски похожи, то стандартный совет – минимум 30 образцов. Если каждый кусок уникален, то вам придется учитывать каждый кусок.
Ответ или решение
Для выбора подмножества текстовых данных из ваших наборов с 68k и 100k образцов, действительно можно использовать различные методы выборки, которые помогут сохранить распределение вероятностей оригинальной популяции. Для этого рассмотрим несколько подходов:
1. Случайная выборка с сохранением пропорций
Для начала, можно воспользоваться простой случайной выборкой, но желательно проводить ее с учетом пропорций классов (например, если ваши данные имеют различные метки классов). Это обеспечит, что ваше подмножество будет представительным для всего набора данных. Вы можете использовать методы, такие как stratified sampling
, которые позволяют выбирать случайные образцы из каждого класса в пропорции к их распространению в полном наборе данных.
2. Систематическая выборка
Другие методы включают систематическую выборку. Вы можете создать список всех 68k образцов и затем выбрать каждый n-й элемент (где n определяется как размер полного набора данных, деленный на желаемый размер поднабора). Этот метод может оказаться полезным, если ваши данные распределены равномерно.
3. Выборка на основе кластеризации
Если вы хотите сохранить внутренние паттерны текста, рассмотрите использование кластеризации. Кластеры могут быть созданы на основе ваших BERT-векторов, и затем вы можете выбрать равное количество образцов из каждого кластера. Это гарантирует, что каждая категория текста будет представлена в вашем подмножестве.
4. Классификация текстов
Если у вас есть метки или категории для ваших текстов, вы можете выбрать отдельные классы и делать выборку в каждой категории с тем же соотношением, которое присутствует в полном наборе данных.
5. Увеличение выборки
Если у вас достаточно переключений в текстах (например, разные формулировки одного и того же сообщения), можно рассмотреть метод увеличения выборки. Однако, это применимо только в случае, если ваши тексты вариационно однородны.
Какое количество образцов выбрать?
Количество образцов зависит от разнообразия вашего набора данных. Если у вас есть высокое разнообразие текстов, рекомендуется выбирать по крайней мере 10% от общего числа. Однако, как минимум, 1000–5000 образцов должно быть достаточным для получения приемлемых результатов. Выбор 10k образцов, который вы уже планируете, может быть хорошим компромиссом, обеспечивающим представительность при достаточно больших числах.
Резюме:
- Используйте стратированный или случайный отбор при необходимости.
- Рассмотрите систематическую выборку или кластерную выборку для лучшего представления.
- Определите количество образцов исходя из разнообразия ваших данных, но старайтесь не опускать планку ниже 10k для уверенной оценки производительности моделей.
Желаю удачи в ваших экспериментах с моделями NLP!