首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新设计过程决策引擎以利用机器学习(以及哪个)

重新设计过程决策引擎以利用机器学习(以及哪个)
EN

Software Engineering用户
提问于 2018-09-09 06:01:08
回答 2查看 75关注 0票数 2

我不确定这是否是正确的论坛,但我真的在寻求有关这方面的建议。

我们有一个过程决策引擎,这是相当初级的,用来决定应用程序的路由。它基本上是串联的多个if-else语句(其中大约有30个)。例如:

代码语言:javascript
复制
if (application.isBlue && (!configs.isBlueAllowed)) { return 1 } ....

此外,我们还将介绍不同的标记和流。例如,如果应用程序包含标记blah,那么它应该跳过一些if-else语句,然后转到不同的处理中心。

我们天真的方法似乎已经达到了极限(当然我们可以更多地切换,但它既不优雅也不漂亮)。

假设这是正确的论坛,请您评论:

  • 这种类型的应用程序/进程是否从ML方法(如监督排序)中受益?
  • 如果#1是真的,那么哪种ML方法最适合这样做?
EN

回答 2

Software Engineering用户

发布于 2018-09-09 08:30:09

这不是提出这个问题的正确方法。

我怀疑您真正想知道的是机器学习是否可以用于改进您的应用程序。有可能。可能不会。我不知道,因为这不是你要求的。

您要问的是,它是否可以改进“过程决策引擎”。这不是要求。这是一个实现。你是在告诉我们问题是怎么解决的,而不是问题是什么。

我相当肯定ML可以用来解决这个类的所有问题。ML可用于异或的求解。每当你需要一个异或时,你都会疯狂地接触到ML。

明白机器收益的力量并不在于它能解决逻辑问题。它可以找到解决逻辑问题的方法,而不需要人类来处理每一个环节。

30 if-else语句听起来可能听起来很多,如果组织得很糟糕,肯定是这样。但是机器学习是微不足道的。不过,这些信息还不足以打电话。

此外,我们还将介绍不同的标记和流。例如,如果一个应用程序包含标签blah,那么它应该跳过一些if-else语句,然后转到不同的处理中心。

这句话让我觉得你最有可能从引入好的老式分解和多态中获益。查找谓词是什么。如果您在一个过程中有30个if-else语句,其中许多语句需要跳过,那么您很可能在一个地方做了很多事情。分手吧。使许多功能和对象只接受他们所需要的,而不主动去学习他们自己的东西。让他们每人只做一件事。

但在进行所有这些重构之前,请编写一些测试,以证明这些东西的工作效果与以前一样好。这样,当你认为你的新设计和旧的设计一样的时候,你就会是对的。

现在已经有了一些测试和新的设计,是时候尝试为新的标记和流添加新的测试了。新的设计应该使添加它们更容易。

但是如果您想让我们评估ML是否是解决这个问题的好方法,那么我们需要更多的信息,然后是如何解决这个问题的。它究竟决定了什么?

票数 2
EN

Software Engineering用户

发布于 2018-09-09 15:00:41

我们天真的方法似乎已经达到了极限(当然我们可以更多地切换,但它既不优雅也不漂亮)。

你能使用ML技术吗?是。

我认为您的问题是当输入{P}和计算引擎C变得太复杂时(“不优雅也不漂亮”)。当您有一个定义良好的输入{P}和输出{Q}时,可以使用ML技术获得C“免费”。

基本上,您需要做的是将您的“应用程序”、“信任”转换为具有数值的数据集,例如,布尔值表示"isBlue“、"isBlueAllowed”等,以及所需的“结果”。您必须为所有可能的配置和结果创建此数据集。这是需要得到紧密的拟合数据,所以结果将是确定性的。

此时,当您有这样的数据集时,计算引擎不需要是复杂的,也就是说,它可以像数据集和某个过滤器之间的逻辑计算一样简单,或者如果它更复杂,可以是一些涉及矩阵的操作。只要输出匹配{Q},我们可能不太关心这个计算是什么。

你的下一项工作是决定如何获得计算引擎C。老实说,会有很多,你必须自己测试才能做出决定。在这一点上,速度可能是最大的考虑因素。

问题是,您有一个决策树,您希望能够生成它,而不是更新代码。最流行的决策树生成器之一是C4.5

将来当您需要添加另一个配置属性时,只需更新数据集,并更新您所选择的任何算法的模型。

整个过程就是如何应用ML,这并不难。如果要进行比较,则需要在维护培训数据集{P}与开发和维护一段软件之间进行比较。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/378176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档