私は最近、ゲルマンらのガウスプロセスに出くわしました。(2013)、そして私は時系列データの補完に使用するためのそれらの潜在的なアプリケーションについてもっと学びたいと思っています。対象となるデータは、フォトプレチスモグラム(PPG、人の指の先に取り付けられ、血液量の変化を測定する光学センサー)を使用して収集された個人の心拍数の単一の可変時系列です。
問題は、乱雑なデータの特定のセクションがあることです。これらのアーティファクトを処理するために既存の編集戦略が開発されましたが、それらは主にEKGセンサーから収集されたデータに基づいて最適化されました。PPGの低速波形は、取得したデータへのアプリケーションを時々少し不格好にします。
簡単に言うと、データの手動編集を改善するために作成したR Shiny Appからの適切な信号に囲まれた孤立した乱雑なセクションの例を次に示します。
薄い灰色の線は、元の信号を表します(2kHから100Hzにダウンサンプリング)。赤い点が付いた黒い実線は、時間の経過とともにプロットされた心拍間隔(連続する心拍の間の秒単位の時間)のプロットです。心拍間隔は、これらのデータの分析における主要な変数になります。
たとえば、個人の心拍間隔を使用して、心拍変動を評価できます。残念ながら、ほとんどの編集戦略はばらつきを抑える傾向があります。さらに、これらのアーティファクトが存在する可能性が高い場合(参加者の移動のため)、特定のタスクがあります。つまり、これらの乱雑なセクションに削除のマークを付けて、ランダムに欠落しているものとして扱うことができませんでした。
利点は、心拍数の特性について多くのことを知っていることです。たとえば、成人の安静時の範囲は通常60〜100 BPMです。また、心拍数は呼吸周期の関数として変化することもわかっています。呼吸周期は、それ自体、静止している可能性のある周波数の範囲がわかっています。最後に、心拍数の変動に影響を与える低周波サイクルがあることを知っています(心拍数に対する交感神経と副交感神経の影響の組み合わせによって影響を受けると考えられています)。
上記の「悪いデータ」の比較的小さなセクションは、実際には私の主要な関心事ではありません。私は、このような孤立したケースでうまく機能するように見える、ある程度正確な季節補間アプローチを開発しました。
悪い信号と良い信号が定期的に混在しているデータセクションを処理するときに、さらに問題が発生します。
私がゲルマンらから理解しているように。(2013)、ガウス過程に対していくつかの異なる共分散関数を指定することが可能であるようです。これらの共分散関数は、観測されたデータと、成人(または子供)の心拍出量と呼吸出力の測定値について、かなりよく知られている事前分布によって通知されます。
たとえば、いくつかの心拍数が観測されたとします()、その平均心拍数に支配されるガウス過程を次のように指定することができます(これらのモデルを適用しようとするのは今回が初めてなので、ここで計算が終わっているかどうかをお知らせください)。
どこ
ここで、はサンプリングレート、は時間のインデックスです。
例に基づくGelman et al。(2013)彼らのテキストで提供して、この共分散関数を修正して特定の期間にわたる変動を可能にすることは可能であるようです。私にとっては、呼吸サイクル内および上記の低周波心拍変動サイクル内での推定値の変動を考慮したいと思います。
私の理解する最初の目標を達成するには、呼吸速度()のガウスプロセスと共分散関数、および共分散関数に両方のプロセスの機能を組み込んだガウスプロセスを指定する必要があります。
どこ
そして...
どこ
この時点で停止すると、私のモデルは次のようになります。
編集/更新:
まず、私の3つのガウスプロセスのより正確な仕様は次のとおりです。
二乗指数共分散カーネルから始めます。
次に、個人の心拍数に基づく準周期パターンを組み込んだ共分散関数。
そして最後に、呼吸周期の関数として心拍数変動をモデル化する共分散関数:
以前の質問(斜体で更新された回答付き):
1)Guassianプロセスについてほとんど知らない場合、これは防御可能なアプリケーションのように見えますか?それらは非常に柔軟に見え、データの真の変動をできるだけ多く保持するという私の問題に対処できる多くの望ましい特性を持っているように見えますが、私は最近それらに遭遇し、失望しないようにしたいと思います。このウサギの穴を下って
この質問に対するこれまでの私の回答は、これはうさぎの穴ではなく、少なくとも非生産的な穴ではありませんでした。私はこれらのモデルを他のどのモデルよりも、乱雑な信号の「真の」値を回復することに近づきました。実行時間を短縮する方法を見つけられるといいのですが、これらのモデルは計算にコストがかかるためです。私はここで進歩を遂げていますが(スタンとを使用した付記rstan
)、まだ進む方法があります。
2)共分散関数の基本的な特徴を正しく理解して表現していますか?さらに重要なのは、関数として変動を許可しようとする試みです(つまり、関数)?
上記で指定したカーネルは、私の主要なモデリング目的と一致していると思います。そうは言っても、複雑さを軽減する方法があり、確かに私の実行時間が非常に長くなる可能性があります。これは、基本を把握した今、モデルを最適化しようとしている私が引き続き積極的に追求している領域です。
3)より技術的に言えば、値を特定するにはどうすればよいですか?そして、が各共分散関数で正確に何を表しているのですか?それも私が以前の分布を指定しなければならないことのように思われますが、この場合それが何を表しているのか完全には理解していません。おそらく何らかの分散です...
現在、そしてほぼ間違いなく私の収束時間の要因として、これらの値をデータから推定しています。これらの値を修正するか、以前の分布を厳しく制限して、モデルがカバーするパラメータースペースを(防御可能に)縮小することができれば、実行時間を改善するための長い道のりになると思います。
4)ガウス過程について検討し始めている追加の情報源を見つけました(Rasmussen&Williams、2006)。これらのモデルの理解を深めるために検討すべき他の推奨リソースはありますか?
私は、最終的なモデリング戦略の継続的な追求に役立つ追加のソースをいくつか見つけました。下記参照。
大規模なデータセットでガウシアンプロセスをトレーニングするための高速な方法-Moore et al。、2016
スタンでさらに高速なガウシアンプロセス-Nate Lemoine
スタンにおける階層的ガウス過程-Trangucci、2016年
新しい質問
私が使用している周波数(1.5 Hz、0.25 Hzおよびx軸(秒単位で10 Hzにダウンサンプリング))に基づいてモデル(の)の長さスケールパラメーターを制約するための防御可能な方法はありますか?
モデリング時間を短縮するために注意すべき要素は何ですか?その一部がstanコードの最適化であることはわかっていますが、モデルのパラメーター化に関して他に何かしたり、変更したりできることはありますか?
これまでの結果これ は、これまでの最良の結果です(大幅にダウンサンプリングされたデータセット)。赤い線は「真の」信号を表します。青色は、同じ期間のモデル推定信号です。
注:見積もりを高速化して少しスムーズにできれば、この結果に大いに満足します。
Gelman、A.、Carlin、JB、Stern、HS、Dunson、DB、Vehtari、A。、およびRubin、DB(2013)。ベイジアンデータ分析(第3版)。CRCプレス:ニューヨーク。
ラスムッセン、CE、およびウィリアムズ、CKI(2006)。機械学習のためのガウス過程。MIT Press:マサチューセッツ州ボストン。