Đánh giá hiệu quả ước tính mật độ hạt nhân đa chiều


9

Tôi đã thấy một lượng tài liệu hợp lý về cách chọn hạt nhân và băng thông khi tính toán ước tính mật độ hạt nhân, nhưng tôi hiện đang quan tâm đến cách cải thiện thời gian cần thiết để đánh giá KDE kết quả ở một số điểm tùy ý.

Trong trường hợp của tôi, tôi đang sử dụng hạt nhân Gaussian đa chiều (2D hoặc 3D) với hiệp phương sai đường chéo (tức là mỗi chiều là độc lập). Băng thông ở mỗi chiều có thể khác nhau và được chọn bằng cách sử dụng các lân cận gần nhất. Tuy nhiên, câu hỏi của tôi có lẽ mở rộng đến các phương pháp lựa chọn băng thông và hạt nhân khác nhau.

Giả sử tôi có điểm dữ liệu và muốn đánh giá KDE kết quả tại điểm lưới N. Việc thực hiện đơn giản liên quan đến việc đánh giá pdf M N nhiều lần thông thường . Đối với mục đích của tôi, MN đều theo thứ tự hàng ngàn và việc đánh giá đã trở thành nút cổ chai trong mã của tôi.MNMNMN

Tôi không biết liệu có bất kỳ cải tiến nào được chấp nhận chung cho phương pháp cơ bản này hay không. Tôi tìm thấy bài báo này , trong đó tuyên bố sẽ giảm độ phức tạp từ xuống O ( M + N ) . Tuy nhiên, phương pháp này chưa được triển khai trong bất kỳ thư viện R hoặc Python 'tiêu chuẩn' nào mà tôi biết - điều này cho thấy nó chưa được áp dụng rộng rãi?O(MN)O(M+N)

Cảm ơn cho bất kỳ con trỏ bạn có thể cung cấp.

Câu trả lời:


12

Tôi sẽ cung cấp một câu trả lời (không đầy đủ) ở đây trong trường hợp nó giúp được bất kỳ ai khác.

  1. Có một số phương pháp toán học gần đây để tính toán KDE hiệu quả hơn. Một là Biến đổi Gauss nhanh, được công bố trong một số nghiên cứu bao gồm cả nghiên cứu này . Một cách khác là sử dụng cách tiếp cận dựa trên cây (cây KD hoặc cây bóng) để tìm ra nguồn nào đóng góp vào một điểm lưới nhất định. Không rõ liệu điều này đã được xuất bản chưa, nhưng nó được thực hiện trong Scikit-learn và dựa trên các phương pháp được phát triển bởi Jake Vanderplas .
  2. Nếu các phương thức này hơi khó, bạn có thể viết một cái gì đó cơ bản hơn một chút để đạt được một nhiệm vụ tương tự. Tôi đã thử xây dựng một hình khối xung quanh mỗi điểm lưới, với độ dài các cạnh liên quan đến băng thông trong mỗi kích thước đó. Điều này không cho phép kiểm soát lỗi lớn, mặc dù nó giúp bạn tăng tốc.
  3. Cuối cùng, tính toán KDE khá dễ dàng song song, trên nhiều lõi CPU hoặc trên GPU. Tôi đang xem xét triển khai KDE trong CUDA, nhưng chưa thực hiện được.

Ồ, và tôi không có ý cầu xin ... nhưng nếu ai đó có thể vui lòng nêu ra điều này để cuối cùng tôi có thể thoát khỏi những giới hạn áp đặt cho người mới, điều đó sẽ được đánh giá rất cao :)
Gabriel
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.