Обучение последовательности с использованием условных случайных полей?

Я новичок в последовательном обучении (и машинном обучении) и пытаюсь понять, как использовать условные случайные поля для решения моей проблемы.

У меня есть набор данных, который представляет собой последовательный журнал того, когда и где работал конечный пользователь моего приложения. Например, следующий набор данных будет иметь значения только для User1

User   Facility   Weekday
User1  FacilityA  Monday
User1  FacilityB  Tuesday
User1  FacilityC  Wednesday
 ...     ...         ...

Я пытаюсь решить следующую проблему: учитывая какой день и день недели работал пользователь, на каком объекте и в будний день он будет работать дальше?

Чтобы решить эту проблему, я начал изучать условные случайные поля, но мне тяжело работать с любой библиотекой..

Я пытался работать со следующими библиотеками: 1. PyStruct ( https://pystruct.github.io/), но у меня это не сработало из-за этой проблемы: Индекс за пределами: Подгонка SSVM с использованием Pystruct

  1. CRFSuite ( http://www.chokkan.org/software/crfsuite/) (Это зависит от libBFGS. Когда я устанавливаю libbfgs на свой ящик с Ubuntu без каких-либо ошибок, запуск "make install" для CRFSuite все равно завершается неудачно и говорит, что он не может распознать libBFGS)

Поэтому я обратился к другой библиотеке.. 3. CRF++ ( https://taku910.github.io/crfpp/)

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

Кроме того, я думал, что мои метки будут составной строкой объекта + день недели из вышеуказанного набора данных.

Я новичок в обучении последовательности и в настоящее время стараюсь изо всех сил пытаться найти решение этой проблемы

Любой совет будет чрезвычайно полезен, поскольку я, кажется, немного застрял здесь..

Спасибо!

1 ответ

  1. Да, поскольку вы пытаетесь предсказать две метки ( Facility и Day), потребуется объединить метки. Кроме того, вы также можете изучить 2 разные модели для прогнозирования каждого ярлыка (см. Пункт 3).

  2. Я думаю, что вы должны смотреть на модели регрессии для этой проблемы, а не CRF.

  3. Я думаю, что расположение данных должно быть таким, чтобы история журнала пользователя была легко изучена. Можете ли вы рассказать мне "минимальную" историю, которую вы имеете для "любого" пользователя (последние 3 входа? 5 входов? 7 входов?)?

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

Если вы хотите пойти дальше и предсказать обе метки в одной модели, вы можете попробовать конкатенацию (в приведенном мною примере day теперь станет day_facility).

Другие вопросы по тегам