Классификация векторных последовательностей

9

Мой набор данных состоит из векторных последовательностей. Каждый вектор имеет 50 вещественных измерений. Количество векторов в последовательности колеблется от 3-5 до 10-15. Другими словами, длина последовательности не является фиксированной.

Некоторое значительное количество последовательностей (не векторов!) Помечено меткой класса. Моя задача состоит в том, чтобы узнать классификатор, который дает последовательность векторов, вычисляется метка класса для всей последовательности.

Я не могу сказать точную природу данных, но природа последовательностей не является временной. Тем не менее, вектор нельзя заменить на вектор без изменения метки ( ). Другими словами, порядок векторов важен. Сами векторы сравнимы, например, имеет смысл вычислить скалярное произведение и использовать это значение подобия.ИксяИксJяJ

Мой вопрос: какие инструменты / алгоритмы могут помочь классифицировать такие данные?

ОБНОВЛЕНИЕ: у данных есть такое свойство, что один или очень немногие векторы сильно влияют на метку класса.

ВОЗМОЖНОЕ РЕШЕНИЕ: После некоторого исследования кажется, что Рекуррентные Нейронные Сети (RNN) отвечают естественным требованиям. Основная идея заключается в том, чтобы выбрать размер контекста , объединить векторы слов, выполнить максимальное объединение и передать его через классический NN. В каждой возможной позиции контекстного окна в предложении строится вектор признаков. Окончательный вектор объектов строится, например, с использованием максимального пула. Обратное распространение выполняется для настройки параметров сети. Я уже получил некоторые положительные результаты (GPU является обязательным).К

Владислав Довгальец
источник

Ответы:

3

Поскольку вы не можете раскрывать подробности, я вынужден быть немного общим в своем ответе. Я надеюсь, что это будет полезно, тем не менее. Прежде всего, я бы рассмотрел вопрос о сокращении последовательностей до классификации (будь то с помощью точечного произведения или чего-то еще), если вы можете быть уверены, что не потеряете информацию, необходимую для классификации в дальнейшем. Таким образом, этот подход возможен, только если у вас есть некоторое представление о природе классификации. В качестве простого примера: если метка класса - это просто число векторов в вашей последовательности, вам не очень удастся предсказать метку класса из точечного произведения.

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

Отсюда можно пройти две дороги: 1.) Вы применяете методы классификации, которые, как известно, подходят для больших размеров. Попробуйте что-нибудь простое, не требующее особой настройки, например, наивный Байес. Таким образом, вы можете увидеть, возможен ли такой подход, не теряя слишком много времени, если это не так. 2.) Сначала вы пытаетесь уменьшить размерность и лучше понять природу классификации. Возможно, вы захотите использовать что-то вроде анализа основных компонентов или анализа корреляции / ассоциации между каждым компонентом вектора и меткой класса. Если вы добились успеха, вы знаете, как правильно уменьшить размер вашего ввода перед применением классификации.

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

MightyCurious
источник
0

Данные обладают таким свойством, что один или очень мало векторов сильно влияют на метку класса.

Лучший (и самый простой) подход, вероятно, состоит в том, чтобы просто обучить классификатор по каждому вектору, а затем усреднить прогнозы по векторам для данной последовательности. Важные векторы будут сильно влиять на их прогнозы, тогда как прогнозы для неважных векторов будут близки к 0,5 (или аналогичны для задачи недвоичной классификации).

PIR
источник
На самом деле, нет. Особенно, если у вас много векторов без важной информации. Если вы идете по этому пути, то обязательно используйте LSTM :)
pir