Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

K-Nearest Neighbors (KNN)

Khám phá thuật toán 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 trong phân loại và hồi quy, ứng dụng của nó trong tìm kiếm hình ảnh 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 học có giám sát cho cả nhiệm vụ phân loại và hồi quy. Đặc trưng bởi sự đơn giản, KNN thường được xếp vào loại "người học lười biếng" vì nó không xây dựng mô hình 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 dữ liệu huấn luyện và chỉ thực hiện các phép tính khi có yêu cầu dự đoán. Nguyên tắc cốt lõi của thuật toán dựa trên sự tương đồng giữa các đặc trưng: nó giả định rằng các điểm dữ liệu có thuộc tính tương tự tồn tại gần nhau trong không gian đặc trưng đa chiều.

Cách thuật toán hoạt động

Cơ chế của thuật toán K-Nearest Neighbors dựa trên việc tính toán 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 'K' mẫu huấn luyện gần nhất với điểm đầu vào mới đó.

  1. Đo 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. Phương pháp đo phổ biến nhất là khoảng cách Euclidean , đo khoảng cách đường thẳng giữa các điểm. Các phương pháp đo khác như khoảng cách Manhattan (hình học taxi) hoặc khoảng cách Minkowski có thể được sử dụng tùy thuộc vào loại dữ liệu.
  2. Lựa chọn lân cận : Sau khi tính toán khoảng cách, thuật toán sẽ sắp xếp chúng và xác định 'K' mục gần nhất.
  3. 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 điểm lân cận sẽ được gán cho điểm truy vấn. Điều này được sử dụng rộng rãi trong các tác vụ phân loại ảnh cơ bản.
    • Đối với hồi quy : Giá trị dự đoán được tính bằng cách lấy trung bình các giá trị của K láng giềng gần nhất để ước tính một biến liên tục.

Chọn chữ 'K' phù hợp

Việc lựa chọn giá trị tối ưu cho 'K' là một bước quan trọng trong việc tinh chỉnh siêu tham số . Lựa chọn K ảnh hưởng đáng kể đến hiệu suất của mô hình và khả năng khái quát hóa của nó đối với dữ liệu mới.

  • Giá trị K thấp : Giá trị K nhỏ (ví dụ: K=1) làm cho mô hình rất 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 hiện tượng quá khớp (overfitting ).
  • Giá trị K cao : Giá trị K lớn làm mịn các ranh giới quyết định, giảm ảnh hưởng của nhiễu nhưng có thể làm mờ các mẫu riêng biệt, dẫn đến hiện tượng thiếu khớp (underfitting ).

Các Ứng dụng Thực tế

Mặc dù đơn giản hơn so với mạng nơ-ron sâu, KNN vẫn giữ vai trò quan trọng trong trí tuệ nhân tạo hiện đại, đặc biệt khi kết hợp với các kỹ thuật trích xuất đặc trưng tiên tiến.

  • Hệ thống đề xuất : KNN hỗ trợ lọc cộng tác trong phát trực tuyến đa 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ự (hàng xóm), các nền tảng có thể đề xuất các sản phẩm mà người dùng có khả năng thích dựa trên sở thích của "hàng xóm 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, thuật toán KNN được sử dụng để phát hiện bất thường . Các giao dịch hoặc hoạt động mạng được ánh xạ vào 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 dày đặc của hoạt động "bình thường" đều được gắn cờ là có khả năng gian lận hoặc vi phạm an ninh.
  • Tìm kiếm trực quan : Các công cụ tìm kiếm vector hiện đại thường dựa vào thuật toán Xấp xỉ lân cận gần nhất (ANN) — một biến thể được tối ưu hóa của KNN — để nhanh chóng truy xuất các hình ảnh tương tự dựa trên các nhúng đa chiều được tạo ra bởi các mô hình như YOLO26 .

Những thách thức và cân nhắc

Mặc dù hiệu quả, thuật toán KNN vẫn phải đối mặt với " lời nguyền về chiều dữ liệu" . Khi số lượng đặc trưng (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ả. Thêm vào đó, vì lưu trữ tất cả dữ liệu huấn luyện, KNN có thể tiêu tốn nhiều bộ nhớ và gặp phải độ trễ suy luận 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 xử lý trước dữ liệu bằng các kỹ thuật giảm chiều như Phân tích thành phần chính (PCA) hoặc sử dụng các cấu trúc dữ liệu chuyên biệt như cây KD để tăng tốc độ tìm kiếm. Đối với việc mở rộng quy mô tập dữ liệu và huấn luyện mô hình ở cấp doanh nghiệp, việc sử dụng Nền tảng Ultralytics có thể giúp quản lý các tài nguyên tính toán cần thiết cho việc xử lý trước dữ liệu phức tạp.

Phân biệt KNN với K-Means

Điều quan trọng là phải phân biệt giữa thuật toán K-Nearest Neighbors và thuật toán K-Means , vì tên gọi tương tự nhau thường gây nhầm lẫn.

  • KNN là một thuật toán học có giám sát sử dụng dữ liệu được gán nhãn để đưa ra dự đoán.
  • K-Means là một thuật toán học không giám sát được sử dụng để nhóm dữ liệu chưa được gắn nhãn thành các cụm dựa trên sự tương đồng về cấu trúc.

Ví dụ triển khai

Đoạn mã sau đây minh họa quy trình phân loại KNN đơn giản sử dụng thư viện Scikit-learn phổ biến. Trong bối cảnh thị giác máy tính, các "đặc trưng" đầu vào thường được trích xuất bởi một mô hình học sâu như YOLO26 trước khi được chuyển đến 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)")

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay