Làm cách nào để tính toán phân kỳ Kullback-Leibler khi PMF chứa 0s?


9

Tôi có thời gian sau

nhập mô tả hình ảnh ở đây

thu được bằng cách sử dụng dữ liệu được đăng dưới đây.

Đối với kích thước cửa sổ trượt là 10, tôi đang cố gắng tính toán độ phân kỳ KL giữa PMF của các giá trị trong cửa sổ trượt hiện tại và PMF của lịch sử với mục tiêu cuối cùng là vẽ giá trị của phân kỳ KL theo thời gian để tôi có thể so sánh hai chuỗi thời gian.

Đến bây giờ, có một vấn đề về khái niệm mà tôi đang gặp phải (mà tôi sẽ giải thích bằng 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. ]))

Vấn đề là kết quả PMFchứa 0s để tôi thực sự không thể nhiều hai PMFgiây để có được phân kỳ KL. Ai đó có thể cho tôi biết làm thế nào để giảm thiểu vấn đề này?

Dữ liệu

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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

Câu trả lời:


12

Một mẹo tiêu chuẩn để giải quyết vấn đề này là sử dụng cái được gọi là hiệu chỉnh Laplace. Trong thực tế, bạn thêm một "số" vào tất cả các thùng và tái chuẩn hóa. Thay vào đó, cũng có những lý do chính đáng để thêm số đếm 0,5: công cụ ước tính cụ thể này được gọi là công cụ ước tính Krichevsky-Trofimov .


4

Một cách để suy nghĩ về vấn đề của bạn là bạn không thực sự tin tưởng vào PMF mà bạn đã tính toán từ biểu đồ. Bạn có thể cần một chút trước trong mô hình của bạn. Vì nếu bạn tự tin vào PMF, thì phân kỳ KL sẽ là vô cùng vì bạn có các giá trị trong một PMF không thể có trong PMF khác. Mặt khác, nếu bạn có một chút nhẹ nhàng, không thông tin trước đó thì luôn có một xác suất nhỏ để thấy một kết quả nhất định. Một cách để giới thiệu điều này sẽ là thêm một vectơ nhân với một số vô hướng vào biểu đồ. Sự phân bố trước lý thuyết bạn sẽ được sử dụng là phân phối Dirichlet , đó là liên hợp trước của phân phối phân loại . Nhưng với mục đích thực tế, bạn có thể làm một cái gì đó như

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

nơi wmột số trọng lượng tích cực, tùy thuộc vào mạnh mẽ như thế nào trước khi bạn muốn có.


1
+1 cho thời gian và câu trả lời của bạn. Cảm ơn bạn. Tôi đã đọc về điều này trong 8 giờ qua và có vẻ như tôi cần thêm một trước khi làm việc này. Tuy nhiên, tôi không thể tìm thấy một tài liệu tham khảo phù hợp giải thích thực tế này. Đây có phải là một cái gì đó rõ ràng trong cộng đồng thống kê hoặc bạn sẽ biết một tài liệu tham khảo chỉ ra yêu cầu này cho phân kỳ KL?
Truyền thuyết

3

Tôi sẽ bin dữ liệu để bạn có thể so sánh hai PMF; đưa ra hai ước tính PMFP^Q^, bạn có thể tính toán KLD đơn giản là: DKL(P^Q^)iP^(i)logP^(i)Q^(i), Ở đâu i chạy qua các thùng.

Xin lỗi, tôi không biết R.


1
+1 cho thời gian của bạn. Tôi đã cập nhật câu hỏi của mình với vấn đề tôi gặp phải với công thức này. Tôi không thể hiểu làm thế nào để giải quyết vấn đề này khi PMF chứa 0s. Bạn có thể có bất kỳ ý kiến ​​về làm thế nào để giảm thiểu vấn đề này?
Truyền thuyết

Không bằng không cho thấy sự vắng mặt của dữ liệu hay nó là một giá trị hợp lệ? Nếu trước đây, bạn chỉ cần bỏ qua nó. Nếu sau này, bạn có thể dành một trong các thùng cho giá trị 0.
Emre

Bởi vì đây là chuỗi thời gian, trong một số trường hợp, không có sự kiện nào và trong một số trường hợp thiếu dữ liệu nên tôi đã thêm số 0 để thay thế cho giá trị bị thiếu. Bạn mang đến một điểm thú vị: Tôi có thể bỏ qua các giá trị trong một khoảng thời gian trong trường hợp chúng bị thiếu không? Điều đó có gây tử vong không?
Truyền thuyết

Tôi sẽ giữ lại các số không khi chọn các phần tử trong cửa sổ chuyển động, nhưng bỏ qua chúng cho các mục đích tính toán KLD.
Emre

Hiểu. Cảm ơn bạn! Được chấp nhận như một câu trả lời. Câu hỏi cuối cùng của tôi sẽ liên quan đến một số liệu liên quan được gọi là phân kỳ "Jensen-Shannon". Tôi tình cờ gặp số liệu này nhưng số liệu này dường như không có yêu cầu về tính liên tục tuyệt đối. Bất kỳ đề xuất?
Truyền thuyết
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.