如何在 Java 中创建模糊逻辑规则或模型

How to create Fuzzy Logic rules or model in Java

我在新工作中接到了一个新任务,基本上,我必须创建一个"model"来预测未来的数据。有人告诉我模糊逻辑是执行此操作的最佳方法,我几乎每天都使用 Java,所以我更愿意在这里也使用它。

我搜索了有关模糊逻辑的资料,大致了解了它是什么以及它是如何工作的(Here and Here)。

我也搜索了可以帮助我解决这个问题的API(例如,JFuzzyLogic and JFuzzyLite),但是none似乎可以做我想做的(也可能是我不知道自己在寻找什么)。

我的想法是根据我拥有的数据动态生成 "rules"(它们一起构成一个模型)。 (我有不同结果的数据,这个模型会告诉我新数据是属于一个结果还是另一个,基本预测)。

我处理问题的方式是否正确? Java API 有没有这个功能?

如有错误请指出,我要尽可能多学习

感谢大家阅读本文(您可能需要纠正我的英语错误,对此深表歉意)。

编辑(更多信息): 我的数据存储在 excel 中,每个大约有 5000 行和 75 列(列号始终相同):

这看起来像是一个标准的 regression 问题。您想要根据其他数字的值预测一个数字。

让我们称您的最后一列为 Y,所有其他列为 X_i。你想找到一个函数(你的模型),它根据 X 给你 Y。所以 Y = f(X)。您的模型可以采用多种形式。您可能应该从最简单的一个开始,即线性模型。

线性回归将尝试找到最好的 W_i 使得 :

Y = W_0 * X_0 + W_1 * X_1 + ... + W_n * X_n

所以你需要的是 Java 中的回归库。一个流行的是 WEKA, which has a good linear regression class.

关于模糊逻辑,我不是专家,但它似乎不太适合你的问题。

有一个 Java 模糊匹配算法,我发现它对类似的问题非常有用。我们有一行记录,其中每一列都是不同类型的元素。

https://github.com/intuit/fuzzy-matcher

例如,用户列表,具有(姓名、地址、phone)等属性,并希望预测哪些用户相似,查看输入每个数据的不同格式。

这个库将相似的行组合在一起,并给出相似行的概率分数(通过冒泡每个元素相似的分数)

此库非常适合字符串相似性,但也可用于查找数字数据之间的相似性。我能够传递 phone 个号码的列表,并且能够识别相似的 phone 个号码。

希望这对您有所帮助

你有 74 个输入和 1 个输出。但我担心的是,您想在这里使用哪种类型的模糊逻辑?像 1 型模糊、2 型或直觉模糊或中智模糊? 对于 Zadeh 1975 提出的 1 型模糊的基本模糊,每个输入参数只有一个函数,即隶属函数。通过使用直觉模糊,您将拥有两个函数,即隶属函数和非隶属函数,对于中智模糊,您将拥有三个函数,例如与所有输入参数关联的隶属函数、非隶属函数和不确定函数。在此之后,您将定义 if-then 规则。 If-then 规则通常是输入参数的隶属函数的变量值的乘积,例如,如果您有三个参数并且在 1 型模糊中,那么三个参数的所有隶属函数都包含低、中和高areas 那么您的规则的最大数量将是 27,但并非所有规则都将被定义。有些规则用处不大。所以在你的情况下你有很多规则。然后你需要一个去模糊器来获得清晰的输出。由于输入参数较多,我建议你,因为这是一个老问题,你已经完成了你的工作,所以任何人在相同情况下都必须使用 Type-1 模糊逻辑。