【问题标题】:Most probable path taken to reach a particular node in graph到达图中特定节点的最可能路径
【发布时间】:2017-07-28 04:19:40
【问题描述】:

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

这些工作经常失败。我们根据输入知道特定作业失败的原因,但现在我们想找出用户(旅程)在到达失败作业之前所采取的路径。我们想看看我们是否可以大大改善之前的体验,从而避免失败。

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

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

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

给出最有可能到达 X 的 5 条路径。

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

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

增加一些清晰度 -

给定一个目标节点,我能否列出最可能的路径 以长度 5 到达它。我不知道开始的起点 迪杰斯特拉低概率的直接路径也可能从 给定起始节点,直接到目标节点,但我需要找到 长度为 5 的路径。

【问题讨论】:

  • 您只需要找到两个节点之间的所有路径(Login, X )。所有路径您可以使用 DFS 稍作修改即可找到两个节点之间的所有路径。 geeksforgeeks.org/find-paths-given-source-destination
  • 您可以创建具有三个状态的每个节点..并且仅从成功节点遍历。将每个节点视为三个节点..所以开始将是(Login_sucess_ node to x_success_Node)

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    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 个。

    【讨论】:

    • 谢谢 - 但是,我的问题是给定一个目标节点,我可以列出到达它的最可能路径,长度为 5。我不知道统计 dijkstra 的起点。此外,低概率的直接路径可能会从给定的起始节点直接退出到目标节点,但我需要找到长度为 5 的路径。
    • 好的,如果您需要找到它,那么在制作图形时,如果用户从 process1 转到 process2,只需制作从 p2 到 p1 的有向边,然后在您需要查找路径的任何节点上应用 Djkstra从和遍历时保持每个节点的计数与源节点的距离....如果您找到一个与源距离为 5 的节点,它将是最有可能的第一个节点,并且类似地可以找到其他节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2021-12-04
    • 2014-07-28
    相关资源
    最近更新 更多