到达图

时间:2017-07-28 04:19:41

标签: algorithm machine-learning graph-theory graph-algorithm prediction

我们有一个系统,客户来到这里并进行交互,触发工作并执行许多操作。我们有1000多个这样的用户。每个作业都有一个名称,我们的后端数据库包含有关客户交互的所有数据。

这些工作经常失败。我们知道为什么特定的工作根据其输入而失败,但现在我们想要找到用户(旅程)在到达失败工作之前所采取的路径。我们希望看看我们是否可以提前改善体验,以避免失败。

示例(假设),login->创建文件 - >保存文件 - >下载文件。下载文件失败,但有一些错误。说这通常发生在保存刚刚完成时。如果您在保存文件和下载之间进行了一些操作,那么下载不会失败。这可能是一个隐藏的错误。

问题是 - 给定3000个用户图形遍历的历史记录(采用大小为5的路径[作为移动窗口])构建一个系统,当被问及时**

  

“到达节点X的最可能路径是什么”

提供了前5个最有可能达到X的路径。

我已将节点创建为[jobName] [State],例如,loginSuccess-> createFileSuccess-> SaveFileSuccess-> DownloadFailed。 X通常是我们将查询的[作业名称]失败节点。 我们有大约50个工作岗位和3个州,成功,取消失败。

知道如何构建此模型,使用哪种算法,以及如何在询问节点时反向生成概率?

添加更多清晰度 -

  

给定目标节点,我可以列出最可能的路径   达到它的长度5.我不知道开始的起点   Dijkstra的。低概率的直接路径也可能从a退出   给出起始节点,直接到目标节点,但我需要找到   长度为5的路径。

2 个答案:

答案 0 :(得分:0)

我将采取的第一步是构建一个长度为5的记录列表,其中每个记录包含一个特定客户在节点X之前采取的5个步骤。然后,您可以简单地对此列表进行排序并计算每个可能记录发生在其中的次数,以计算出最受欢迎的记录。

另一种方法是为每个退出节点的边分配一个分数,该分数是退出该节点以通过该边缘退出的路径的一部分。然后通过将其边缘的分数相乘来计算路径的总分,并再次将观察到的路径分数最高。

答案 1 :(得分:0)

根据我的理解,您需要找到最可能由用户跟踪的路径,并且您可以为每个流程创建节点,并且如果客户从一个流程转到另一个流程,则两个流程相互连接。

STEP 1. Construct a graph for all 3000 users which will be a weighted graph 
        (as such weight of an edge will be number of times a user goes from 
        one process to another, so each time you find an already built edge 
        increment its weight by 1 or else make a new edge with weight =1)

现在,找到从源节点到另一个

的最可能路径
STEP 2. Apply Dijkstra's algorithm but with small change.
        Dijkstra's algo find smallest path from one node to every other 
        node,so you need to find maximum path from one node to another.

我认为,它应该可以工作,因为所有边缘都具有正重量,并且它将为您提供所有用户从一个节点到另一个节点的最可能路径,并且您可以轻松地从源节点到目标节点轻松获取所有节点的数据

但它只会给你最可能的路径而不是前5名。