K-Nearest Neighbors (KNN)
Khám phá cách K-Nearest Neighbors (KNN) đơn giản hóa machine learning với phương pháp 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 cơ bản, được sử dụng cho cả các tác vụ phân loại và hồi quy. Nó được coi là một thuật toán dựa trên instance 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' instance (hàng xóm) tương tự nhất trong dữ liệu đã 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 hàng xóm 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 một nguyên tắc đơn giản về sự tương đồng, thường được đo bằng một độ đo khoảng cách. Phổ biến nhất là khoảng cách Euclidean, mặc dù các độ đo khác có thể được sử dụng tùy thuộc vào tập dữ liệu.
Quy trình đưa ra dự đoán rất đơn giản:
- Chọn giá trị của K: Số lượng hàng xóm (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 khoảng cách giữa điểm đó và mọi điểm khác trong tập dữ liệu huấn luyện.
- Xác định hàng xóm: Nó 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à những "hàng xóm gần nhất".
- Dự đoán:
- Đối với các tác vụ phân loại, thuật toán thực hiện một cuộc bỏ phiếu đa số. Điểm dữ liệu mới được gán cho lớp phổ biến nhất trong số K hàng xóm gần nhất của nó. Ví dụ: nếu K=5 và ba hàng xóm thuộc Lớp A và hai hàng xóm thuộc Lớp B, thì đ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 tính trung bình các giá trị của K hàng xóm gần nhất của nó. Giá trị trung bình này trở thành giá trị dự đoán cho điểm dữ liệu mới.
Các Ứng dụng Thực tế
Sự đơn giản và trực quan của KNN làm cho nó hữu ích trong nhiều ứng dụng khác nhau, đặc biệt là như một 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ác 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 tương tự. Các bộ phim được những người hàng xóm này yêu thích, mà người dùng mục tiêu chưa xem, sau đó được đề xuất. Kỹ thuật này là một hình thức của lọc cộng tác.
- Dịch vụ tài chính: Trong 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 một người đăng ký vay mới với cơ sở dữ liệu của những người đăng ký 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 đăng ký mới có khả năng vỡ nợ hay không. Những người hàng xóm là những người đăng ký 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ọ cung cấp thông tin cho 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 (machine learning) phổ biến khác:
- K-Means Clustering: Mặc dù tên gọi tương tự, 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 (unsupervised learning) được sử dụng để phân vùng dữ liệu thành K nhóm con riêng biệt, không chồng chéo (cụm). Ngược lại, KNN là một thuật toán có giám sát (supervised) đượ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 cách tìm ra 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 sự tương đồng lân cận cục bộ, SVM nhằm mục đích tìm một ranh giới tối ưu toàn cục, làm cho nó khác biệt cơ bản trong cách tiếp cận. Bạn có thể tìm thêm chi tiết trên trang Scikit-learn SVM.
- Decision Trees (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 các quyết định phân cấp, dựa trên quy tắc. Điều này dẫn đến một cấu trúc giống như cây, trong khi KNN dựa vào sự 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 Scikit-learn.
Mặc dù KNN là một công cụ có giá trị để hiểu các khái niệm cơ bản về machine learning và để sử dụng trên các bộ dữ liệu nhỏ hơn, được tuyển chọn kỹ lưỡng, nhưng nó có thể tốn kém về mặt tính toán đối với suy luận theo 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ư nhận diện đối tượng theo 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 vì tốc độ và độ chính xác vượt trội của chúng. Các mô hình này có thể dễ dàng được huấn luyện và triển khai bằng cách sử dụng các nền tảng như Ultralytics HUB.