分离和模式匹配技术

时间:2011-09-05 09:59:37

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

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

我对这样的应用感兴趣:

table

我有一大堆对象。每个对象有六个属性,由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.   
  3. 要获得所需的R,我需要在P1-P6中使用的模式是什么。   作为一个例子,假设R = G2,我需要弄清楚P1-P6中的任何模式。

  4.   

我的问题是:

  
      
  1. 我应该阅读的理论/技术/技术是什么?   学习以分别实现1和2?

  2.   
  3. 您可以推荐哪些工具/库来实现此目的   模拟/执行/测试?

  4.   

3 个答案:

答案 0 :(得分:5)

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

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

在我看来,你绝对不应该选择任何非常复杂的技术(比如神经网络),因为你的数据没有精确的数值解释,并且数值无法逐渐解释。

推荐的工具实际上取决于您的基本编程语言。有一个很棒的工具叫做Orange,它是基于Python的,它是我选择这类工具的工具(特别是因为用C / C ++连接你的Python模块真的很容易)。如果您更喜欢Java,那么可以使用一个名为Weka的非常相似的工具。我认为Weka有更好的记录,但我不喜欢Java,所以我从未尝试过。

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

如果你浏览一下Orange或Weka的文档,我想它会给你一些关于你可以用你拥有的数据做什么的想法,以及当你知道一些看起来很有趣但适用于数据,也许你可以在这里获得更多关于一些特定方法的质量评论和信息,而不仅仅是在寻找一般建议时。

答案 1 :(得分:3)

你应该看看classification algorithms(人工智能的一个小节),特别是最近邻算法。您的问题可以通过不同的技术来解决,这些技术都有不同的优点和缺点。

但是,我不知道人工智能中的任何方法,它允许双向分类(换句话说,它们同时实现你的先决条件1和2)。因为到目前为止你想做的就是具有P1..P6< =>的双向映射。 R,我建议只使用映射表而不是人工智能算法。如果您不确切知道哪个样本在P1..P6中被归类为A..E,那么人工智能会很有效。

如果你坚持使用人工智能,我建议先看一下Perceptron。感知器由输入,中间和输出神经元组成。对于你的例子,你有输入神经元P1a..P1e,P2a..P2e,......和五个输出神经元R1..R5。训练结束后,您应该能够输入P1..P6并获得相应的R1..R5作为输出。

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

答案 2 :(得分:1)

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

相关问题