5

私は人工ニューラルネットワークを使い慣れていません。分離とパターンマッチングのテクニック

私は、このようなアプリケーションに興味を持っています:

table

私は、オブジェクトの非常に大規模なセットを持っています。各オブジェクトには、P1 – P6という6つのプロパティがあります。各プロパティは記号値である値を持ちます。言い換えれば、私の例では、– P6はセット{A、B、C、D、E、F}の値を持つことができます。数値ではありません。 (A、B、C、D、Eを仮定し、Fは色です;。あなたは私の考えを理解する)今

、私が興味を持って他のプロパティRあり

R =と仮定する。 {G1、G2、G3、G4、G5}

私は今では次のようにしたいP1 – P6と関連R.の大規模なセットのためにシステムを訓練する必要があります。

  1. 私は、オブジェクトを持っていると私はP6へのP1の値を知っています。私は R(オブジェクトが属するグループ)を見つけ出す必要があります。

  2. 希望するRを得るには、PP6にある必要があります。 例として、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の双方向マッピングでしたので、人工知能アルゴリズムの代わりにマッピングテーブルを使うことをお勧めします。あなたが正確に知っていなければ、AIは素晴らしいでしょう。あなたのサンプルのどれがP1..P6でA..Eの下に分類されていますか?

AIの使用を強くお勧めする場合は、まずPerceptronをご覧ください。パーセプトロンは、入力ニューロン、中間ニューロンおよび出力ニューロンからなる。あなたの例では、入力ニューロンP1a..P1e、P2a..P2e、...と5つの出力ニューロンR1..R5を持っています。トレーニング後、P1..P6を入力し、適切なR1..R5を出力として取得できるはずです。

フレームワークとテクノロジに関しては、私はVisual Studio用のビジネスインテリジェンススイートしか知りませんが、そこには他にも多くのAIのフレームワークがあります。私はそれらのどれも使用していないので(私はいつもC/C++で自分自身をコード化していました)、私は何もお勧めできません。

5

あなたはあなたの問題を説明したように、あなたは様々な機械学習技術をルックアップする必要があります。それが私だったら、分類のためにk-NN(k Nearest Neighbors)について読んでみることにしました。私が分類を言うとき、P1-P6を知っていればRを得ることを意味します。それは本当に簡単なテクニックであり、ここで役立つはずです。

その他の方法については、基本的に必要なのはあなたの人口の代表サンプルです。これは普通だとは思いませんが、k-meansクラスタリングのようなものを試すことができます。クラスター化の方法は、通常、オブジェクト(クラスR)のクラス自体を決定しますが、k-クラスのクラスター化は、オブジェクトクラスの数(例:Rの可能な値)を与える必要があるため、 1つの代表的なサンプルが得られます。

あなたのデータには正確な数値の解釈がなく、値を徐々に解釈できないので、実際には(ニューラルネットワークのような)複雑なテクニックは絶対に使わないでください。

お勧めのツールは、本当にあなたのベースのプログラミング言語に依存します。 Orangeという素晴らしいツールがあります。これはPythonベースであり、このようなもののための私のツールです(特に、PythonモジュールをC/C++に簡単に接続できるため)。 Javaを好む人には、Wekaという非常に似たツールがあります。私はWekaがもう少し詳しく書かれていると思いますが、私はJavaを好きではありませんので、試したことはありません。

これらのツールにはグラフィカルなクリック可能なインターフェイスがあり、データをロードして分類を実行し、パラメータを使用して、さまざまなテクニックと異なるセットアップを使用してどのような出力を得られるかを確認できます。必要な結果が得られたと判断した場合(またはグラフィカルインタフェースが嫌いな方)は、プログラミング時にそれらを両方とも種類のライブラリ(オレンジとJava for Weka)として使用し、分類をaより大きなプロジェクトの一部。

オレンジやウェカのドキュメントを見れば、あなたが持っているデータで実際にできることや興味深いテクニックを知っているときには、データ、多分あなたは一般的なアドバイスを探しているときよりもここでいくつかの具体的な方法についてより質の高いコメントと情報を得ることができます。

1

これは、一般的な分類問題のように思えます。あなたが実際に多くのデータを持っている場合は、機械学習アルゴリズムの分散実装を提供するApache Mahoutを見てください。プロトタイピングのためにあまり複雑ではないものが必要な場合は、TimBLが良い選択肢です。

関連する問題