计算通知的效用

数据挖掘 初学者
2022-02-18 16:26:38

我不知道这是否是发布此问题的正确 StackExchange 风格,但这里是:

我有一个代理(一个侦听事件流的 IRC 机器人),我想向其中添加“智能通知”。让我举一个具体的例子。

该机器人监控来自我们持续集成系统的结果,因此它基本上会看到与更改相关联的测试结果流(并且更改与用户相关联。)如果我要求它通知我有趣的事件,那么对于它看到的每个事件,它决定是否告诉我这件事(或者更确切地说,关于目前的结果。)

我希望它根据某件事对我来说有多有趣来决定。如果(1)它是我推送到持续集成系统的更改的结果,(2)它是一个测试失败,并且(3)该失败传达的信息是我的更改是否是一个重要指标很糟糕。

测试具有无故失败的基线概率(“间歇性失败”)。如果一项测试失败,并不一定意味着我的更改不好。这可能只是一个不稳定的测试。(任何给定的推动往往会导致几个虚假的故障,所以这不是一些模糊的边缘情况。)但是间歇性故障的基线概率根据运行的测试套件而变化(我们有几十个不同的测试套件触发每次推送的更改。)

所以我不想被那些可能只是噪音的测试失败的报告所困扰。如果我的推送糟糕,我不希望每次失败的测试都被通知淹没。(如果我破坏了某些东西,它可能会出现在多个测试套件中。因此,如果代理看到两次失败和 20 次成功,也许它不会打扰我,但如果它看到另一个或两次失败,它应该。)

我想象我可以查看先验概率和后验概率之间的变化,并用它来估计新测试结果的熵,也许还可以计算我的个人熵(如果这有任何意义的话——就像机器人应该假设的那样在它通知我之前我不知道任何结果是什么,此时它应该假设我知道当前的完整结果集并且不会再次打扰我,直到有足够的额外结果来显着改变概率估计我的改变很糟糕。)

或类似的东西。我真的在寻找合适的数学框架来计算这样的东西。我对机器学习或……嗯,一般的数学几乎一无所知。

(上面是简化的;我还想做一些疯狂的事情,比如考虑“标签”,第三方查看测试失败并确定它们是否是真正的失败。但是失败之间的时间和当那个人为我标记它时,也可以通过分布建模,如果这个人很有可能告诉我结果并不有趣,我想推迟通知有趣的结果。但只有如果这将“很快”发生。此外,我们有一个自动化系统来猜测某些事情是否可能是间歇性故障还是真正的故障,并且最好也考虑到它的意见。)

1个回答

那里有好主意。但是,首先从简单的事情开始,然后在您已经有了一些工作并且对解决方案进行了一些人工反馈后,再逐步升级到更复杂的系统。

更简单的解决方案只是速度检查 - 如果每 Y 秒有 X 次失败,则发送通知。从您的帖子看来,20 秒时间窗口内的 3 次失败应该是一个好的开始。让这种系统运行需要相当多的修改——计算窗口函数等。

祝你好运 :)