2017-10-13 4 views
0

注意:この問題は実際にはテンソルフロー内で起こり、真のpdfと正確には異なるサンプルになります。しかし、原理は同じですが、私の目的は以下の警告を理解することです。Pythonで多変量ノルムからサンプリングすると、正定義エラーになりますか?

つまり、私はPythonで多変量法線からサンプリングしようとしています。つまり、任意の有効な共分散行列は正の半限定でなければならない。しかし、(それが半正定性のためのすべての試験に合格)のサンプリングのために使用されるいくつかの共分散行列は、次の警告を

A = array([[ 1.00000359e-01, -3.66802835e+00],[ -3.66802859e+00, 1.34643845e+02]], dtype=float32) 

いる私はコレスキーの両方を見つけることができる

/usr/local/lib/python3.6/site-packages/ipykernel/__main__.py:1: RuntimeWarning: covariance is not positive-semidefinite. 

一つのそのような行列である与えます(最小固有値は7.42144039e-05です)。

誰でもこのことが起こっている理由を教えてください。

(テンソルフローでは、上記の行列のコレスキー分解を行い、不正確なサンプルを受け取ってしまいます。

答えて

1

このpull requestの説明には、この警告を引き起こす要因に関する情報があります。 the sourceによると:

# Also check that cov is positive-semidefinite. If so, the u.T and v 
    # matrices should be equal up to roundoff error if cov is 
    # symmetrical and the singular value of the corresponding row is 
    # not zero. We continue to use the SVD rather than Cholesky in 
    # order to preserve current outputs. Note that symmetry has not 
    # been checked. 

あなたのケースでSVDとコレに基づいてテストが異なる結果を与えているようです。

関連する問題