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, phi tham số, được sử dụng rộng rãi cho cả bài toán phân loại và hồi quy. Thường được gọi là phương pháp "học lười" hoặc học dựa trên thực thể, KNN không tạo ra hàm phân biệt từ dữ liệu huấn luyện trong giai đoạn huấn luyện. Thay vào đó, nó ghi nhớ toàn bộ tập dữ liệu và chỉ thực hiện tính toán khi đưa ra dự đoán về các thực thể mới. Phương pháp này giả định rằng các điểm dữ liệu tương tự nằm gần nhau trong không gian đặc trưng, cho phép thuật toán classify
đầu vào mới dựa trên lớp đa số hoặc giá trị trung bình của những người hàng xóm gần nhất của chúng.
Cách thức hoạt động của KNN
Cơ chế hoạt động của K-Nearest Neighbors dựa trên các phép đo khoảng cách để định lượng độ tương đồng giữa các điểm dữ liệu. Phép đo phổ biến nhất là khoảng cách Euclidean , mặc dù các phép đo khác như khoảng cách Manhattan hoặc khoảng cách Minkowski cũng có thể được sử dụng tùy thuộc vào phạm vi bài toán. Quá trình dự đoán bao gồm một số bước riêng biệt:
-
Chọn K : Người dùng xác định số lượng lân cận, ký hiệu là 'K'. Đây là một bước quan trọng trong việc tinh chỉnh siêu tham số , vì giá trị K ảnh hưởng trực tiếp đến sự cân bằng giữa độ lệch và phương sai của mô hình. K nhỏ có thể dẫn đến độ nhạy nhiễu, trong khi K lớn có thể làm mịn các ranh giới riêng biệt.
-
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ính toán khoảng cách giữa điểm này và mọi ví dụ trong tập dữ liệu đã lưu trữ.
-
Xác định hàng xóm : Thuật toán sắp xếp khoảng cách và chọn K mục hàng đầu có giá trị nhỏ nhất.
-
Đầu ra tổng hợp:
-
Phân loại : Thuật toán gán nhãn lớp xuất hiện thường xuyên nhất trong số K láng giềng (bỏ phiếu theo đa số).
-
Hồi quy : Dự đoán được tính là giá trị trung bình của các giá trị mục tiêu của K láng giềng.
Tính đơn giản của KNN khiến nó trở thành nền tảng hiệu quả cho nhiều bài toán học máy . Dưới đây là một ví dụ ngắn gọn sử dụng thư viện Scikit-learn phổ biến để minh họa quy trình phân loại cơ bản.
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
# distinct classes: 0 and 1
X_train = np.array([[1, 1], [1, 2], [2, 2], [5, 5], [5, 6], [6, 5]])
y_train = np.array([0, 0, 0, 1, 1, 1])
# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Predict class for a new point [4, 4]
prediction = knn.predict([[4, 4]])
print(f"Predicted Class: {prediction[0]}")
# Output: 1 (Closer to the cluster at [5,5])
Các Ứng dụng Thực tế
Mặc dù đơn giản, K-Nearest Neighbors được sử dụng trong nhiều lĩnh vực phức tạp, nơi khả năng diễn giải và suy luận dựa trên trường hợp có giá trị.
-
Công cụ Đề xuất : KNN hỗ trợ lọc cộng tác trong các hệ thống đề xuất . Các nền tảng phát trực tuyến sử dụng nó để đề xuất nội dung bằng cách tìm kiếm người dùng có lịch sử xem tương tự (hàng xóm) và đề xuất các mục họ thích. Phương pháp này hiệu quả trong việc cá nhân hóa trải nghiệm người dùng.
-
Chẩn đoán y khoa : Trong phân tích hình ảnh y khoa , KNN có thể hỗ trợ chẩn đoán bệnh bằng cách so sánh các số liệu hoặc đặc điểm hình ảnh của bệnh nhân với cơ sở dữ liệu các trường hợp bệnh lý trước đây. Ví dụ, nó có thể giúp classify
khối u ung thư vú là ác tính hay lành tính dựa trên sự tương đồng về đặc điểm tế bào với các trường hợp đã được xác nhận.
-
Phát hiện Bất thường : Các tổ chức tài chính sử dụng KNN để phát hiện bất thường nhằm xác định gian lận. Bằng cách phân tích các mẫu giao dịch, hệ thống có thể đánh dấu các hoạt động khác biệt đáng kể so với hành vi thông thường của người dùng - về cơ bản là các điểm cách xa "hàng xóm gần nhất" của chúng.
Phân biệt KNN với các thuật toán liên quan
Việc hiểu được sự khác biệt giữa KNN và các thuật toán khác là rất quan trọng để lựa chọn công cụ phù hợp cho dự án phân tích dữ liệu hoặc thị giác máy tính .
-
Phân cụm K-Means : Rất dễ nhầm lẫn KNN với Phân cụm K-Means do tên gọi tương tự. Tuy nhiên, K-Means là một kỹ thuật học không giám sát , nhóm dữ liệu chưa được gắn nhãn thành các cụm, trong khi KNN là một kỹ thuật có giám sát, yêu cầu dữ liệu đã được gắn nhãn để dự đoán.
-
Máy vectơ hỗ trợ (SVM) : Mặc dù cả hai đều được sử dụng để phân loại, Máy vectơ hỗ trợ (SVM) tập trung vào việc tìm kiếm ranh giới quyết định toàn cục (siêu phẳng) tối đa hóa biên độ giữa các lớp. Ngược lại, KNN đưa ra quyết định dựa trên mật độ dữ liệu cục bộ mà không cần xây dựng mô hình toàn cục. Tìm hiểu thêm về những khác biệt này trong tài liệu về SVM .
-
Cây Quyết định : Cây Quyết định phân loại dữ liệu bằng cách học các quy tắc phân cấp rõ ràng, phân chia không gian đặc trưng. KNN hoàn toàn dựa vào số liệu khoảng cách trong không gian đặc trưng, giúp nó linh hoạt hơn với các ranh giới quyết định bất thường nhưng lại nặng về mặt tính toán hơn trong quá trình suy luận.
Mặc dù KNN mạnh mẽ với các tập dữ liệu nhỏ hơn, nhưng nó gặp phải những thách thức về khả năng mở rộng với dữ liệu lớn do chi phí tính toán khoảng cách cho mỗi truy vấn. Để đạt hiệu suất cao, suy luận thời gian thực trong các tác vụ như phát hiện đối tượng , các kiến trúc học sâu hiện đại như YOLO11 thường được ưa chuộng nhờ tốc độ và độ chính xác vượt trội.