16

既知のパターンに基づいて将来のイベントを予測するために研究するアルゴリズムまたはサンプル マテリアルを探しています。おそらくこれには名前があり、私はそれを知らない/覚えていません。この一般的なものは存在しないかもしれませんが、私は数学やアルゴリズムの達人ではないので、ここで方向性を尋ねています.

例として、私が理解しているように、次のようになります。

静的イベントは、1 月 1 日、2 月 1 日、3 月 3 日、4 月 4 日に発生します。簡単な解決策は、各発生間の日/時間/分/何かを平均し、その数を最後の既知の発生に追加して予測することです。

何を求めているのか、何を勉強すればいいのか?

特定の目標や考慮すべき特定の変数はありません。これは単なる個人的な考えであり、私が何か新しいことを学ぶ機会です.

4

8 に答える 8

8

検討する価値のあるトピックには、数値解析、特に内挿、外挿、回帰が含まれると思います。

于 2009-04-16T21:26:01.283 に答える
4

これはやり過ぎかもしれませんが、マルコフ連鎖はかなりクールなパターン認識機能につながる可能性があります。イベントの連鎖に適しています。アイデアは、一連のイベントの最後の N ステップに基づいて、次に何が起こるかということです。

これはテキストに非常に適しています。シェイクスピアの大規模なサンプルを処理すると、シェイクスピアのようなナンセンスでいっぱいの段落を生成できます。残念ながら、人口がまばらなイベントを把握するには、かなり多くのデータが必要です。(1 か月以上の期間のパターンを検出するには、少なくとも1 か月分のデータのチェーンを追跡する必要があります。)

擬似 python では、マルコフ連鎖ビルダー/予測スクリプトの大まかなスケッチを次に示します。

n = how_big_a_chain_you_want
def build_map(eventChain):
    map = defaultdict(list)
    for events in get_all_n_plus_1_item_slices_of(eventChain):
        slice = events[:n]
        last = events[-1]
        map[slice].append(last)

def predict_next_event(whatsHappenedSoFar, map):
    slice = whatsHappenedSoFar[-n:]
    return random_choice(map[slice])
于 2009-04-16T21:40:28.487 に答える
2

単一の「最適な」缶詰ソリューションはありません。必要なものによって異なります。たとえば、あなたが言うように値を平均したいかもしれませんが、古い値が新しい値ほど結果に寄与しない加重平均を使用します。または、スムージングを試すこともできます。または、イベントの分布が既知の分布 (正規分布、ポアソン分布、一様分布など) に適合するかどうかを確認することもできます。

于 2009-04-16T21:22:43.193 に答える
2

モデルを念頭に置いている場合 (イベントが定期的に発生するなど)、そのモデルのパラメーターにカルマン フィルターを適用するのが一般的な手法です。

于 2009-04-16T21:43:00.320 に答える
1

このタスクは言語モデリング タスクと非常によく似ており、一連の履歴単語が与えられた場合、モデルは次の単語の語彙に対する確率分布を予測しようとします。

SRILMNLTKなどのオープン ソース ソフトウェアがあり、シーケンスを入力文 (各 event_id は単語) として取得し、ジョブを実行できます。

于 2016-09-08T04:00:09.360 に答える
1

そのようなことを試みるために私が取り組んできた唯一の手法は、シリーズの次のステップを予測するためにニューラル ネットワークをトレーニングすることです。これは、この問題をパターン分類の問題として解釈することを意味しますが、これはあまり適切ではないようです。私はそれに対処するためのあいまいな方法が少ないのではないかと疑う必要があります。

于 2009-04-16T21:08:52.010 に答える
0

その頻度の以前のデータが与えられた場合に n 日後にイベントが発生する確率を見つけたいだけの場合は、適切な確率分布に適合する必要があります。これには通常、イベントのソースについて何かを知る必要があります (おそらくポアソン分布、おそらくガウス)。以前のイベントが発生したことを考慮して、イベントが発生する確率を見つけたい場合は、ベイジアン統計とそこからマルコフ連鎖を構築する方法を確認する必要があります。

于 2009-04-16T21:41:32.837 に答える
-2

遺伝的プログラミングアルゴリズムをグーグルで検索する必要があります

それら (カオスで言及されたニューラル ネットワークのようなもの) は、プログラムでソリューションを生成し、基準に基づいてプログラム自体を変更し、願わくば正確に近い新しいソリューションを作成することを可能にします。

ニューラル ネットワークはユーザーがトレーニングする必要がありますが、遺伝的プログラミングを使用すると、プログラムがすべての作業を実行します。

そもそもそれらを実行するのは大変な作業ですが!

于 2009-04-16T21:27:37.660 に答える