K-Nearest Neighbors (KNN)
Khám phá K-Nearest Neighbors (KNN). Tìm hiểu cách thuật toán học có giám sát này hoạt động cho phân loại và hồi quy, việc sử dụng nó trong tìm kiếm thị giác và tích hợp với Ultralytics YOLO26.
K-Nearest Neighbors (KNN) là một thuật toán mạnh mẽ và trực quan được sử dụng trong lĩnh vực supervised learning cho cả các tác vụ phân loại và hồi quy. Được biết đến với sự đơn giản, KNN thường được phân loại là "lazy learner" (người học lười biếng) vì nó không xây dựng model hay học các tham số trong giai đoạn huấn luyện. Thay vào đó, nó ghi nhớ toàn bộ tập training data và chỉ thực hiện tính toán khi có yêu cầu dự đoán. Nguyên lý cốt lõi của thuật toán dựa trên độ tương đồng của đặc trưng: nó giả định rằng các điểm dữ liệu có các thuộc tính tương tự nhau sẽ nằm gần nhau trong không gian đặc trưng đa chiều.
Link to this sectionCách thức thuật toán vận hành#
Cơ chế của K-Nearest Neighbors được thúc đẩy bởi các phép tính khoảng cách. Khi một điểm truy vấn mới được đưa vào, thuật toán sẽ tìm kiếm trong tập dữ liệu đã lưu trữ để tìm ra số lượng 'K' các mẫu huấn luyện gần nhất với đầu vào mới.
-
Đo lường khoảng cách: Hệ thống tính toán khoảng cách giữa điểm truy vấn và mọi điểm khác trong cơ sở dữ liệu. Thước đo phổ biến nhất là Euclidean distance, giúp đo khoảng cách đường thẳng giữa các điểm. Các thước đo khác như Manhattan distance (hình học Taxicab) hoặc Minkowski distance có thể được sử dụng tùy thuộc vào loại dữ liệu.
-
Lựa chọn láng giềng: Sau khi tính toán các khoảng cách, thuật toán sẽ sắp xếp chúng và xác định 'K' mục nhập gần nhất.
-
Ra quyết định: - Đối với phân loại: Thuật toán sử dụng hệ thống "bỏ phiếu đa số". Nhãn lớp xuất hiện thường xuyên nhất trong số K láng giềng sẽ được gán cho điểm truy vấn. Cách này được sử dụng rộng rãi trong các tác vụ image classification cơ bản. - Đối với hồi quy: Dự đoán được tính bằng cách lấy trung bình giá trị của K láng giềng gần nhất để ước tính một biến liên tục.
Link to this sectionChọn 'K' phù hợp#
Việc chọn giá trị tối ưu cho 'K' là một bước quan trọng trong hyperparameter tuning. Việc lựa chọn K ảnh hưởng đáng kể đến hiệu suất của model và khả năng tổng quát hóa trên dữ liệu mới.
- Giá trị K thấp: Một K nhỏ (ví dụ: K=1) khiến model cực kỳ nhạy cảm với nhiễu và các giá trị ngoại lai trong dữ liệu, điều này có thể dẫn đến overfitting.
- Giá trị K cao: Một K lớn giúp làm mượt các ranh giới quyết định, giảm tác động của nhiễu nhưng có thể làm mờ các mẫu đặc trưng, dẫn đến underfitting.
Link to this sectionCác ứng dụng trong thực tế#
Mặc dù đơn giản hơn so với các mạng thần kinh sâu, KNN vẫn rất phù hợp trong AI hiện đại, đặc biệt là khi kết hợp với các kỹ thuật feature extraction nâng cao.
- Hệ thống gợi ý: KNN hỗ trợ collaborative filtering trong phát trực tuyến phương tiện và thương mại điện tử. Bằng cách xác định người dùng có lịch sử xem hoặc hành vi mua hàng tương tự (láng giềng), các nền tảng có thể gợi ý sản phẩm mà người dùng có khả năng yêu thích dựa trên sở thích của "láng giềng gần nhất" của họ.
- Phát hiện bất thường: Trong an ninh mạng và tài chính, KNN được sử dụng để anomaly detection. Các giao dịch hoặc hoạt động mạng được ánh xạ trong không gian đặc trưng; bất kỳ điểm dữ liệu mới nào nằm xa các cụm "bình thường" dày đặc sẽ bị gắn cờ là gian lận tiềm ẩn hoặc vi phạm an ninh.
- Tìm kiếm trực quan: Các công cụ vector search hiện đại thường dựa vào thuật toán Approximate Nearest Neighbor (ANN)—một biến thể tối ưu hóa của KNN—để truy xuất nhanh chóng các hình ảnh tương tự dựa trên embeddings đa chiều do các model như YOLO26 tạo ra.
Link to this sectionThách thức và Cân nhắc#
Mặc dù hiệu quả, KNN phải đối mặt với curse of dimensionality. Khi số lượng đặc trưng (số chiều) tăng lên, các điểm dữ liệu trở nên thưa thớt và các thước đo khoảng cách mất đi hiệu quả. Ngoài ra, vì lưu trữ tất cả dữ liệu huấn luyện, KNN có thể tốn bộ nhớ và chịu inference latency cao trên các tập dữ liệu lớn. Để giải quyết vấn đề này, các chuyên gia thường tiền xử lý dữ liệu bằng các kỹ thuật dimensionality reduction như Principal Component Analysis (PCA) hoặc sử dụng các cấu trúc dữ liệu chuyên biệt như KD-Trees để tăng tốc độ tìm kiếm. Để mở rộng quy mô tập dữ liệu và huấn luyện model ở cấp độ doanh nghiệp, việc sử dụng Ultralytics Platform có thể giúp quản lý các tài nguyên tính toán cần thiết cho việc tiền xử lý dữ liệu phức tạp.
Link to this sectionPhân biệt KNN với K-Means#
Điều quan trọng là phải phân biệt K-Nearest Neighbors với K-Means clustering, vì tên gọi tương tự nhau thường gây ra sự nhầm lẫn.
- KNN là một thuật toán học có giám sát (supervised) sử dụng dữ liệu được dán nhãn để đưa ra dự đoán.
- K-Means là một thuật toán unsupervised learning được sử dụng để nhóm dữ liệu chưa được dán nhãn thành các cụm dựa trên sự tương đồng về cấu trúc.
Link to this sectionVí dụ về triển khai#
Đoạn code sau minh họa một quy trình phân loại KNN đơn giản sử dụng thư viện Scikit-learn phổ biến. Trong ngữ cảnh thị giác máy tính, "đặc trưng" đầu vào thường sẽ được trích xuất bởi một model học sâu như YOLO26 trước khi được truyền vào bộ phân loại KNN.
from sklearn.neighbors import KNeighborsClassifier
# Simulated feature vectors (e.g., extracted from YOLO26) and labels
# Features: [Size, Redness], Labels: 0=Apple, 1=Orange
features = [[0.8, 0.9], [0.9, 0.8], [0.2, 0.3], [0.3, 0.2]]
labels = [0, 0, 1, 1]
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(features, labels)
# Predict the class of a new object [Size=0.85, Redness=0.85]
prediction = knn.predict([[0.85, 0.85]])
print(f"Predicted Class: {prediction[0]} (0=Apple, 1=Orange)")





