K-Láng giềng gần nhất (KNN)
Khám phá cách K-Nearest Neighbors (KNN) đơn giản hóa việc học máy bằng cách tiếp cận trực quan, phi tham số cho các tác vụ phân loại và hồi quy.
K-Nearest Neighbors (KNN) là một thuật toán học có giám sát nền tảng được sử dụng cho cả bài toán phân loại và hồi quy. Nó được coi là thuật toán dựa trên trường hợp hoặc "học lười biếng" vì nó không xây dựng mô hình trong giai đoạn dữ liệu huấn luyện . Thay vào đó, nó lưu trữ toàn bộ tập dữ liệu và đưa ra dự đoán bằng cách tìm 'K' trường hợp (láng giềng) giống nhau nhất trong dữ liệu được lưu trữ. Ý tưởng cốt lõi là các điểm dữ liệu tương tự tồn tại ở gần nhau. Đối với một điểm dữ liệu mới, chưa được phân loại, KNN xác định các láng giềng gần nhất của nó và sử dụng nhãn của chúng để xác định phân loại hoặc giá trị của chính nó.
KNN hoạt động như thế nào?
Thuật toán KNN hoạt động dựa trên nguyên lý tương đồng đơn giản, thường được đo bằng thước đo khoảng cách. Thước đo phổ biến nhất là khoảng cách Euclid, mặc dù có thể sử dụng các thước đo khác tùy thuộc vào tập dữ liệu.
Quá trình đưa ra dự đoán rất đơn giản:
- Chọn giá trị K : Số lượng láng giềng (K) cần xem xét là một siêu tham số quan trọng. Việc lựa chọn K có thể ảnh hưởng đáng kể đến hiệu suất của mô hình.
- Tính toán khoảng cách : Đối với một điểm dữ liệu mới, thuật toán sẽ tính toán khoảng cách giữa điểm đó và mọi điểm khác trong tập dữ liệu đào tạo.
- Xác định Hàng xóm : Xác định K điểm dữ liệu từ tập huấn luyện gần nhất với điểm mới. Đây là "hàng xóm gần nhất".
- Đưa ra dự đoán:
- Đối với các tác vụ phân loại , thuật toán thực hiện bỏ phiếu theo đa số. Điểm dữ liệu mới được gán lớp phổ biến nhất trong số K lân cận gần nhất của nó. Ví dụ: nếu K = 5 và ba lân cận thuộc Lớp A và hai lân cận thuộc Lớp B, điểm mới được phân loại là Lớp A.
- Đối với các tác vụ hồi quy , thuật toán sẽ tính toán giá trị trung bình của K lân cận gần nhất. Giá trị trung bình này trở thành giá trị dự đoán cho điểm dữ liệu mới.
Ứng dụng trong thế giới thực
Tính đơn giản và trực quan của KNN khiến nó hữu ích trong nhiều ứng dụng khác nhau, đặc biệt là khi dùng làm mô hình cơ sở.
- Hệ thống Đề xuất : KNN là một lựa chọn phổ biến để xây dựng công cụ đề xuất. Ví dụ: một dịch vụ phát trực tuyến có thể đề xuất phim cho người dùng bằng cách xác định những người dùng khác (hàng xóm) có lịch sử xem phim tương tự. Những bộ phim mà những người hàng xóm này yêu thích, nhưng người dùng mục tiêu chưa xem, sau đó sẽ được đề xuất. Kỹ thuật này là một dạng lọc cộng tác .
- Dịch vụ Tài chính : Trong lĩnh vực tài chính, KNN có thể được sử dụng để chấm điểm tín dụng. Bằng cách so sánh người nộp đơn vay mới với cơ sở dữ liệu các người nộp đơn trước đây có kết quả tín dụng đã biết, thuật toán có thể dự đoán liệu người nộp đơn mới có khả năng vỡ nợ hay không. Những người lân cận là những người nộp đơn trước đây có hồ sơ tài chính tương tự (ví dụ: tuổi, thu nhập, mức nợ), và lịch sử vỡ nợ của họ sẽ ảnh hưởng đến dự đoán. Điều này giúp tự động hóa các đánh giá rủi ro ban đầu.
KNN so với các khái niệm liên quan
Điều quan trọng là phải phân biệt KNN với các thuật toán học máy thông thường khác:
- Phân cụm K-Means : Mặc dù tên gọi tương tự nhau, nhưng chức năng của chúng rất khác nhau. K-Means là một thuật toán học không giám sát được sử dụng để phân chia dữ liệu thành K nhóm con (cụm) riêng biệt, không chồng chéo. Ngược lại, KNN là một thuật toán có giám sát được sử dụng để dự đoán dựa trên dữ liệu đã được gán nhãn.
- Máy vectơ hỗ trợ (SVM) : SVM là một thuật toán có giám sát, tìm kiếm siêu phẳng tốt nhất có thể phân tách các lớp khác nhau trong không gian đặc trưng. Trong khi KNN đưa ra quyết định dựa trên độ tương đồng lân cận cục bộ, SVM hướng đến việc tìm kiếm một ranh giới tối ưu toàn cục, khiến phương pháp này khác biệt về cơ bản. Bạn có thể tìm hiểu thêm chi tiết trên trang Scikit-learn SVM .
- Cây Quyết định : Cây Quyết định phân loại dữ liệu bằng cách tạo ra một mô hình quyết định phân cấp dựa trên quy tắc. Điều này tạo ra một cấu trúc dạng cây, trong khi KNN dựa vào độ tương đồng dựa trên khoảng cách mà không cần học các quy tắc rõ ràng. Bạn có thể tìm hiểu thêm tại tài liệu về Cây Quyết định của Scikit-learn .
Mặc dù KNN là một công cụ hữu ích để hiểu các khái niệm học máy cơ bản và sử dụng trên các tập dữ liệu nhỏ hơn, được quản lý tốt, nhưng nó có thể đòi hỏi nhiều tính toán để suy luận thời gian thực với dữ liệu lớn . Đối với các tác vụ thị giác máy tính phức tạp như phát hiện đối tượng thời gian thực, các mô hình tiên tiến hơn như Ultralytics YOLO được ưu tiên hơn nhờ tốc độ và độ chính xác vượt trội. Các mô hình này có thể dễ dàng được đào tạo và triển khai bằng các nền tảng như Ultralytics HUB .