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

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

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

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

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

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

Пробовал работать со следующими библиотеками: 1. PyStruct (https://pystruct.github.io/ ) Но у меня это не сработало из-за этой проблемы: bounds: подбор 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++, а также запустить примеры, приведенные в их дистрибутиве. Но мне нужна помощь в понимании того, как я могу изменить файл шаблона, чтобы он соответствовал моему варианту использования...

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

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

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

Спасибо!


comment
После запуска команды make install вы пытались запустить ldconfig?   -  person user2238884    schedule 27.03.2016
comment
Я выполнил шаги --with-lbfgs, приведенные здесь, которые позаботились о моей проблеме с CRFSuite! chokkan.org/software/crfsuite/manual.html   -  person Rookie    schedule 27.03.2016


Ответы (1)


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

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

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

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

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

person user2238884    schedule 27.03.2016