PMFに0が含まれている場合のカルバックライブラーダイバージェンスの計算方法


9

私は次の時系列を持っています

ここに画像の説明を入力してください

以下に投稿されたデータを使用して取得されます。

スライディングウィンドウのサイズが10の場合、現在のスライディングウィンドウ内の値のPMFと履歴のPMFの間のKLダイバージェンスを計算して、KLダイバージェンスの値を経時的にプロットするという最終目標を設定して、 2つの時系列を比較できます。

今のところ、私が直面している概念的な問題があります(Pythonを使用して説明します)。

In [228]: samples = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1]

# In reality this 10 should be 20 because that is the max value I have seen in the timeseries
In [229]: bins = scipy.linspace(0, 10, 21) 
In [230]: bins
Out[230]:
array([  0. ,   0.5,   1. ,   1.5,   2. ,   2.5,   3. ,   3.5,   4. ,
         4.5,   5. ,   5.5,   6. ,   6.5,   7. ,   7.5,   8. ,   8.5,
         9. ,   9.5,  10. ])
In [231]: scipy.histogram(samples, bins=bins, density=True)
Out[231]:
(array([ 1.63636364,  0.        ,  0.36363636,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ]),
 array([  0. ,   0.5,   1. ,   1.5,   2. ,   2.5,   3. ,   3.5,   4. ,
         4.5,   5. ,   5.5,   6. ,   6.5,   7. ,   7.5,   8. ,   8.5,
         9. ,   9.5,  10. ]))

問題は、結果にPMFが含まれるため、KLダイバージェンスを取得するために0実際に2つPMFのを複数回できないことです。この問題を緩和する方法を誰かに教えてもらえますか?

データ

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

回答:


12

この問題に対処する1つの標準的なトリックは、ラプラス補正と呼ばれるものを使用することです。実際には、すべてのビンに1つの「カウント」を追加し、再正規化します。代わりに0.5カウントを追加することにも十分な理由があります。この特定の推定量は、Krichevsky-Trofimov推定量と呼ばれます。


4

問題について考える1つの方法は、ヒストグラムから計算したPMFに本当に自信がないということです。モデルで少し前が必要になる場合があります。PMFに自信がある場合は、一方のPMFで他のPMFでは不可能な値を得たので、KLダイバージェンスは無限大になるはずです。一方、以前にわずかな情報がなかった場合は、特定の結果が表示される可能性が常にあります。これを導入する1つの方法は、1倍のスカラーのベクトルをヒストグラムに追加することです。使用する理論的な事前分布は、ディリクレ分布です。これは、カテゴリ分布の共役事前分布です。しかし実際には、次のようなことができます

pmf_unnorm = scipy.histogram(samples, bins=bins, density=True)[0] +  w * scipy.ones(len(bins)-1)
pmf = pmf_unnor / sum(pmf_unnorm)

どこwが前のあなたが持っていたいかどのくらい強いかに応じて、いくつかの正の重みがあります。


1
あなたの時間と答えのために+1。ありがとうございました。私はこれを過去8時間読んでおり、これを回避するために事前に追加する必要があるようです。しかし、私はこの事実を説明する適切な参考文献を見つけることができません。これは統計コミュニティで明白なことですか、それともKLダイバージェンスのこの要件を指摘しているリファレンスを偶然知っていますか?
レジェンド

3

2つのPMFを比較できるように、データをビニングします。2つのPMF推定値が与えられたP^ そして Q^、KLDは次のように簡単に計算できます。 DKLP^Q^ΣP^ログP^Q^、 どこ ビンを超えて実行されます。

すみません、Rさんはわかりません。


1
あなたの時間を+1してください。この公式で直面している問題について質問を更新しました。PMFにが含まれている場合、この問題への対処方法を理解できません0。この問題を緩和する方法について何かコメントがありますか?
Legend

ゼロはデータがないことを示していますか、それとも有効な値ですか?前者の場合は、無視してください。後者の場合、ビンの1つを値0専用にすることができます。
Emre

これは時系列であるため、一部のケースではイベントがなく、一部のデータは欠落していたため、欠落した値の代わりにゼロを追加しました。あなたは興味深い点をもたらします:timeseriesの値が欠落している場合、それらを無視できますか?それは致命的ではないでしょうか?
レジェンド

私は移動ウィンドウで要素を選択するゼロを保持しますが、KLDを計算するためにそれらを無視します。
Emre

わかった。ありがとうございました!答えとして受け入れられました。私の最後の質問は、「ジェンセンシャノン」発散と呼ばれる関連するメトリックに関するものです。私は偶然このメトリックに出くわしましたが、このメトリックには絶対的な連続性の要件がないようです。助言がありますか?
レジェンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.