Kernelised k Hàng xóm gần nhất


12

Tôi mới sử dụng hạt nhân và đã gặp khó khăn trong khi cố gắng nhân kernel kNN.

Sơ bộ

Tôi đang sử dụng hạt nhân đa thức:
K(x,y)=(1+x,y)d

KNN Euclid điển hình của bạn sử dụng số liệu khoảng cách sau:
d(x,y)=||xy||

Đặt map vào một số không gian đặc trưng chiều cao hơn. Sau đó, bình phương của số liệu khoảng cách trên trong không gian Hilbert có thể được biểu thị bằng các sản phẩm bên trong: f(x)xd2(f(x),f(y))=K(x,x)2K(x,y)+K(y,y)

Lưu ý rằng nếu chúng ta để phần trên sẽ suy biến theo khoảng cách Euclide tiêu chuẩn của bạn.d=1


Câu hỏi

Vấn đề chính tôi gặp phải là tôi không thể thấy cách nhân kernel kNN tạo ra kết quả tốt hơn như được thể hiện bằng thực nghiệm, ví dụ, bài báo này (cảnh báo, liên kết pdf trực tiếp!).

Câu trả lời:


24

Định lý của Cover: Nói một cách rõ ràng, nó cho biết bất kỳ tập hợp điểm hữu hạn ngẫu nhiên nào (có nhãn tùy ý), sau đó với xác suất cao, các điểm này có thể được phân tách tuyến tính [1] bằng cách ánh xạ chúng lên chiều cao hơn [2].

Hàm ý: Tuyệt vời, điều mà định lý này nói với tôi là nếu tôi lấy tập dữ liệu của mình và ánh xạ các điểm này lên một chiều cao hơn, thì tôi có thể dễ dàng tìm thấy một bộ phân loại tuyến tính. Tuy nhiên, hầu hết các trình phân loại cần tính toán một số loại tương tự như sản phẩm chấm và điều này có nghĩa là độ phức tạp thời gian của thuật toán phân loại tỷ lệ thuận với kích thước của điểm dữ liệu. Vì vậy, kích thước cao hơn có nghĩa là độ phức tạp thời gian lớn hơn (chưa kể đến độ phức tạp không gian để lưu trữ các điểm chiều lớn đó).

Kernel Trick: Gọi là kích thước ban đầu của các điểm dữ liệu và là ánh xạ ánh xạ các điểm này tới một không gian có kích thước . Bây giờ, nếu có một hàm lấy đầu vào và từ không gian ban đầu và tính , thì tôi có thể tính toán sản phẩm chấm trong không gian chiều cao hơn nhưng ở độ phức tạp thay vì .nfN(>>n)KxyK(x,y)=f(x),f(y)O(n)O(N)

Hàm ý: Vì vậy, nếu thuật toán phân loại chỉ phụ thuộc vào sản phẩm chấm và không phụ thuộc vào bản đồ thực tế , tôi có thể sử dụng thủ thuật kernel để chạy thuật toán trong không gian chiều cao mà hầu như không phải trả thêm chi phí.f

Liệu phân tách tuyến tính có nghĩa là các điểm từ cùng một lớp sẽ tiến gần hơn các điểm từ các lớp khác nhau không? Không, không có đảm bảo như vậy. Phân tách tuyến tính không thực sự ngụ ý rằng điểm từ cùng một lớp đã tiến gần hơn hoặc các điểm từ hai lớp khác nhau đã tiến xa hơn.

Vậy tại sao kNN sẽ làm việc? Nó không cần! Tuy nhiên, nếu có, thì đó hoàn toàn là do kernel.

Điều đó nghĩa là gì? Hãy xem xét vectơ đặc trưng boolean . Khi bạn sử dụng hạt nhân đa thức bậc hai, vectơ đặc trưng được ánh xạ tới vectơx=(x1,x2)x(x12,2x1x2,x22). Từ một vectơ các tính năng boolean, chỉ bằng cách sử dụng đa thức bậc hai, chúng ta đã thu được một vectơ đặc trưng của "liên từ". Do đó, các hạt nhân tự sản xuất một số bản đồ tính năng tuyệt vời. Nếu dữ liệu của bạn có các tính năng gốc tốt và nếu dữ liệu của bạn có thể được hưởng lợi từ các bản đồ tính năng được tạo bởi các hạt nhân này. Về lợi ích, ý tôi là các tính năng được tạo ra bởi các bản đồ tính năng này có thể mang các điểm từ cùng một lớp đến gần nhau hơn và đẩy các điểm từ các lớp khác nhau đi, sau đó kNN sẽ được hưởng lợi từ việc sử dụng hạt nhân. Mặt khác, kết quả sẽ không khác gì so với những gì bạn nhận được từ việc chạy kNN trên dữ liệu gốc.

Vậy thì tại sao lại dùng kernel kNN? Chúng tôi đã chỉ ra rằng độ phức tạp tính toán của việc sử dụng hạt nhân chỉ nhỉnh hơn một chút so với kNN thông thường và nếu dữ liệu có lợi từ việc sử dụng hạt nhân thì tại sao không sử dụng chúng?

Có bài báo nào đã nghiên cứu loại dữ liệu nào có thể hưởng lợi từ hạt nhân trong kNN không? Theo tôi biết, không.

[1] http://en.wikipedia.org/wiki/Linear_separability
[2] http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4038449&tag=1

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.