Я создаю инструмент, который позволяет пользователям рекомендовать последовательности онлайн-курсов другим пользователям.
На обороте данных, сгенерированных из этого, я хотел бы получить представление о наиболее рекомендуемых последовательностях курсов. Вот кусок модели:
На этом графике цифры зеленого цвета - это веса, которые показывают, сколько людей рекомендовали один курс за другим (например, 655 человек рекомендуют принимать ML Стэнфорда после вступления к пробе)
Поле recs
в узлах - это абсолютное количество рекомендаций, которые есть в курсе (например: Stanford ML был выбран 1000 пользователями в последовательных последовательностях)
То, что я хотел бы сделать, это начать с конечной цели, выяснить наиболее рекомендуемые предварительные условия.
Алгоритм может работать примерно так:
Function fancy_algo (node, graph)
If (no prereqs OR prereq weight is very low)
Return graph
Get all incoming nodes
For each incoming node subject
MR = most recommended pre-req
Append MR to graph
fancy_algo(MR, graph)
Конечное состояние для человека, желающего заниматься машинным обучением в Стэнфорде, может выглядеть примерно так:
Обратите внимание, что после «Введение в CS» мы не включили «Алгебру», потому что ее предварительный вес был очень низким (20 из 4567).
Это что-то, чем можно управлять с помощью Cypher? Как бы я начал?