Xử lý các mối quan hệ, trọng lượng và bỏ phiếu trong kNN


13

Tôi đang lập trình một thuật toán kNN và muốn biết như sau:

Tie-break:

  1. Điều gì xảy ra nếu không có người chiến thắng rõ ràng trong cuộc bỏ phiếu đa số? Ví dụ: tất cả k hàng xóm gần nhất đến từ các lớp khác nhau, hoặc với k = 4 có 2 hàng xóm từ lớp A và 2 hàng xóm từ lớp B?
  2. Điều gì xảy ra nếu không thể xác định chính xác k hàng xóm gần nhất vì có nhiều hàng xóm có cùng khoảng cách? Ví dụ, đối với danh sách khoảng cách (x1;2), (x2;3.5), (x3;4.8), (x4;4.8), (x5;4.8), (x6;9.2), sẽ không thể xác định k = 3 hoặc k = 4 hàng xóm gần nhất, bởi vì hàng xóm thứ 3 đến thứ 5 đều có cùng khoảng cách.

Trọng lượng:

  1. Tôi đọc nó là tốt để cân trọng lượng hàng xóm k gần nhất trước khi chọn lớp chiến thắng. Làm thế nào mà làm việc? Tức là hàng xóm có trọng số như thế nào và sau đó lớp học được xác định như thế nào?

Đa số phiếu thay thế:

  1. Có các quy tắc / chiến lược khác để xác định lớp chiến thắng ngoài đa số phiếu bầu không?

Câu trả lời:


8

Cách lý tưởng để phá vỡ cà vạt cho k hàng xóm gần nhất theo quan điểm của tôi là giảm k xuống 1 cho đến khi bạn phá vỡ cà vạt. Điều này sẽ luôn hoạt động bất kể lược đồ trọng số phiếu bầu, vì không thể hòa nhau khi k = 1. Nếu bạn tăng k , trong khi chờ sơ đồ trọng số và số lượng danh mục, bạn sẽ không thể đảm bảo ngắt kết nối.


10
Tại sao hòa là không thể khi k = 1, nếu có hai hàng xóm thuộc các lớp khác nhau có cùng khoảng cách, làm thế nào để bạn xác định hàng xóm gần nhất với k = 1?
j5shi

6

Khi thực hiện kNN, bạn cần ghi nhớ một điều, đó không phải là thuật toán có nguồn gốc toán học, mà là một trình phân loại / hồi quy đơn giản dựa trên một trực giác - hàm bên dưới không thay đổi nhiều khi các đối số không thay đổi nhiều Hay nói cách khác, hàm bên dưới là cục bộ gần như không đổi. Với giả định này, bạn có thể ước tính giá trị của hàm cơ bản trong bất kỳ điểm đã cho nào, bằng trung bình (có thể có trọng số) của các giá trị của các điểm k gần nhất.

Giữ điều này trong tâm trí, bạn có thể nhận ra rằng không có sự bắt buộc rõ ràng về những việc cần làm khi không có người chiến thắng rõ ràng trong việc bỏ phiếu đa số. Bạn luôn có thể sử dụng một k lẻ, hoặc sử dụng một số trọng số tiêm.

Trong trường hợp hàng xóm 3 đến 5 ở cùng một khoảng cách so với điểm quan tâm, bạn có thể chỉ sử dụng hai hoặc sử dụng tất cả 5. Một lần nữa, hãy nhớ rằng kNN không phải là một thuật toán xuất phát từ phân tích toán học phức tạp, mà chỉ là một trực giác đơn giản. Tùy thuộc vào cách bạn muốn đối phó với những trường hợp đặc biệt đó.

1||x-y||2

Cũng đã có một bài báo hay của Samory Kpotufe và Abdeslam Boularias trong năm nay về NIPS liên quan đến vấn đề tìm trọng số phù hợp. Trực giác chung của họ, là hàm cơ bản khác nhau theo các hướng khác nhau (nghĩa là các đạo hàm riêng khác nhau của nó có độ lớn khác nhau), do đó, sẽ rất khôn ngoan khi thay đổi số liệu / trọng số theo trực giác này. Họ tuyên bố thủ thuật này thường cải thiện hiệu suất của hồi quy kNN và hạt nhân, và tôi nghĩ rằng họ thậm chí còn có một số kết quả lý thuyết để sao lưu xác nhận này (mặc dù tôi không chắc những kết quả lý thuyết đó thực sự tuyên bố là gì, tôi không có thời gian để đi qua toàn bộ giấy tờ chưa). Bài viết có thể được tải xuống miễn phí từ các trang web của họ, hoặc sau khi "Trọng lượng Gradient giúp điều chỉnh các biến áp không đối xứng" của Google.

Bây giờ, bạn có thể sẽ muốn biết làm thế nào bạn có thể tìm đúng k, số liệu, trọng số, hành động để thực hiện khi có các trận hòa và như vậy. Điều đáng buồn là, về cơ bản, thật khó để đến đúng siêu âm sau một số suy nghĩ sâu sắc, có lẽ bạn sẽ cần phải kiểm tra các bó siêu âm khác nhau và xem cái nào hoạt động tốt trên một số xác nhận hợp lệ. Nếu bạn có một số tài nguyên tính toán và muốn tự động đến đúng các tham số ở một bộ siêu đường kính tốt, có một ý tưởng gần đây (mà tôi rất thích) để sử dụng các quy trình Gaussian để tối ưu hóa không có đạo hàm trong cài đặt đó.

Hãy để tôi giải thích - việc tìm tập hợp các siêu đường kính (nghĩa là giảm thiểu lỗi trên dữ liệu xác nhận), có thể được xem như là một vấn đề tối ưu hóa. Thật không may, trong cài đặt này, chúng tôi không thể lấy được độ dốc của hàm mà chúng tôi cố gắng tối ưu hóa (đó là điều chúng tôi thường muốn làm, để thực hiện giảm độ dốc hoặc một số phương pháp nâng cao hơn). Các quy trình Gaussian có thể được sử dụng trong cài đặt này, để tìm các bộ siêu đường kính, có cơ hội lớn, để thực hiện tốt hơn các quy trình tốt nhất mà chúng tôi đã tìm thấy cho đến thời điểm này. Do đó, bạn có thể chạy thuật toán với một số siêu đường kính, sau đó hỏi quy trình Gaussian để thử cái nào là tốt nhất để thử tiếp theo, thử những cái đó, v.v.

Để biết chi tiết, hãy tìm bài viết "Tối ưu hóa thực tế về thuật toán học máy" của tác giả Jasper Snoek, Hugo Larochelle và Ryan P Adams (cũng được tìm thấy trên trang web của họ hoặc thông qua Google).


2
Cảnh báo: tối ưu hóa siêu âm để có độ chính xác tốt nhất trên bộ xác nhận là một cách đơn giản để lãng quên quá mức. Bạn muốn CV lồng nhau.

Một lưu ý nhanh rằng "một k lẻ" sẽ không nhất thiết phải giải quyết vấn đề ràng buộc ... ví dụ: k = 3 khi phân loại ba nhóm. Bên cạnh đó tôi đồng ý. Giải thích tốt đẹp.
Pyll

1

Về phần buộc này, ý tưởng cơ bản tốt nhất cho các mối quan hệ thường là phá vỡ ngẫu nhiên, do đó, chọn lớp ngẫu nhiên của tất cả các chiến thắng bỏ phiếu và chọn ngẫu nhiên một tập hợp con các đối tượng bị trói đủ lớn để điền vào k.

Một giải pháp như vậy nhấn mạnh thực tế rằng đó là những trường hợp bệnh lý đơn giản là không cung cấp đủ thông tin để đưa ra quyết định trong chế độ kNN. BTW nếu chúng là phổ biến cho dữ liệu của bạn, có lẽ bạn nên thử một số khoảng cách khác biệt hơn?


0

Một cách có thể là để thuật toán tự động tăng hoặc giảm k cho đến khi bạn có được một người chiến thắng rõ ràng.

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.