Последовательность моделей Word2vec - PullRequest
0 голосов
/ 18 октября 2018

Я работаю над набором данных с более чем 100 000 записей.Вот как выглядят данные:

email_id    cust_id campaign_name
123         4567     World of Zoro
123         4567     Boho XYz
123         4567     Guess ABC
234         5678     Anniversary X
234         5678     World of Zoro
234         5678     Fathers day
234         5678     Mothers day
345         7890     Clearance event
345         7890     Fathers day
345         7890     Mothers day
345         7890     Boho XYZ
345         7890     Guess ABC
345         7890     Sale

Я пытаюсь понять последовательность кампании и предсказать следующую возможную кампанию для клиентов.

Предположим, я обработал свои данные и сохранил ихв 'camp'.

С Word2Vec-

from gensim.models import Word2Vec

model = Word2Vec(sentences=camp, size=100, window=4, min_count=5, workers=4, sg=0)

Проблема этой модели заключается в том, что она принимает токены и выплевывает текстовые токены с вероятностями взамен при поиске сходства.

Word2Vec принимает эту форму ввода -

['World','of','Zoro','Boho','XYZ','Guess','ABC','Anniversary','X'...]

И дает эту форму вывода -

 model.wv.most_similar('Zoro')
[Guess,0.98],[XYZ,0.97]

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

Мой ввод должен быть в виде -

[['World of Zoro','Boho XYZ','Guess ABC'],['Anniversary X','World of 
Zoro','Fathers day','Mothers day'],['Clearance event','Fathers day','Mothers 
day','Boho XYZ','Guess ABC','Sale']]

Выходных данных -

model.wv.most_similar('World of Zoro')
[Sale,0.98],[Mothers day,0.97]

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

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 18 октября 2018

Я не верю, что word2vec является правильным подходом для моделирования вашей проблемы.

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

word2vec стремится предсказать слово, котороечаще встречается в сочетании с целевым в движущемся окне (в вашем коде: window = 4).Таким образом, он не предскажет наилучший возможный следующий выбор, кроме того, который чаще всего встречался в промежутке окна данного слова.

При вызове word2vec (Word2Vec (предложения = лагерь, размер = 100, окно = 4, min_count = 5, работники = 4, sg = 0)) вы также используете min_count = 5, поэтому модельигнорирование слов с частотой менее 5. В зависимости от размера вашего набора данных может произойти потеря релевантной информации.

Предлагаю взглянуть на методы прогнозирования и методы анализа временных рядов.У меня есть ощущение, что вы получите лучший прогноз, используя эти методы, а не word2vec.(https://otexts.org/fpp2/index.html)

Надеюсь, это поможет

...