5

我是新来的人工神经网络。分离和模式匹配技术

我对这样的应用程序:

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. 为了得到所需的R什么是我需要在P1 – P6中具有的模式。 作为R = G2的例子,我需要找出P1 – P6中的任何模式。

我的问题是:

  1. 什么理论/技术/技术,我应该阅读和学习 为了实现分别为1和2,?

  2. 你可以推荐什么工具/库来模拟/实现/测试这个 ?

+0

设定值有多大{A,B,C,D,E,F,...}?它是有限的吗? – wildplasser

+0

是的。他们是独立的 –

+0

那么,恕我直言,你的问题似乎或多或少像一个搜索引擎或推荐系统(除了Px是有固定大小)你看过SVD? – wildplasser

回答

3

你应该看看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++自己编写它们),所以我不能推荐任何。

5

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

至于周围的其他方式,你基本上需要的是你的人口的代表性样本。这是我认为不太常见的,但你可以尝试像k-means聚类。聚类方法通常自己确定一个对象的类(属性R),但是k-means在这种情况下聚类很酷,因为你需要给它一些对象类(例如R的不同可能值),并且最终你会得到一个有代表性的样本

你绝对不应该去在我看来,任何真正复杂的技术(如神经网络),因为你的数据没有一个确切的数字解释和值不能逐步解释。

推荐的工具真的取决于您的基本编程语言。有一个名为Orange的很棒的工具,它基于Python,它是我选择这些类型的工具(特别是因为将Python模块与C/C++连接起来非常简单)。如果您更喜欢Java,那么可以使用一个非常类似的工具Weka。我认为Weka是有点更好记录,但我不喜欢Java,所以我从来没有尝试过。

这些工具都具有图形化点击界面,你可以只加载数据,并把工作分类,通过参数玩,并检查您开始使用什么样的输出不同的技术和不同的调校。一旦你决定获得你需要的结果(或者你不喜欢图形界面),你也可以在编程时使用它们作为一种库(Python for Orange和Weka for Java),并将分类作为更大项目的一部分。

如果你仔细阅读Orange或Weka的文档,我认为它会给你一些想法,你可以对你所拥有的数据做什么实际的工作,以及当你知道一些看起来很有趣的技术时,数据,也许你可以在这里获得更多的质量评论和一些特定方法的信息,而不仅仅是寻找一般性建议。

1

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