ガス消費異常値の検出-ニューラルネットワークプロジェクト。悪い結果


10

いくつかのオランダの建物のエネルギーガス消費量の異常値を検出して、ニューラルネットワークモデルを構築しようとしました。結果は非常に悪いですが、理由がわかりません。

私は専門家ではないので、改善できる点と間違っている点をお伺いします。これは完全な説明です:https : //github.com/denadai2/Gas-consumption-outliers

ニューラルネットワークは、バックプロパゲーションを備えたFeedFowardネットワークです。ここで説明するように、データセットを41'000行、9つのフィーチャの「小さな」データセットに分割し、さらにフィーチャを追加しようとしました。

ネットワークをトレーニングしましたが、結果は14.14 RMSEであるため、ガス消費量を予測できず、連続して優れた異常値検出メカニズムを実行できません。一部の論文では、電力の毎日または毎時の消費を予測しても、MSE = 0.01のようなエラーがあることがわかります。

何を改善できますか?何が悪いのですか?私の説明を見ていただけますか?


2
どういう意味ですか、悪い結果?gitリポジトリにリンクするだけでなく、プロセス、結果、およびそれらが予想とどのように異なるかを説明します。そうでなければ、この議論は誰にとっても役に立たないでしょう。
エア

これも本当です:D。「結果には14.14 RMSEがあるため、ガス消費量をあまり正確に予測できないため、優れた外れ値検出メカニズムを実行できないので、ページに説明を追加しました。電力の毎日または毎時の消費量には、MSE = 0.01のようなエラーがあります。」
マルコデナ2014年

1
@marcodenaこれはQAサイトであり、他の人はあなたが解決しようとしていることを知っている必要があります。そうすれば彼らは答えを理解し、うまくいけば自分の問題でそれらを使用できるようになります。これがAirThomasの意味するところです。また、自分がやっていることと正確に何が間違っていると思うかを説明できたらいいと思います。git-hubページへのリンクが変更されると、ここのリンクは無効になり、他の人は問題が何であるかを理解できなくなります。少し時間を取って、質問を自己完結型にしてください。ありがとう。
ルーベンス2014年

1
問題を説明するのに非常に長い時間がかかるとわかったときは、質問を他の人に説明するために時間を費やすことが最も重要であり、明確かつ詳細な情報と研究/試みの議論を伴います。多くの場合、そのプロセス中に、自分でいくつかまたはすべての答えを見つけます。だけでなく、何を見つけることは他の人に便利である場合、あなたはまだ偉大な感じ、あなたが上に多くの時間を費やしてその質問を投稿し、できることですし、あなたが思いついた答え(複数可)。
エア

1
明確に言うと、「一部の論文ではMSE = 0.01のようなエラーがある」と述べたとき、使用しているのと同じデータセットを参照していますか?それともまったく別のデータセットですか?
insys 14年

回答:


8

ただのアイデア-あなたのデータは非常に季節的です:毎日と毎週のサイクルはかなり知覚できます。まず、変数(ガスと電力の消費、温度、日射量)を分解してみてください。これは、Rの時系列分解に関する素晴らしいチュートリアルです。

トレンドと季節要素を取得した後、最も興味深い部分が始まります。これは単なる仮定ですが、ガスと電力の消費量の変数は、時系列分析(ARIMAモデルなど)によってかなり予測できると思います。私の観点から、ここで最も存在する部分は、利用可能なデータ(温度異常、日射量、風速)を使用して、分解後の残差を予測することです。あなたが探しているのは、これらの残差が異常値になると思います。この情報がお役に立てば幸いです。


3

トレーニングノートブックで、20エポックのトレーニングの結果を提示します。そのパラメーターを変更して、パフォーマンスに影響があるかどうかを確認しましたか?これは逆伝播の重要なパラメータです。

ユーザーtomaskazemekasが指摘したように、モデルパラメーターを推定するには、学習曲線のプロットが非常に良いアプローチです。それに加えて、モデルパラメーター(トレーニングエポックや非表示レイヤーサイズなど)とトレーニングおよび検証エラーを使用してプロットを作成することもできます。これにより、バイアスと分散のトレードオフを理解し、パラメーターに適切な値を選択することができます。いくつかの情報はここにあります。当然のことながら、(3番目の)テストセットのデータのごく一部を保持することをお勧めします。

補足として、モデル内のニューロンの数を増やしても、RMSEに大きな改善は見られないようです。これは、より少ないニューロンを使用して、より単純なモデルで試して、モデルの動作を確認することもできることを示唆しています。

実際、私は(まだ行っていない場合は)最初にパラメーターをほとんどまたはまったく使用しない単純なモデル(線形回帰など)を試してみて、サニティチェックと同様に、結果を文献と比較することをお勧めします。


モデルA LOTを改善した後、グラフをいくつか追加しました。githubには新しいステップがあります。時系列問題で線形回帰をどのように適用できるか聞いてもいいですか?:(
marcodena 2014年

2

ここでの主な問題は、異常検出アルゴリズムを適用する前であっても、ニューラルネットワークを使用してガス消費量を十分に予測できないことです。

ここでの主な目標が異常検出アルゴリズムを使用できる段階に到達することであり、この問題に対して線形回帰をうまく適用した例へのアクセス権があると述べた場合、このアプローチはより生産的である可能性があります。成功する機械学習アプリケーションの原則の1つは、結果に基づく最終的な選択の前に、いくつかの異なるアルゴリズムを試すことができることです。

ニューラルネットワークのパフォーマンスを調整することを選択すると、さまざまなハイパーパラメーターの変化がエラー率に及ぼす影響をプロットした学習曲線を使用できます。変更できるハイパーパラメータは次のとおりです。

  • 機能の数
  • 多項式の次数
  • 正則化パラメーター
  • ネットワークのレイヤー数

相互検証セットのパフォーマンスによって最適な設定を選択できます。


グラフをいくつか追加しました。パラメータについても確認できます:)
marcodena

2

あなたのノートブックでは、ニューラルネットワークモデルが表示されませんでした。使用しているライブラリ、使用しているレイヤーの数、および使用しているニューラルネットワークのタイプを指摘できますか?

あなたのノートブックでは、ノイズの多い外れ値のデータセットを使用してニューラルネットワークをトレーニングしているようです。観測値に異常値を付けるかどうかを分類するニューラルネットワーク。

私が書いた夫婦事を、時系列信号に外れ値検出にあなたのデータはsobachが述べたように、高度の季節ですし、信号の全体的な傾向を得るためにFFT(上記の最初のリンク)を使用することができます。ガス消費量の周波数成分を取得した後、高周波成分を調べて外れ値を取得できます。

また、季節データにニューラルネットワークを使用したい場合は、過去の観測をバニラニューラルネットワークよりも組み込むことができるため、反復ニューラルネットワークをチェックアウトすることをお勧めします。 。


私はあなたのFFTメソッドを試しましたが、データで周波数しきい値と振幅を設定する方法が本当にわかりません。私は探し続けますが、あなたが私を助けることができれば...
marcodena

ソースも追加しました
marcodena '30
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.