ニューラル ネットワークを使用して、シリーズ A (シリーズ A の完全な履歴がある) と、次の 30 日間のイベント E のリスト (E はリストです) に基づいて、今から 30 日後の時系列 B を予測したいと考えています。バイナリ単位の)。B は A に直線的に比例することがわかっており、i 日のイベントが発生すると (E[i] = 1)、B のスパイクがトリガーされます (比率は不明です)。(A、E、B) のタプルを含むトレーニング データがあります。フィード フォワード ネットワークでテストしましたが、うまく機能しません (適切なスパイクを予測していません)。リカレント ネットワークを使用する必要がありますか?どうすればその neurolab または pybrain を実行できますか? ありがとう。
ここで例を見ることができます。
編集: コードは少し複雑なので、ここに貼り付けることはできません。ただし、アイデアは、A + E を入力としてフィードし、B を予測することです。したがって、30 + 30 の入力ユニット、30 の出力ユニットがあり、隠れ層はありません (30 ユニットと 90 ユニットを含む 1 つの隠れ層でテストしましたが、そうではありません。パフォーマンスが向上します)。時系列データは上記のリンクに示されています。(赤線がB、Aはスパイクのない似たような形です)。
A_list, B_list, E_list = input()
X, Y = [A + E for A, E in zip(A_list, E_list)], B_list
indim, outdim = len(X[0]), len(Y[0])
network = nl.net.newp([[-1, 1]]*indim, outdim, transf=nl.trans.LogSig())
errors = network.train(norm_X(X),
norm_Y(Y),
epochs=4000, show=1000,
lr=0.01)
ここで、norm_X(X) は X を [-1,1] にスケーリングし、norm_Y は Y を [0, 1] にスケーリングします。