3

遺伝的プログラム (gp) を使用して、「イベント」からの「結果」の確率を推定したいと考えています。nn をトレーニングするために、遺伝的アルゴリズムを使用しています。

したがって、私のデータベースには多くのイベントがあり、各イベントには多くの可能な結果が含まれています。

各イベントの各結果に関連する一連の入力変数を gp に与えます。

私の質問は - gp のフィットネス関数はどうあるべきですか????

たとえば、現在、gp に一連の入力データ (結果入力変数) と一連のターゲット データ (結果 DID が発生した場合は 1、結果 DID が発生しなかった場合は 0、フィットネス関数は平均二乗) を与えています。出力とターゲットのエラー)。次に、各結果の各出力の合計を取り、各出力を合計で割ります (確率を求めるため)。ただし、これが正しい方法ではないことは確かです。

明確にするために、これは私が現在これを行っている方法です:

イベントで発生する 5 つの異なる結果の確率を推定したいと思います。

Outcome 1 - inputs = [0.1, 0.2, 0.1, 0.4] 
Outcome 1 - inputs = [0.1, 0.3, 0.1, 0.3] 
Outcome 1 - inputs = [0.5, 0.6, 0.2, 0.1] 
Outcome 1 - inputs = [0.9, 0.2, 0.1, 0.3] 
Outcome 1 - inputs = [0.9, 0.2, 0.9, 0.2] 

次に、各入力の gp 出力を計算します。

Outcome 1 - output = 0.1 
Outcome 1 - output = 0.7 
Outcome 1 - output = 0.2 
Outcome 1 - output = 0.4 
Outcome 1 - output = 0.4

このイベントの各結果の出力の合計は、1.80 になります。次に、出力を合計で割って、各結果の「確率」を計算します。

Outcome 1 - p = 0.055 
Outcome 1 - p = 0.388 
Outcome 1 - p = 0.111 
Outcome 1 - p = 0.222 
Outcome 1 - p = 0.222 

始める前に - これらは実際の確率ではなく、このアプローチはうまくいかないことを私は知っています!! 私が何を達成しようとしているのかを理解してもらうために、ここにこれを載せました。

各結果の確率を推定する方法について、誰かが私にいくつかの指針を与えることができますか? (また、私の数学はあまり得意ではないことに注意してください)

どうもありがとう

4

2 に答える 2

2

あなたの質問の最初の部分を理解しています。あなたが説明したのは分類の問題です。入力が結果が観測されたか (1) 観測されなかったか (0) に関連しているかどうかを学習しています。

ただし、2番目の部分には問題があります。あなたが正しく理解している場合、特定の入力行(0.7など)の生のGP出力を取得し、それを確率として扱います。あなたは、これは明らかにうまくいかないと言いました。GP では、クラスを分割するしきい値を導入することで分類を行うことができます。0.3 よりも大きい場合、結果は 1 で、小さい場合は 0 になります。このしきい値は、必ずしも 0.5 であるとは限りません (これも単なる数値であり、確率ではありません)。

確率を取得したい場合は、分類の問題をすべて説明する複数のモデルの学習を試みる必要があると思います。とにかく確率が必要ない場合は、データを完全に説明する完璧なモデルがあるとは思いません。これらのモデルをまとめる (アンサンブルを作成する) ことができ、結果ごとに、1 を予測したモデルの数と 0 を予測したモデルの数を観察できます。1 を予測したモデルの数をモデルの数で割ると、確率として解釈できます。この結果が観察されること。モデルがすべて同等に優れている場合は、それらの間の重み付けを忘れることができます。もちろん、品質が異なる場合は、これらを決定に含めることができます. トレーニング セットの品質が低いモデルは、適切な推定に寄与する可能性が低くなります。

したがって、要約すると、たとえば 10 回 GP を適用してから、トレーニング セットで 10 個のモデルすべてを使用して推定値 (0 または 1) を計算する必要があります。ただし、GP だけに固執しないでください。良い結果が得られる分類アルゴリズムはたくさんあります。

余談ですが、私はHeuristicLabというソフトウェアの開発チームの一員です。このソフトウェアはWindows で動作し、GP を実行してそのようなアンサンブルを作成できます。ソフトウェアはオープンソースです。

于 2012-10-31T09:41:02.007 に答える
0

AIはすべて複雑なアルゴリズムに関するものです。考えてみてください。欠点は、これらのアルゴリズムがブラックボックスになることです。したがって、NNやGAなどのアルゴリズムの反対側は、本質的に不透明です。それはあなたがそれ自身を運転している車を持ちたいならあなたが望むものです。一方、これは、ブラックボックスを調べるためのツールが必要であることを意味します。

私が言っているのは、GAはおそらくあなたが問題を解決したいものではないということです。AIタイプの問題を解決したい場合は、最初に回帰、LDAなどの標準的な手法の使用方法を知る必要があります。

したがって、あるブラックボックスを別のブラックボックスに積み重ねているため、NNとGAを組み合わせるのは通常悪い兆候です。これは悪いデザインだと思います。NNとGAは、非線形オプティマイザーに他なりません。最初に主成分分析(PDA)、SVD、線形分類器を確認することをお勧めします(ウィキペディアを参照)。単純な統計的問題を解決することがわかった場合は、より複雑な問題に移ります。Russell / Norvigによるすばらしい教科書をチェックして、彼らのソースコードのいくつかを読んでください。

質問に答えるには、実際にデータセットを広範囲に調べる必要があります。小さな問題に取り組んでいる場合は、確率などを定義すると、ここで答えが得られる可能性があります。おそらくベイズ統計もチェックしてください。これで始められると思います。

于 2012-10-31T11:53:38.087 に答える