-
Notifications
You must be signed in to change notification settings - Fork 1
Audience model
В Толоке пользователи взаимодействуют с заданиями, это приводит к какому-то воздействию на поведение пользователя. Пусть пользователь и задание задаются векторами одинаковой длины, а их скалярное произведение и есть оказываемое на пользователя воздействие. У каждого пользователя свой индивидуальный вектор, который будет получаться в ходе оптимизации. Все задания принадлежат какому-то проекту, и, предполагается, что внутри проекта задания похожи. Пусть проект задается некоторым многомерным распределением с вектором параметров \alpha. Тогда задания проекта получаются сэмплированием из соответствующего распределения.
Поведение пользователя в системе выглядит так: делается последовательность проектов (возможно, с повторяющимися элементами) {pr}_q^{PR}, в каждом из которых выполняется последовательность заданий {t}_k^{K_q}. Известно время начала и конца выполнения каждого задания, а значит есть такие же времена и для проектов. Введем вероятность $ p(\tau|u,q) $ - вероятность пользователя u вернуться на проект q через время $ \tau $.
Пока что будем считать эту вероятность как в случаях, когда пользователь ушел из проекта на длительное время, так и в случаях, когда он делает подряд задания одного проекта. Мне кажется, что нужно разделять эти две вещи, например введя вероятность того, что пользователь продолжит выполнять задания этого проекта, но пока пусть будет первый вариант, чтобы не усложнять.
Мне кажется, что для упрощения пока что можно считать, что пользователь вернулся в проект, если между прошлым разом, когда он выполнял задания с того проекта прошло какое-то (продолжительное) время или между ними выполнялись другие задания. Учитывание заданий, выполняемых внутри проекта будет происходить только в $ \lambda $, которое отражает "текущий настрой".
Посчитаем правдоподобие: $ \sum_{u}^{U}{\sum_{q}^{PR}{\log p(t_q - t_q^{-1})}} $, где $ t_q^{-1} $ означает время конца выполнения этого же проекта q в прошлый раз. Вероятность пользователя зайти на проект через определенное время $ p(\tau|u, q) = \frac{\sum_{pr}^{q}{e^{- \beta (t_q - t_pr)} \sum_{k}^{K_q}{u^T a_pr_k}}}}{\sum_{pr}^{q}{e^{- \beta (t_q - t_pr)}}} $.
Теперь, если посчитать производную по a_q и u, можно градиентным спуском оптимизировать эти вектора, получив в итоге вектора для каждого пользователя и вектор параметров распределений проектов.