基于给定问卷的答案的解决方案查找算法

3
考虑以下情景:
1.潜在客户被呈现出一个问卷调查,他们可以针对每个问题选择零个、一个或多个答案。
2.自动算法应根据客户的答案推荐最佳解决方案。
例如:
1.有3种可能的解决方案S1、S2和S3。
2.问卷包含10个问题Q1、Q2………Q10。
3.每个问题都包含多个可能的答案,其中:
A1.1是问题1的第一个答案。
A3.2是问题3的第二个答案。
4.我希望能够根据客户提供的答案来建模以下解决方案:
A1.1、A1.3、A2.1、A3.2 => S1
A1.1、A1.3、A2.2 => S1
A1.2 => S2
A2.2 => S2
A1.1、A3.1、A3.2 => S2
任何其他组合 => S3
总之:
对于给定的答案集,必须推荐一种解决方案。
较少答案定义的解决方案应优先于较多答案定义的解决方案。
我正在寻找上述问题的现有算法(和数据模型),而不是尝试从头编写自己的算法。

仅从问题描述来看,我会选择一系列if语句。你为什么认为你需要一个算法? - user180326
如果你有57个解决方案、112个问题和378个答案,那么这将会是一系列非常冗长的语句。 - John
@John 在 CashCommons 上说:是的,我知道,但我不想假设。 - user180326
这个例子只是问题的简化。我正在设计一个系统,允许管理员定义他们的问卷调查、解决方案,并根据答案定义如何推荐解决方案。同样的系统将向客户呈现问题并自动推荐解决方案。 - JCallico
2个回答

1

尝试最简单的可能有效的方法是最近邻算法:计算新答案集与每个已知解决方案的答案集之间的相似度(如果您想要加权,则按答案总数加权),并从一组同样接近的答案集中提供最常选择的已知解决方案。

如果这种方法表现不佳,那么您需要更复杂的分类器。您应该查找决策树(以及它们的扩展,交替决策树和随机森林)和贝叶斯分类器等内容。

您可以在机器学习或神经网络工具箱中找到一些代码。由于您没有指定语言,因此我无法指向一个,但是这些算法(而不是代码)在Hastie、Tibshirani和Friedman的《统计学习基础》等各种书籍中有描述。


0
在我看来,这更像是一种声明性逻辑程序,而不是组合或统计问题。只需将有关选择哪个解决方案的陈述反转,并将"=>”替换为“:-”,就可以得到Prolog。
这些语句是Horner子句,可以使用SLD解析算法解决,前提是你的规则简单明了。有许多现成的求解器与不同语言的绑定,所以你可以选择其中一些。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接