R là một công cụ mạnh mẽ để triển khai phân loại KNN, thường được các nhà khoa học dữ liệu và nhà thống kê sử dụng cho nhiều ứng dụng máy học khác nhau.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu về K-Nearest Neighbors, cách thức hoạt động, cùng các ưu và nhược điểm. Bên cạnh đó, chúng ta sẽ dùng các gói R 'class' và 'caret' để triển khai mô hình phân loại KNN một cách dễ dàng.
K-Nearest Neighbors là gì?
K-Nearest Neighbors (KNN) là một mô hình học có giám sát có thể dùng cho cả bài toán hồi quy và phân loại. Thuật toán này là phi tham số, tức là không đưa ra giả định nào về phân phối nền tảng của dữ liệu.
Thuật toán KNN dự đoán nhãn của tập kiểm tra bằng cách quan sát nhãn của các điểm lân cận gần nhất trong không gian đặc trưng của tập huấn luyện. “K” là siêu tham số quan trọng nhất có thể được tinh chỉnh để tối ưu hiệu năng mô hình.
KNN là thuật toán đơn giản và trực quan, cho kết quả tốt với nhiều bài toán phân loại. Dễ triển khai và dễ hiểu, áp dụng được cho cả tập dữ liệu nhỏ lẫn lớn. Tuy nhiên, nó cũng có một số hạn chế, điểm bất lợi lớn là chi phí tính toán cao với các tập dữ liệu lớn hoặc không gian đặc trưng có số chiều cao.
Thuật toán KNN được dùng trong các hệ gợi ý thương mại điện tử, nhận dạng ảnh, phát hiện gian lận, phân loại văn bản, phát hiện bất thường, và nhiều ứng dụng khác. Trong hướng dẫn này, chúng ta sẽ sử dụng KNN cho hệ thống phê duyệt khoản vay.
Nếu bạn còn bối rối và chưa biết bắt đầu hành trình khoa học dữ liệu từ đâu, hãy theo học lộ trình sự nghiệp Data Scientist Professional with R để chuẩn bị cho một sự nghiệp thành công trong lĩnh vực này. Lộ trình kỹ năng sẽ giúp bạn làm chủ R, nạp dữ liệu, làm sạch, thao tác, trực quan hóa dữ liệu, máy học, kiểm định giả thuyết, thiết kế thực nghiệm, SQL và Git.
Phân loại K-Nearest Neighbors hoạt động như thế nào?
Thuật toán phân loại KNN hoạt động bằng cách tìm K láng giềng (các điểm dữ liệu gần nhất) trong tập huấn luyện đối với một điểm dữ liệu mới. Sau đó, nó gán nhãn của lớp chiếm đa số trong số các láng giềng đó cho điểm dữ liệu mới.
Hãy cùng phân rã thuật toán thành nhiều bước.
Đầu tiên, nó tính khoảng cách giữa điểm dữ liệu mới và tất cả các điểm trong tập huấn luyện, rồi chọn ra K điểm gần nhất. Thước đo khoảng cách có thể thay đổi tùy bài toán. Phổ biến nhất là khoảng cách Euclid.
Sau khi xác định K láng giềng gần nhất, thuật toán gán nhãn của lớp chiếm đa số trong số các láng giềng đó cho điểm dữ liệu mới. Ví dụ, nếu có hai nhãn là “xanh” và một nhãn là “đỏ” thì thuật toán sẽ gán nhãn “xanh” cho điểm dữ liệu mới.
Chọn giá trị K, là số láng giềng gần nhất sẽ dùng để dự đoán.
Tính khoảng cách giữa điểm đó và tất cả các điểm trong tập huấn luyện.
Chọn K láng giềng gần nhất dựa trên các khoảng cách đã tính.
Gán nhãn của lớp chiếm đa số cho điểm dữ liệu mới.
Lặp lại bước 2 đến 4 cho tất cả các điểm dữ liệu trong tập kiểm tra.
Đánh giá độ chính xác của thuật toán.
Giá trị “K” do người dùng cung cấp và có thể được dùng để tối ưu hiệu năng thuật toán. K nhỏ có thể dẫn đến overfitting, K lớn có thể dẫn đến underfitting. Do đó, cần tìm giá trị tối ưu để có độ ổn định và mức khớp tốt nhất.
Triển khai KNN trong R
Ở phần này, chúng ta sẽ dùng Loan Data và huấn luyện phân loại KNN bằng gói class. Bộ dữ liệu gồm 10.000 khoản vay, và chúng ta sẽ xác định liệu một khoản vay có được hoàn trả dựa trên dữ liệu khách hàng hay không.
Nạp dữ liệu
Chúng ta sẽ nhập thư viện tidyverse để truy cập các gói R thiết yếu cho việc nạp, xử lý và trực quan hóa dữ liệu. suppressPackageStartupMessages sẽ ẩn các cảnh báo để bạn có đầu ra sạch.
Sau đó, chúng ta sẽ dùng read_csv để nạp dữ liệu, xóa cột “purpose” khỏi dataframe bằng hàm subset, và hiển thị 3 mẫu đầu tiên.
suppressPackageStartupMessages(library(tidyverse))
data <- read_csv('data/loans.csv.gz', show_col_types =FALSE)
data <- subset(data, select =-c(purpose))
head(data,3)Được hỗ trợ bởi
Chia tập huấn luyện và kiểm tra
Chúng ta có thể chia tập dữ liệu thủ công, nhưng dùng thư viện caTools sẽ gọn gàng hơn nhiều.
Đặt seed để có thể tái lập kết quả.
Dùng sample.split để tạo chỉ mục cho tập huấn luyện và kiểm tra theo tỷ lệ 75:25.
Dùng subset để tạo tập huấn luyện và kiểm tra như bên dưới.
library(caTools)
set.seed(255)
split = sample.split(data$not_fully_paid,
SplitRatio =0.75)
train = subset(data,
split ==TRUE)
test = subset(data,
split ==FALSE)Được hỗ trợ bởi
Chuẩn hóa đặc trưng
Giờ chúng ta sẽ scale cả tập huấn luyện và kiểm tra. Ở phía sau, hàm sử dụng công thức (x - mean(x)) / sd(x). Chúng ta chỉ scale các đặc trưng và loại bỏ nhãn mục tiêu khỏi cả hai tập.
train_scaled = scale(train[-13])
test_scaled = scale(test[-13])Được hỗ trợ bởi
Huấn luyện bộ phân loại KNN và dự đoán
Thư viện class khá phổ biến để huấn luyện phân loại KNN. Đơn giản và nhanh. Chúng ta sẽ cung cấp tập huấn luyện và kiểm tra đã scale, cột mục tiêu và siêu tham số “k”.
library(class)
test_pred <- knn(
train = train_scaled,
test = test_scaled,
cl = train$not_fully_paid,
k=10)Được hỗ trợ bởi
Đánh giá mô hình
Để đánh giá kết quả mô hình, chúng ta sẽ hiển thị ma trận nhầm lẫn bằng hàm table. Chúng ta cung cấp nhãn thực (mục tiêu kiểm tra) và nhãn dự đoán cho hàm table, và như có thể thấy, chúng ta đạt kết quả khá tốt cho lớp chiếm đa số.
Thuật toán KNN không giỏi trong việc xử lý dữ liệu mất cân bằng, đó là lý do hiệu năng ở lớp thiểu số kém.
actual <- test$not_fully_paid
cm <- table(actual,test_pred)
cmĐược hỗ trợ bởi
Chúng ta có thể tính độ chính xác bằng cách cộng các giá trị dương tính thật trên đường chéo của ma trận nhầm lẫn rồi chia cho tổng số phần tử của cột mục tiêu.
Có thể thấy chúng ta có độ chính xác tốt với một mô hình mặc định. Ta có thể cải thiện bằng cách tinh chỉnh siêu tham số “K” và cân bằng lại tập dữ liệu.
accuracy <- sum(diag(cm))/length(actual)
sprintf("Accuracy: %.2f%%", accuracy*100)Được hỗ trợ bởi
Ở phần này, chúng ta sẽ dùng caret cho mọi thứ. caret là một gói R để xây dựng và đánh giá các mô hình máy học. Nó cung cấp giao diện cho các thuật toán máy học chính.
Chúng ta sẽ dùng nó để chia và tiền xử lý dữ liệu, tinh chỉnh siêu tham số, cũng như huấn luyện và đánh giá mô hình.
Chia tập huấn luyện và kiểm tra
Chúng ta sẽ nhập gói caret và đặt seed để tái lập. Sau đó, chuyển biến mục tiêu từ số nguyên sang factor. Cuối cùng, dùng createDataPartition để chia dữ liệu thành tập huấn luyện và kiểm tra theo tỷ lệ 80:20.
suppressPackageStartupMessages(library(caret))
set.seed(255)
data$not_fully_paid <- factor(data$not_fully_paid, levels = c(0,1))
trainIndex <- createDataPartition(data$not_fully_paid,
times=1,
p =.8,
list =FALSE)
train <- data[trainIndex,]
test <- data[-trainIndex,]Được hỗ trợ bởi
Tiền xử lý dữ liệu
Tiếp theo, chúng ta sẽ scale cả tập huấn luyện và kiểm tra bằng hàm preProcess.
Trước khi huấn luyện mô hình KNN, chúng ta cần tìm giá trị “K” tối ưu bằng hàm train. Hàm train yêu cầu một công thức, tập huấn luyện đã scale, tên mô hình, phương pháp điều khiển huấn luyện (cross-validation), và danh sách siêu tham số. Chúng ta sẽ kiểm tra hiệu năng khi “K” là 3, 5 và 7.
Sau khi tìm được giá trị “K” tốt nhất, chúng ta sẽ huấn luyện mô hình phân loại KNN với tập huấn luyện đã scale.
best_model<- knn3(
not_fully_paid ~ .,
data = trainTransformed,
k = knnModel$bestTune$k
)Được hỗ trợ bởi
Đánh giá mô hình
caret cung cấp một hàm đánh giá mô hình đơn giản và mạnh mẽ. Để hiển thị kết quả hiệu năng mô hình, trước tiên chúng ta cần dự đoán nhãn cho tập kiểm tra chưa thấy. Sau đó, dùng giá trị dự đoán và thực tế để đánh giá hiệu năng bằng hàm confusionMatrix .
predictions <- predict(best_model, testTransformed,type ="class")# Calculate confusion matrix
cm <- confusionMatrix(predictions, testTransformed$not_fully_paid)
cmĐược hỗ trợ bởi
Kết quả trả về gồm ma trận nhầm lẫn, độ chính xác mô hình, P-Value, độ nhạy và các chỉ số quan trọng khác giúp chúng ta đánh giá độ ổn định và hiệu năng mô hình.
Có thể thấy mô hình hoạt động khá kém ở “Neg Pred Value” là lớp thiểu số, và độ chính xác cân bằng của chúng ta là 51%. Kết quả này tương đương tung đồng xu.
Chúng ta có thể cải thiện bằng cách cân bằng các lớp với kỹ thuật oversampling và undersampling. Ta cũng có thể thực hiện feature engineering để tạo đặc trưng mới và loại bỏ các đặc trưng tương quan cao.
Confusion Matrix and Statistics
Reference
Prediction 010157028813918
Accuracy :0.829295% CI :(0.8116,0.8458)
No Information Rate :0.8402
P-Value [Acc > NIR]:0.9091
Kappa :0.0516
Mcnemar's Test P-Value :<2e-16
Sensitivity :0.97576
Specificity :0.05882
Pos Pred Value :0.84499
Neg Pred Value :0.31579
Prevalence :0.84021
Detection Rate :0.81984
Detection Prevalence :0.97023
Balanced Accuracy :0.51729'Positive' Class :0Được hỗ trợ bởi
Chúng ta cũng có thể đơn giản hóa kết quả bằng cách hiển thị dưới dạng data frame.
Cho kết quả dễ diễn giải, có thể trực quan hóa và hiểu được vì lớp dự đoán dựa trên nhãn của các láng giềng gần nhất trong dữ liệu huấn luyện.
KNN không giả định về biên quyết định giữa các lớp, nhờ đó có thể nắm bắt các quan hệ phi tuyến giữa các đặc trưng.
Thuật toán không giả định về phân phối dữ liệu, phù hợp với nhiều dạng bài toán.
KNN không xây dựng mô hình; nó lưu trữ dữ liệu huấn luyện và dùng trực tiếp để dự đoán.
Nhược điểm
Tốn kém về tính toán và bộ nhớ với các tập dữ liệu lớn và phức tạp.
Hiệu năng KNN giảm với dữ liệu mất cân bằng. Nó thiên lệch về lớp đa số, dẫn tới hiệu năng kém ở lớp thiểu số.
Không phù hợp với dữ liệu nhiễu, vì các láng giềng gần nhất có thể không đại diện cho nhãn lớp thực.
Không phù hợp với dữ liệu có số chiều cao, vì khi chiều tăng cao, khoảng cách giữa các điểm có xu hướng trở nên tương tự nhau.
Tìm số láng giềng K tối ưu có thể tốn thời gian.
KNN nhạy cảm với ngoại lai, do lựa chọn láng giềng dựa trên thước đo khoảng cách.
Không giỏi xử lý giá trị khuyết trong tập huấn luyện.
Kết luận
Trong hướng dẫn này, chúng ta đã học cách sử dụng phân loại K-Nearest Neighbors (KNN) với R. Chúng ta đã bao quát khái niệm cơ bản và cách thức hoạt động của KNN. Bên cạnh đó, chúng ta đã tìm hiểu hai thư viện class và caret để huấn luyện và đánh giá mô hình phân loại KNN trên một bộ dữ liệu thực.
Hãy tham gia khóa học Supervised Learning in R: Classification để học về các thuật toán học có giám sát khác với R. Bạn sẽ học Naive Bayes, Hồi quy Logistic và Cây phân loại với ví dụ và bài tập mã.
Các hướng dẫn R bao gồm các bước thao tác, chia tách và xử lý dữ liệu, tinh chỉnh siêu tham số, huấn luyện mô hình và đánh giá kết quả. Do dữ liệu mất cân bằng, chúng ta đạt hiệu năng kém ở lớp thiểu số.
Bạn cần hiểu rằng thuật toán KNN không hoàn hảo, nó cũng có nhược điểm, và chúng ta phải cân nhắc nhiều yếu tố trước khi chọn nó làm mô hình chính.
Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.
R là một công cụ mạnh mẽ để triển khai phân loại KNN, thường được các nhà khoa học dữ liệu và nhà thống kê sử dụng cho nhiều ứng dụng máy học khác nhau.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu về K-Nearest Neighbors, cách thức hoạt động, cùng các ưu và nhược điểm. Bên cạnh đó, chúng ta sẽ dùng các gói R 'class' và 'caret' để triển khai mô hình phân loại KNN một cách dễ dàng.
K-Nearest Neighbors là gì?
K-Nearest Neighbors (KNN) là một mô hình học có giám sát có thể dùng cho cả bài toán hồi quy và phân loại. Thuật toán này là phi tham số, tức là không đưa ra giả định nào về phân phối nền tảng của dữ liệu.
Thuật toán KNN dự đoán nhãn của tập kiểm tra bằng cách quan sát nhãn của các điểm lân cận gần nhất trong không gian đặc trưng của tập huấn luyện. “K” là siêu tham số quan trọng nhất có thể được tinh chỉnh để tối ưu hiệu năng mô hình.
KNN là thuật toán đơn giản và trực quan, cho kết quả tốt với nhiều bài toán phân loại. Dễ triển khai và dễ hiểu, áp dụng được cho cả tập dữ liệu nhỏ lẫn lớn. Tuy nhiên, nó cũng có một số hạn chế, điểm bất lợi lớn là chi phí tính toán cao với các tập dữ liệu lớn hoặc không gian đặc trưng có số chiều cao.
Thuật toán KNN được dùng trong các hệ gợi ý thương mại điện tử, nhận dạng ảnh, phát hiện gian lận, phân loại văn bản, phát hiện bất thường, và nhiều ứng dụng khác. Trong hướng dẫn này, chúng ta sẽ sử dụng KNN cho hệ thống phê duyệt khoản vay.
Nếu bạn còn bối rối và chưa biết bắt đầu hành trình khoa học dữ liệu từ đâu, hãy theo học lộ trình sự nghiệp Data Scientist Professional with R để chuẩn bị cho một sự nghiệp thành công trong lĩnh vực này. Lộ trình kỹ năng sẽ giúp bạn làm chủ R, nạp dữ liệu, làm sạch, thao tác, trực quan hóa dữ liệu, máy học, kiểm định giả thuyết, thiết kế thực nghiệm, SQL và Git.
Phân loại K-Nearest Neighbors hoạt động như thế nào?
Thuật toán phân loại KNN hoạt động bằng cách tìm K láng giềng (các điểm dữ liệu gần nhất) trong tập huấn luyện đối với một điểm dữ liệu mới. Sau đó, nó gán nhãn của lớp chiếm đa số trong số các láng giềng đó cho điểm dữ liệu mới.
Hãy cùng phân rã thuật toán thành nhiều bước.
Đầu tiên, nó tính khoảng cách giữa điểm dữ liệu mới và tất cả các điểm trong tập huấn luyện, rồi chọn ra K điểm gần nhất. Thước đo khoảng cách có thể thay đổi tùy bài toán. Phổ biến nhất là khoảng cách Euclid.
Sau khi xác định K láng giềng gần nhất, thuật toán gán nhãn của lớp chiếm đa số trong số các láng giềng đó cho điểm dữ liệu mới. Ví dụ, nếu có hai nhãn là “xanh” và một nhãn là “đỏ” thì thuật toán sẽ gán nhãn “xanh” cho điểm dữ liệu mới.
Gif từ eunsukim.me
Tóm tắt:
Giá trị “K” do người dùng cung cấp và có thể được dùng để tối ưu hiệu năng thuật toán. K nhỏ có thể dẫn đến overfitting, K lớn có thể dẫn đến underfitting. Do đó, cần tìm giá trị tối ưu để có độ ổn định và mức khớp tốt nhất.
Triển khai KNN trong R
Ở phần này, chúng ta sẽ dùng Loan Data và huấn luyện phân loại KNN bằng gói
class. Bộ dữ liệu gồm 10.000 khoản vay, và chúng ta sẽ xác định liệu một khoản vay có được hoàn trả dựa trên dữ liệu khách hàng hay không.Nạp dữ liệu
Chúng ta sẽ nhập thư viện
tidyverseđể truy cập các gói R thiết yếu cho việc nạp, xử lý và trực quan hóa dữ liệu.suppressPackageStartupMessagessẽ ẩn các cảnh báo để bạn có đầu ra sạch.Sau đó, chúng ta sẽ dùng
read_csvđể nạp dữ liệu, xóa cột “purpose” khỏi dataframe bằng hàmsubset, và hiển thị 3 mẫu đầu tiên.Chia tập huấn luyện và kiểm tra
Chúng ta có thể chia tập dữ liệu thủ công, nhưng dùng thư viện
caToolssẽ gọn gàng hơn nhiều.sample.splitđể tạo chỉ mục cho tập huấn luyện và kiểm tra theo tỷ lệ 75:25.subsetđể tạo tập huấn luyện và kiểm tra như bên dưới.Chuẩn hóa đặc trưng
Giờ chúng ta sẽ scale cả tập huấn luyện và kiểm tra. Ở phía sau, hàm sử dụng công thức
(x - mean(x)) / sd(x). Chúng ta chỉ scale các đặc trưng và loại bỏ nhãn mục tiêu khỏi cả hai tập.Huấn luyện bộ phân loại KNN và dự đoán
Thư viện
classkhá phổ biến để huấn luyện phân loại KNN. Đơn giản và nhanh. Chúng ta sẽ cung cấp tập huấn luyện và kiểm tra đã scale, cột mục tiêu và siêu tham số “k”.Đánh giá mô hình
Để đánh giá kết quả mô hình, chúng ta sẽ hiển thị ma trận nhầm lẫn bằng hàm
table. Chúng ta cung cấp nhãn thực (mục tiêu kiểm tra) và nhãn dự đoán cho hàmtable, và như có thể thấy, chúng ta đạt kết quả khá tốt cho lớp chiếm đa số.Thuật toán KNN không giỏi trong việc xử lý dữ liệu mất cân bằng, đó là lý do hiệu năng ở lớp thiểu số kém.
Chúng ta có thể tính độ chính xác bằng cách cộng các giá trị dương tính thật trên đường chéo của ma trận nhầm lẫn rồi chia cho tổng số phần tử của cột mục tiêu.
Có thể thấy chúng ta có độ chính xác tốt với một mô hình mặc định. Ta có thể cải thiện bằng cách tinh chỉnh siêu tham số “K” và cân bằng lại tập dữ liệu.
Phân loại KNN trong R dùng caret
Ở phần này, chúng ta sẽ dùng
caretcho mọi thứ. caret là một gói R để xây dựng và đánh giá các mô hình máy học. Nó cung cấp giao diện cho các thuật toán máy học chính.Chúng ta sẽ dùng nó để chia và tiền xử lý dữ liệu, tinh chỉnh siêu tham số, cũng như huấn luyện và đánh giá mô hình.
Chia tập huấn luyện và kiểm tra
Chúng ta sẽ nhập gói
caretvà đặt seed để tái lập. Sau đó, chuyển biến mục tiêu từ số nguyên sang factor. Cuối cùng, dùngcreateDataPartitionđể chia dữ liệu thành tập huấn luyện và kiểm tra theo tỷ lệ 80:20.Tiền xử lý dữ liệu
Tiếp theo, chúng ta sẽ scale cả tập huấn luyện và kiểm tra bằng hàm
preProcess.Tinh chỉnh mô hình
Trước khi huấn luyện mô hình KNN, chúng ta cần tìm giá trị “K” tối ưu bằng hàm train. Hàm train yêu cầu một công thức, tập huấn luyện đã scale, tên mô hình, phương pháp điều khiển huấn luyện (cross-validation), và danh sách siêu tham số. Chúng ta sẽ kiểm tra hiệu năng khi “K” là 3, 5 và 7.
Huấn luyện mô hình có hiệu năng tốt nhất
Sau khi tìm được giá trị “K” tốt nhất, chúng ta sẽ huấn luyện mô hình phân loại KNN với tập huấn luyện đã scale.
Đánh giá mô hình
caret cung cấp một hàm đánh giá mô hình đơn giản và mạnh mẽ. Để hiển thị kết quả hiệu năng mô hình, trước tiên chúng ta cần dự đoán nhãn cho tập kiểm tra chưa thấy. Sau đó, dùng giá trị dự đoán và thực tế để đánh giá hiệu năng bằng hàm
confusionMatrix.Kết quả trả về gồm ma trận nhầm lẫn, độ chính xác mô hình, P-Value, độ nhạy và các chỉ số quan trọng khác giúp chúng ta đánh giá độ ổn định và hiệu năng mô hình.
Có thể thấy mô hình hoạt động khá kém ở “Neg Pred Value” là lớp thiểu số, và độ chính xác cân bằng của chúng ta là 51%. Kết quả này tương đương tung đồng xu.
Chúng ta có thể cải thiện bằng cách cân bằng các lớp với kỹ thuật oversampling và undersampling. Ta cũng có thể thực hiện feature engineering để tạo đặc trưng mới và loại bỏ các đặc trưng tương quan cao.
Chúng ta cũng có thể đơn giản hóa kết quả bằng cách hiển thị dưới dạng data frame.
Nếu bạn thích Python và muốn học cách thực hiện phân loại KNN, hãy đọc hướng dẫn K-Nearest Neighbors (KNN) Classification with scikit-learn để hiểu các khái niệm và quy trình KNN kèm ví dụ.
Ưu và nhược điểm khi dùng KNN
Ưu điểm
Nhược điểm
Kết luận
Trong hướng dẫn này, chúng ta đã học cách sử dụng phân loại K-Nearest Neighbors (KNN) với R. Chúng ta đã bao quát khái niệm cơ bản và cách thức hoạt động của KNN. Bên cạnh đó, chúng ta đã tìm hiểu hai thư viện
classvàcaretđể huấn luyện và đánh giá mô hình phân loại KNN trên một bộ dữ liệu thực.Hãy tham gia khóa học Supervised Learning in R: Classification để học về các thuật toán học có giám sát khác với R. Bạn sẽ học Naive Bayes, Hồi quy Logistic và Cây phân loại với ví dụ và bài tập mã.
Các hướng dẫn R bao gồm các bước thao tác, chia tách và xử lý dữ liệu, tinh chỉnh siêu tham số, huấn luyện mô hình và đánh giá kết quả. Do dữ liệu mất cân bằng, chúng ta đạt hiệu năng kém ở lớp thiểu số.
Bạn cần hiểu rằng thuật toán KNN không hoàn hảo, nó cũng có nhược điểm, và chúng ta phải cân nhắc nhiều yếu tố trước khi chọn nó làm mô hình chính.