Phân kỳ Kullback-Leibler cho hai mẫu


10

Tôi đã cố gắng thực hiện một ước tính bằng số của Phân kỳ Kullback-Leibler cho hai mẫu. Để gỡ lỗi triển khai, hãy vẽ các mẫu từ hai bản phân phối bình thường và .N ( 1 , 2 )N(0,1)N(1,2)

Đối với một ước tính đơn giản, tôi đã tạo ra hai biểu đồ và cố gắng tính gần đúng số nguyên. Tôi đã bị mắc kẹt với việc xử lý các phần của biểu đồ trong đó các thùng của một trong các biểu đồ bằng 0 sao cho tôi kết thúc bằng cách chia cho 0 hoặc logarit bằng 0. Làm thế nào để tôi xử lý vấn đề này?

Một câu hỏi liên quan xuất hiện trong đầu tôi: Làm thế nào để tính toán chính xác Phân kỳ KL giữa hai phân phối thống nhất khác nhau? Tôi có phải hạn chế tích hợp với sự hỗ trợ của cả hai bản phân phối không?


Vâng, sự hỗ trợ của phân phối bình thường là tập hợp các số thực. Không có vấn đề gì trong toán học thuần túy, nhưng vâng, đối với phép tính gần đúng số của bạn, bạn cần đảm bảo kích thước mẫu của bạn đủ lớn so với khu vực bạn muốn tích hợp. Bạn sẽ không thể tích hợp (-inf, + inf) như bạn có thể trong toán học thuần túy ... Đi tìm cái gì hợp lý? Nếu bạn có nhiều hơn 3 độ lệch chuẩn so với giá trị trung bình, nó sẽ khá mỏng ...
Matthew Gunn

1
Đối với câu hỏi thứ hai của bạn, phân kỳ KL giữa hai phân phối thống nhất khác nhau là không xác định ( là không xác định). Tương tự, phân kỳ KL cho hai phân phối theo kinh nghiệm là không xác định trừ khi mỗi mẫu có ít nhất một quan sát có cùng giá trị như mọi quan sát trong mẫu khác. log(0)
jbowman

@jbowman Ghi chú nhỏ. Mặc dù bạn đúng rằng không được xác định (hoặc ), theo thông lệ trong lý thuyết thông tin để coi là . log(0)log(0)00
Luca Citi

Câu trả lời:


9

Phân kỳ Kullback-Leibler được định nghĩa là để tính toán (ước tính) điều này từ dữ liệu thực nghiệm chúng ta sẽ cần, có thể, một số ước tính của các hàm mật độ . Vì vậy, một điểm khởi đầu tự nhiên có thể thông qua ước tính mật độ (và sau đó, chỉ là tích hợp số). Làm thế nào tốt hay ổn định một phương pháp như vậy tôi sẽ không biết.

KL(P||Q)=p(x)logp(x)q(x)dx
p(x),q(x)

Nhưng trước tiên là câu hỏi thứ hai của bạn, sau đó tôi sẽ trở lại câu hỏi đầu tiên. Hãy nói rằng và có mật độ đồng đều trên và . Sau đó, trong khi khó xác định hơn, nhưng giá trị hợp lý duy nhất để cung cấp cho nó là , theo như tôi có thể thấy, vì nó liên quan tích hợp mà chúng ta có thể chọn để diễn giải là . Kết quả này là hợp lý từ cách giải thích mà tôi đưa ra trong Trực giác về sự khác biệt của Kullback-Leibler (KL)pq[0,1][0,10]KL(p||q)=log10KL(q||p)log(1/0)log

Trở lại câu hỏi chính. Nó được hỏi theo một cách rất không tham số, và không có giả định nào được nêu về mật độ. Có lẽ một số giả định là cần thiết. Nhưng giả sử hai mật độ được đề xuất là mô hình cạnh tranh cho cùng một hiện tượng, có lẽ chúng ta có thể giả sử chúng có cùng một biện pháp thống trị: phân kỳ KL giữa phân phối xác suất liên tục và rời rạc sẽ luôn là vô hạn. Một bài viết giải quyết câu hỏi này như sau: https://pdfs.semanticscholar.org/1fbd/31b690e078ce938f73f14462fceadc2748bf.pdf Họ đề xuất một phương pháp không cần ước tính mật độ sơ bộ và phân tích các thuộc tính của nó.

(Có nhiều giấy tờ khác). Tôi sẽ trở lại và đăng một số chi tiết từ bài báo đó, những ý tưởng.

 EDIT               

Một số ý tưởng từ bài báo đó, đó là về ước tính phân kỳ KL với các mẫu iid từ các phân phối hoàn toàn liên tục. Tôi cho thấy đề xuất của họ cho các phân phối một chiều, nhưng họ cũng đưa ra một giải pháp cho các vectơ (sử dụng ước tính mật độ lân cận gần nhất). Đối với bằng chứng đọc giấy!

Họ đề xuất sử dụng một phiên bản của hàm phân phối theo kinh nghiệm, nhưng được nội suy tuyến tính giữa các điểm mẫu để có được một phiên bản liên tục. Họ định nghĩa trong đó là hàm bước Heavyside, nhưng được xác định sao cho . Sau đó, hàm đó được nội suy tuyến tính (và mở rộng theo chiều ngang ngoài phạm vi) là ( cho liên tục). Sau đó, họ đề xuất ước tính phân kỳ Kullback-Leibler theo trong đó và

Pe(x)=1ni=1nU(xxi)
UU(0)=0.5Pcc
D^(PQ)=1ni=1nlog(δPc(xi)δQc(xi))
δPc=Pc(xi)Pc(xiϵ)ϵ là một số nhỏ hơn khoảng cách nhỏ nhất của các mẫu.

Mã R cho phiên bản của hàm phân phối theo kinh nghiệm mà chúng ta cần là

my.ecdf  <-  function(x)   {
    x   <-   sort(x)
    x.u <-   unique(x)
    n  <-  length(x) 
    x.rle  <-  rle(x)$lengths
    y  <-  (cumsum(x.rle)-0.5) / n
    FUN  <-  approxfun(x.u, y, method="linear", yleft=0, yright=1,
                           rule=2)
    FUN
}          

lưu ý rằng rleđược sử dụng để chăm sóc các trường hợp với các bản sao trong x.

Sau đó, ước tính của phân kỳ KL được đưa ra bởi

KL_est  <-  function(x, y)   {
    dx  <-  diff(sort(unique(x)))
    dy  <-  diff(sort(unique(y)))
    ex  <-  min(dx) ; ey  <-  min(dy)
    e   <-  min(ex, ey)/2
    n   <-  length(x)    
    P  <-   my.ecdf(x) ; Q  <-  my.ecdf(y)
    KL  <-  sum( log( (P(x)-P(x-e))/(Q(x)-Q(x-e)))) / n
    KL              
}

Sau đó, tôi hiển thị một mô phỏng nhỏ:

KL  <-  replicate(1000, {x  <-  rnorm(100)
                         y <- rt(100, df=5)
                         KL_est(x, y)})
hist(KL, prob=TRUE)

đưa ra biểu đồ sau, hiển thị (ước tính) phân phối lấy mẫu của công cụ ước tính này:

Phân phối lấy mẫu của công cụ ước tính KL

Để so sánh, chúng tôi tính toán phân kỳ KL trong ví dụ này bằng tích hợp số:

LR  <-  function(x) dnorm(x,log=TRUE)-dt(x,5,log=TRUE)
100*integrate(function(x) dnorm(x)*LR(x),lower=-Inf,upper=Inf)$value
[1] 3.337668

hmm ... sự khác biệt đủ lớn để có nhiều điều ở đây để điều tra!


5

Mở rộng một chút về câu trả lời của kjetil-b-halvorsen và xin lỗi vì đã không bình luận, tôi không có tiếng tăm:

  1. Tôi có cảm giác rằng tính toán phân tích phải là (không nhân với 100):

LR <- function(x) dnorm(x,log=TRUE)-dt(x,5,log=TRUE) integrate(function(x) dnorm(x)*LR(x),lower=-Inf,upper=Inf)$value

  1. Nếu tôi đúng, công cụ ước tính không hội tụ đến phân kỳ KL, nhưng sự hội tụ được ghi là: . Mũi tên đại diện là sự hội tụ. D (P||Q)-1D(P||Q)D^(P||Q)D^(P||Q)1D(P||Q)

Một khi hai điều chỉnh được thực hiện, kết quả có vẻ thực tế hơn.


Cảm ơn, tôi sẽ xem xét điều này và cập nhật câu trả lời của tôi.
kjetil b halvorsen
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.