1

私は分類システムを持っていますが、残念ながら仕事上の理由からあいまいにする必要があります。考慮すべき 5 つの機能があるとします。基本的には一連のルールです。

A  B  C  D  E  Result
1  2  b  5  3  X
1  2  c  5  4  X
1  2  e  5  2  X

サブジェクトを取得して AE の値を取得し、ルールを順番に照合してみます。いずれかが一致した場合、最初の結果を返します。

C は離散値で、ae のいずれかになります。残りは単なる整数です。

ルールセットは古いシステムから自動的に生成され、非常に多数のルール (約 2,500 万) を含んでいます。古いルールは if ステートメントでした。

result("X") if $A >= 1 && $A <= 10 && $C eq 'A';

ご覧のとおり、古いルールでは多くの場合、一部の機能が使用されなかったり、範囲が受け入れられなかったりします。より厄介なものもあります:

result("Y") if ($A == 1 && $B == 2) || ($A == 2 && $B == 4);

ルールセットは人間が維持する必要があるため、はるかに小さくする必要があるため、最初の例が次のようになるようにルールセットを縮小したいと思います。

A  B  C    D  E    Result
1  2  bce  5  2-4  X

結果として、結果列でルールセットを分割し、それぞれを個別に縮小できます。ただし、ルールセットを特定して縮小する簡単な方法は思いつきません。クラスタリング アルゴリズムを試してみましたが、一部のデータが離散的であり、それを連続として扱うのは不完全であるため、それらはチョークします。もう一つの例:

A  B  C   Result
1  2  a   X
1  2  b   X
(repeat a few hundred times)
2  4  a   X  
2  4  b   X
(ditto)

理想的な世界では、これは 2 つのルールになります。

A  B  C  Result
1  2  *  X
2  4  *  X

つまり、アルゴリズムは A と B の関係を識別するだけでなく、C がノイズであると推測します (ルールにとって重要ではありません)。

この問題をどうやって解決するか考えている人はいますか? ほとんどの場合、これは 1 回限りのプロセスであると予想されるため、どの言語やライブラリも公正なゲームです。前もって感謝します。

4

3 に答える 3

1

2500万のルール?特徴はいくつ?特徴ごとの値はいくつですか? 実際の時間内にすべての組み合わせを繰り返すことは可能ですか? 可能であれば、ルールを結果ごとにグループに分けることから始めることができます。

次に、結果ごとに次の操作を行います。各フィーチャをディメンションとして、フィーチャに許容される値をそのディメンションに沿ったメトリックとして考慮すると、ルール セット全体を表す巨大なカルノー マップが作成されます。

マップには 2 つの用途があります。1 つは、Quine-McCluskey アルゴリズムの自動化された方法を研究することです。この分野では多くの作業が行われてきました。利用可能なプログラムもいくつかありますが、作成しようとしているサイズのカルノー マップを処理できるプログラムはおそらくないでしょう。

2: 最終的な縮小ルール セットを作成したら、すべてのフィーチャのすべての値のすべての組み合わせを繰り返し、縮小ルール セットを使用して別のカルノー マップを作成します。マップが一致する場合、ルール セットは同等です。

-アル。

于 2010-01-19T23:07:49.780 に答える
1

Java 用の Weka 機械学習ライブラリを確認してください。API は少し粗雑ですが、非常に便利です。全体として、あなたが望んでいるように見えるのは、まさに Weka に含まれている既製の機械学習アルゴリズムです。あなたは明らかに、比較的簡単に解釈できるものを探しているようです (あなたは、A と B の関係を推測し、C は単なるノイズであることを伝えたいと述べています)。J48 などの決定木を試すことができます。通常、視覚化/解釈するのは簡単です。

于 2010-01-19T23:32:04.207 に答える
0

すべてのクラスにヒットする大量のデータセットを持っているか、(古いルールセットに基づいて)ランダムに生成できると仮定して、バックプロパゲーションを介してトレーニングされたニューラルネットワークアプローチを試すことができます。適切なサイズの隠れ層を使用すると、特徴空間内の任意の判別関数を近似できます。これは、クラスタリングとほぼ同じ考え方ですが、トレーニングパラダイムにより、個別の入力に問題はないはずです。

ただし、これは、特に誤検知と誤検知に対する許容度がゼロの場合は、少し「ブラックボックス」になりすぎる可能性があります(ただし、これは1回限りのプロセスであるため、巨大なものをチェックすることで任意の信頼度を得ることができます。検証セット)。

于 2010-01-19T19:24:04.183 に答える