【问题标题】:Separation and pattern matching techniques分离和模式匹配技术
【发布时间】:2011-11-10 12:16:35
【问题描述】:

我是人工神经网络的新手。

我对这样的应用程序感兴趣:

我有大量的对象。每个对象有六个属性,用 P1-P6 表示。每个属性都有一个符号值。换句话说,在我的示例中,P1-P6 可以具有来自集合 {A, B, C, D, E, F} 的值。它们不是数字。 (假设 A、B、C、D、E、F 是颜色;那么你就会明白我的想法了。)

现在,我对另一个属性 R 感兴趣。假设

R = {G1, G2, G3, G4, G5}

我需要为大量 P1-P6 和相关 R 训练一个系统。现在我想做以下事情。

  1. 我有一个对象,我知道 P1 到 P6 的值。我需要找到 R(对象所属的组。)

  2. 要获得所需的 R,我需要在 P1-P6 中具有什么模式。 作为一个例子,假设 R = G2,我需要找出 P1-P6 中的任何模式。

我的问题是:

  1. 我应该阅读和阅读哪些理论/技术/技巧 为了分别实现1和2而学习?

  2. 你可以推荐哪些工具/库来获得这个 模拟/实施/测试?

【问题讨论】:

  • de set {A,B,C,D,E,F,...} 有多大?是有限的吗?
  • 是的。他们是独立的
  • 好吧,恕我直言,您的问题似乎或多或少类似于搜索引擎或推荐系统(除了 Px 具有固定大小)您是否查看过 SVD?

标签: algorithm statistics artificial-intelligence machine-learning neural-network


【解决方案1】:

按照您描述问题的方式,您需要查找各种机器学习技术。如果是我,我会尝试阅读有关分类的 k-NN(k 最近邻)。当我说分类时,我的意思是如果你知道 P1-P6,就得到 R。这是一个非常简单的技术,在这里应该会有所帮助。

至于反过来,您基本上需要的是您的人口的代表性样本。我认为这并不常见,但您可以尝试类似 k-means Clustering 的方法。聚类方法通常自己确定一个对象的类(属性 R),但是 k-means 聚类在这种情况下很酷,因为你需要给它对象类的数量(例如 R 的不同可能值),最后你得到一个有代表性的样本。

在我看来,您绝对不应该使用任何真正复杂的技术(例如神经网络),因为您的数据没有精确的数值解释,并且无法逐步解释这些值。

推荐的工具确实取决于您的基础编程语言。有一个很棒的工具叫做Orange,它是基于 Python 的,它是我处理这类事情的首选工具(特别是因为它很容易将你的 Python 模块与 C/C++ 连接起来)。如果您更喜欢 Java,可以使用一个非常相似的工具,称为 Weka。我认为 Weka 的文档更好一些,但我不喜欢 Java,所以我从未尝试过。

这两种工具都有一个可点击的图形界面,您可以在其中加载数据并完成分类,使用参数并检查使用不同技术和不同设置获得的输出类型。一旦你决定你得到了你需要的结果(或者如果你只是不喜欢图形界面),你也可以在编程时将它们都用作一种库(Orange 的 Python 和 Weka 的 Java),并使分类成为更大项目的一部分。

如果您查看 Orange 或 Weka 的文档,我认为它会给您一些关于您可以实际使用您拥有的数据做什么的想法,以及当您知道一些您认为有趣且适用于数据,也许您可​​以在这里获得更多优质的 cmets 和一些特定方法的信息,而不是仅仅搜索一般建议。

【讨论】:

    【解决方案2】:

    您应该查看classification algorithms(人工智能的一个子部分),尤其是最近邻算法。您的问题可能会通过不同的技术来解决,它们都有不同的优点和缺点。

    但是,我不知道人工智能中有任何方法可以进行双向分类(或者换句话说,两者同时实现您的先决条件 1 和 2)。到目前为止,您要做的只是对 P1..P6 R 进行双向映射,因此我建议您只使用映射表而不是人工智能算法。如果您不完全知道,您的哪些样本在 P1..P6 中归类为 A..E,那么 AI 会很好用。

    如果您坚持使用 AI,我建议您先查看Perceptron。感知器由输入、中间和输出神经元组成。对于您的示例,您将拥有输入神经元 P1a..P1e、P2a..P2e、... 和五个输出神经元 R1..R5。训练后应该可以输入P1..P6,得到合适的R1..R5作为输出。

    至于框架和技术,我只知道 Visual Studio 的商业智能套件,尽管还有很多其他的 AI 框架。由于我没有使用过任何一个(我总是自己用 C/C++ 编写它们),所以我不能推荐任何一个。

    【讨论】:

      【解决方案3】:

      这似乎是一个典型的分类问题。如果您确实有大量数据,请查看Apache Mahout,它提供了机器学习算法的分布式实现。如果您需要一些不那么复杂的原型设计,TimBL 是一个不错的选择。

      【讨论】:

        猜你喜欢
        • 2013-08-15
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多