【问题标题】:How to create Fuzzy Logic rules or model in Java如何在 Java 中创建模糊逻辑规则或模型
【发布时间】:2016-01-29 11:00:22
【问题描述】:

我在新工作中被赋予了一项新任务,基本上,我必须创建一个“模型”来预测未来的数据。有人告诉我 Fuzzy Logic 是最好的方法,而且我几乎每天都使用 Java,所以我也更愿意在这里使用它。

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

我还搜索了可以帮助我解决此问题的 API(例如,JFuzzyLogicJFuzzyLite),但这些 API 似乎都无法满足我的需求(或者也许是我拥有不知道我在寻找什么)。

我的想法是根据我拥有的数据动态地生成“规则”(它们共同构成一个模型)。 (我有不同结果的数据,这个模型会告诉我新数据是否属于一个结果或另一个,基本预测)。

我是否以正确的方式解决问题?是否有任何 Java API 具有此功能?

如果我错了,请告诉我,我想尽可能多地学习。

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

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

  • 所有有用的值都是数字(浮点数)(我过滤其余的)。
  • 每一行是特定片段的数据,每一列是一个属性(长度、宽度、高度......以及更多 67 个)。
  • 最后一列是一个代码(也是浮点数),说明它是什么类型
    • 这是我想要预测的结果。这个想法是根据其他列的值来预测一个片段将包含什么代码。

【问题讨论】:

  • 看起来像是分类任务。您能否详细说明您的确切问题?你的数据是什么样的?数字、图像、句子……?你想做出什么样的预测?
  • 我添加了更多细节,感谢您的建议,这绝对是必要的。

标签: java model machine-learning prediction fuzzy-logic


【解决方案1】:

这看起来像是一个标准的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,它有一个很好的linear regression class

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

【讨论】:

  • 我知道 weka,我以前使用过它(使用接口,而不是 java API)。现在我必须决定,使用 weka 还是按照老板说的去做。谢谢! :)
  • 我刚刚意识到,当我的最后一列 (Y) 必须是特定值时,线性回归是否有效。 (在我们的例子中,我们有 5 种类型,代码分别为 3002、3102、3202、3302、3402)。
  • 在这种情况下,它更像是一个分类问题,你有 5 个类(每个代码一个)。您可以改用逻辑分类器,WEKA 也有。
【解决方案2】:

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

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

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

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

这个库非常适合字符串相似度,但也可用于查找数值数据之间的相似度。我能够传入电话号码列表,并且能够识别相似的电话号码。

希望对你有帮助

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我在这里尝试通过中智模糊来模拟典型的服务员服务提示示例的模糊逻辑,link
    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多