1

ユーザーによって時折生成されるデータの平均値を保存し、それをアプリケーションで使用して将来のデータを予測したいと考えています。今私が抱えている問題は、このデータが日中に大幅に変化する可能性があることです。たとえば、夜間にアクセスするユーザーは、朝にアクセスするユーザーよりもはるかに低い値を生成する可能性があるため、単純な平均を維持するだけでは合理的ではありません予測精度。

ある種の時間ベースの平均を保存する必要があるものもあります-たとえば、単純な解決策は、1日の各時間の平均値を保存することです-そのため、午前12時から午前1時までの間にデータを生成したすべてのユーザーに1つずつ、24の平均を保持します。 2 番目は、午前 1 時から午前 2 時までの間にデータを生成したすべてのユーザーに対して、というように続きます。

このアプローチにはいくつかの問題があります: 1. データを適切に予測するには、いくつかの値 (たとえば、今から 2 時間先と 2 時間前) を参照する必要がありますが、これを行うリソースがない可能性があります。 . 精度があまり損なわれない場合は、むしろ単一の値を参照します。2. また、このデータを最近の時間だけ記憶させたいと考えています。数年前には非常に低い値が生成されたが、先月以降は誰もが高い値を生成している場合、近い将来のデータを予測するには、次のようにする必要があります。これまでに作成されたすべてのデータの平均よりも優れた応答が得られます。議論のために、90日より古いものはすべて実際には関係がないと言いましょう. 3. ユーザーによって生成されたすべてのデータを保持するだけでなく、平均値を使用したい理由は、大量のデータが予想されるためです.100Kからおそらく10Mのデータポイントごとに、数百万のデータポイントを保存する必要があります.ユーザーからの毎週のデータ入力 - 少なくとも。また、ユーザーの分類に基づいて、データ ポイントごとにデータをさらに分割することもできます。

巨大なデータストレージ施設を必要とせずに平均データを最適に計算する方法について、誰かがヒントをくれれば幸いです:-)

[ヒント - はい、GIS アプリケーション用です]

4

5 に答える 5

1

ビューを使用して、期待値を計算します。そうすれば、手段の動的な構築が得られ、クエリが簡単になります。

于 2009-10-20T19:54:07.403 に答える
1

データ セットには 2 つの重要な情報が含まれているようです。データが何日前のものか、およびそのデータが 1 日の何時にあるか。

将来の時間の予測値は、データセットの加重平均として計算できます。重みは年齢とともに減少し、予測値が時間からどれだけ離れているかによっても減少します。

編集:最も重要なことはデータにぶら下がっていない場合:

あなたが提案するようにビンを設定する(素朴な解決策)のは、最も合理的なアプローチのようです。新しいデータが入ってきて、ビニングされたデータで「平均化」されると、新しいデータに大きな重みを与えて、最近の変更がすべての履歴データの「慣性」を克服できるようにすることができます。

于 2009-10-20T20:12:19.683 に答える
0

ユーザーが生成したすべての値を保存して、必要なときに必要なものを正確に計算しないのはなぜですか? アーカイブ スクリプトを設定して、不要になったときに古いデータを消去することができます。

このようにして、計算された値で計算を行うことによって不正確さを導入することはありません。

于 2009-10-20T19:54:05.523 に答える
0

移動平均の計算式を見たことがありますか?wikipedia で定義されているメソッドがいくつかあります。

于 2009-10-20T19:52:37.437 に答える
0

ラウンド ロビン データベース (たとえば、rrdtool) は、目的に最適だと思います。好きな言語が何であれ、プログラミング API は必ず存在します。

http://oss.oetiker.ch/rrdtool/

よろしく、ノア

于 2009-10-20T19:52:54.333 に答える