Как вы применяете SMOTE в текстовой классификации?

13

Техника избыточной выборки синтетического меньшинства (SMOTE) - это метод избыточной выборки, используемый в проблеме с несбалансированным набором данных. До сих пор у меня есть идея, как применить его к общим структурированным данным. Но возможно ли применить его к проблеме классификации текста? Какую часть данных вам нужно отбирать? Об этом уже есть другой вопрос , но у него нет ответа. Где я могу научиться этому?

catris25
источник

Ответы:

11

На самом деле, НЛП является одной из наиболее распространенных областей, в которых требуется повторная выборка данных, поскольку существует много задач классификации текста, связанных с несбалансированной проблемой (например, фильтрация спама, обнаружение оскорбительных комментариев, классификация статей и т. Д.). Но SMOTE кажется проблематичным по ряду причин:

  • SMOTE работает в пространстве функций. Это означает, что выходные данные SMOTE не являются синтетическими данными, которые являются реальным представителем текста в его пространстве признаков.
  • С одной стороны, SMOTE работает с KNN, а с другой стороны, функциональные пространства для проблемы НЛП чрезвычайно велики. KNN легко потерпит неудачу в этих огромных размерах.

Поэтому я могу предложить вам два подхода:

  1. Не волнует реальное текстовое представление новых синтетических образцов, которое, я полагаю, должно быть в порядке. Вы должны сбалансировать распределение для вашего классификатора, а не для чтения текстовых данных. Поэтому примените SMOTE как традиционный (однако я обычно использую решение 2 ниже, чтобы не оценивать результат!) С некоторым шагом по уменьшению размерности.

1) Предположим, вы хотите, чтобы ваши выборки данных из второстепенного класса удваивались с использованием 3-NN. Игнорируйте основной класс (ы) и оставляйте только второстепенные образцы.

2) Для каждой точки выборки в пространстве признаков выберите 5 ближайших соседей. Затем выберите 3 из них случайным образом (не слишком ли это сложно? Если бы я не хотел объяснять оригинальный алгоритм, я бы сказал, просто выберите 3 соседей!)

3) Для каждого измерения вычислите расстояние между образцом и соседями, умножьте его на случайное число от 0 до 1 и добавьте к исходному значению образца в этом измерении. (этот сложный абзац просто означает, что для каждого измерения выберите случайное значение между исходным образцом и соседом!)

  1. Но я обычно делаю другую передискретизацию, которая находится в тексте (более интуитивно понятная) и является своего рода SMOTE.

1) Игнорировать основной класс. Получите распределение длины всех документов в младшем классе, чтобы мы генерировали новые образцы в соответствии с истинной длиной документа (количество слов / фраз). Мы предполагаем, что хотим сделать размер класса тройным (таким образом, получая синтетических документа на исходный документ)k=2

2) Генерация последовательности из случайных целых чисел в соответствии с этим распределением. Используется для определения длины нового синтетического документа.n

3) Для каждого документа: выберите одно целое число из последовательности случайной длины и случайного документа, длина которого близка к целому числу. Положите токены всех документов в набор и случайным образом выберите токенов раз. это ваши новые документы.м н к кmmnkk

Касра Маншаи
источник
Спасибо за ответ, но можно ли использовать SMOTE для семплов, если они представлены с использованием однократного кодирования? или они должны быть представлены по-другому?
adnanmuttaleb
Привет Касра, не могли бы вы рассказать о некоторых реализациях, связанных с упомянутыми вами шагами
Payal Bhatia,
2

Если вы хотите добавить больше текста / предложений, вы можете использовать предварительно обученные вложения слов. Предварительно обученные модели, такие как, обеспечивают представление вектора слов для каждого словарного слова. Он также предоставляет слова «Most_smiliar».

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

Например, если в вашем предложении 3 слова, и если вы выбираете 3 наиболее похожих для каждого слова, вы можете повысить выборку в 27 раз.

Яшодхан Павар
источник
Привет Яшодхан, как мы можем использовать этот процесс, если он зависит от домена? Спасибо
Паял Бхатия