Какая «информация» в векторах документов позволяет прогнозировать тональность?

Предсказание тональности на основе векторов документов работает довольно хорошо, как показывают примеры: https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-IMDB.ipynb http://linanqiu.github.io/07.10.2015/word2vec-sentiment/

Интересно, какая закономерность в векторах делает это возможным. Я подумал, что это должно быть как-то возможно благодаря подобию векторов. Меры подобия Gensim полагаются на косинусное сходство. Поэтому я попробовал следующее:

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

Похоже на это, где train / test_arrays содержат векторы документов и метки train / test_labels либо 0, либо 1. (Обратите внимание, векторы документов получены из genism doc2vec и хорошо обучены, предсказывая правильность набора тестов на 80%, если они непосредственно используются в качестве входных данных для логистическая регрессия):

fix_vec = numpy.random.rand(100,1)
def cos_distance_to_fix(x):
    return scipy.spatial.distance.cosine(fix_vec, x)

train_arrays_cos =  numpy.reshape(numpy.apply_along_axis(cos_distance_to_fix, axis=1, arr=train_arrays), newshape=(-1,1))
test_arrays_cos = numpy.reshape(numpy.apply_along_axis(cos_distance_to_fix, axis=1, arr=test_arrays), newshape=(-1,1))

classifier = LogisticRegression()
classifier.fit(train_arrays_cos, train_labels)
classifier.score(test_arrays_cos, test_labels)

Оказывается, этот подход не работает, прогнозируя набор тестов только на 50% .... Итак, мой вопрос в том, какая «информация» находится в векторах, что делает прогноз на основе векторов работающим, если это не так. сходство векторов? Или мой подход просто не позволяет уловить схожесть векторов правильно?


person M. Hahn    schedule 01.06.2017    source источник


Ответы (1)


Это не вопрос о Doc2Vec, а о принципах машинного обучения с многомерными данными.

Ваш подход сводит 100 измерений к одному измерению - расстоянию до вашей случайной точки. Затем вы надеетесь, что это единственное измерение все еще может быть предсказательным.

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

Возвращая это однопороговое расстояние обратно к исходному 100-мерному пространству, он, по сути, пытается найти вокруг вашей случайной точки гиперсферу, которая хорошо справляется со сбором всего одного класса внутри или вне своего объема.

Каковы шансы, что ваша случайно расположенная центральная точка плюс один регулируемый радиус сможет сделать это хорошо в сложном многомерном пространстве? Я догадываюсь: не много. И ваши результаты, не лучше, чем случайное предположение, похоже, говорят о том же.

LogisticRegression с доступом ко всем 100 измерениям находит границу различения для присвоения класса, который описывается 100 коэффициентами и одним значением перехвата, и все эти 101 значение (свободные параметры) могут быть скорректированы для повышения производительности классификации.

Для сравнения, ваша альтернативная LogisticRegression с доступом только к одному измерению «расстояние от случайной точки» может выбрать только один коэффициент (для расстояния) и перехват / смещение. В нем есть 1/100 объема информации, с которой можно работать, и всего 2 свободных параметра для настройки.

В качестве аналогии рассмотрим гораздо более простое пространство: поверхность Земли. Выберите «случайную» точку, например, Южный полюс. Если я затем скажу вам, что вы находитесь в неизвестном месте в 8900 милях от Южного полюса, можете ли вы ответить, где вы, скорее, находитесь в США или Китае? Вряд ли - оба этих «класса» местоположения имеют множество экземпляров в 8900 милях от Южного полюса.

Только в крайних случаях расстояние скажет вам наверняка, к какому классу (стране) вы принадлежите - потому что есть части Аляски и Гавайев в США, расположенные дальше к северу и югу, чем части Китая. Но даже там вы не сможете хорошо справиться с одним порогом: вам понадобится правило, которое гласит: «меньше X или больше Y в США; иначе неизвестно».

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

Тем не менее, аналогия с Землей предлагает путь вперед: на земном шаре есть некоторые ориентиры, которые будут работать лучше, когда вы знаете расстояние до них, при принятии решения, находитесь ли вы в США или Китай. В частности, очень хорошо подойдет точка в центре США или в центре Китая.

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

(Также: альтернативный выбор N нескольких случайных точек, а затем передача N расстояний в вашу регрессию, сохранит больше информации / формы исходных данных Doc2Vec и, таким образом, даст классификатору больше шансов найти полезный порог разделения. Два, вероятно, будут лучше, чем ваше одно расстояние, а 100 могут приблизиться к 100 исходным размерам или превзойти их.)

Наконец, несколько комментариев об аспекте Doc2Vec:

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

Это не обязательно будут две гигантские окрестности, «положительная» и «отрицательная», разделенные простой границей, или даже небольшое количество окрестностей, соответствующих нашим представлениям о трехмерных твердых объемах. И многие тонкости общения - такие как сарказм, отсылка к несогласованному мнению для его критики, уделение большего количества времени отрицательным аспектам, но в конечном итоге положительный вывод и т. Д. - означают вторжение в тексты альтернативных слов. Человек-агент, полностью понимающий язык, мог бы понять их, чтобы сделать вывод об «истинном» мнении, в то время как эти методы, основанные на словосочетании, по-прежнему будут путать.

Но при наличии адекватной модели и правильного числа свободных параметров классификатор может уловить некоторую обобщаемую информацию о многомерном пространстве. В этом случае вы можете добиться достаточно хороших прогнозов, используя размеры Doc2Vec - как вы видели с ~ 80% + результатов для полных 100-мерных векторов.

person gojomo    schedule 01.06.2017
comment
Спасибо за такой длинный ответ! Я понимаю, что вы говорите о сокращении размеров. Имеет смысл для меня. Но это также поворачивает для меня вопрос в противоположном направлении: если вектор имеет 100 измерений, каждое из которых несет полезную информацию для прогнозирования настроений, почему косинусное расстояние является хорошей мерой для семантически связанных предложений? Следовательно, можно ли обучить классификатор находить семантически связанные предложения и получать «лучшие» результаты с помощью меры косинусного расстояния? - person M. Hahn; 03.06.2017
comment
Косинусное расстояние - это обычная и простая мера сходства векторов с учетом нормированных направлений векторов без учета величины. Так получилось, что в базовой NN входные векторы с одинаковыми направлениями (косинусное расстояние 0,0) будут давать одинаковые ранжированные выходные прогнозы (только масштабированные по величине), а векторы с небольшими косинусоидальными расстояниями дают аналогичные прогнозы. Так что такое расстояние соответствует модели и, как оказалось, часто хорошо работает. (Тем не менее: если все векторы единично-нормированы, евклидово расстояние даст тот же рейтинг ближайших соседей.) - person gojomo; 04.06.2017
comment
возможно какое-то другое преобразование функций в исходных документах может, в сочетании с правильным классификатором, дать лучший конечный результат - более обобщаемый, более высокий при некоторой оценке. Возможно, «окрестности» настроений в исходном пространстве не могут быть четко разделены с помощью логистической регрессии, но могут быть разделены с помощью других синтезированных измерений или другой модели классификации. (Ваше преобразование 100d в одно значение радиуса по существу применяло ядро ​​radial basis - если классы были разделены сферой и был выбран правый центр, это было бы отличным подходом.) - person gojomo; 04.06.2017