Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Cross-Validation

Kiểm định chéo huấn luyện và đánh giá model trên k phân vùng luân phiên của một tập dữ liệu để ước tính khả năng khái quát hóa. Nội dung đề cập các bước K-fold, biến thể, rò rỉ dữ liệu và code.

Cross-validation ước tính hiệu suất của model trên dữ liệu chưa thấy bằng cách huấn luyện và đánh giá nhiều lần trên các phần chia khác nhau của cùng một dataset, rồi tổng hợp điểm số. Trong cross-validation k-fold, dữ liệu được chia thành k phần bằng nhau gọi là fold; mỗi fold lần lượt làm dữ liệu validation, còn model được huấn luyện trên k − 1 fold còn lại. Giá trị trung bình của k điểm số ước tính hiệu suất, còn độ phân tán cho biết mức độ ước tính phụ thuộc vào những mẫu tình cờ nằm trong tập validation. Cross-validation là phương pháp đánh giá tiêu chuẩn khi dữ liệu quá ít để một lần chia giữ lại duy nhất tạo ra điểm số đáng tin cậy; phương pháp này được dùng rộng rãi để so sánh thuật toán và tinh chỉnh hyperparameter mà không đụng đến dữ liệu kiểm thử.

Cách cross-validation k-fold hoạt động#

Dataset được xáo trộn một lần rồi chia thành k fold, thường là 5 hoặc 10. Trong mỗi vòng của k vòng, một model mới được huấn luyện trên k − 1 fold và được chấm điểm trên fold còn lại, vì vậy mỗi mẫu được dùng để validation đúng một lần và để huấn luyện k − 1 lần. K điểm số được lấy trung bình và báo cáo cùng độ lệch chuẩn. Sau khi cross-validation chọn được model hoặc bộ hyperparameter, model cuối cùng thường được huấn luyện lại trên toàn bộ dữ liệu huấn luyện với các thiết lập đó. Leave-one-out cross-validation là trường hợp cực đoan trong đó k bằng số mẫu; phương pháp này dùng nhiều dữ liệu nhất để huấn luyện ở mỗi vòng, đổi lại phải huấn luyện số model bằng số mẫu.

Cách đọc điểm số cross-validation#

Độ phân tán giữa các fold cũng có nhiều thông tin như giá trị trung bình. Script scikit-learn dưới đây chạy cross-validation 5-fold trên dataset ung thư vú đi kèm:

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

# 569 labeled tumor samples with 30 features each
X, y = load_breast_cancer(return_X_y=True)

# The scaler sits inside the pipeline, so each round fits it on that round's training folds only
model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))

# 5 stratified folds: each sample is validated exactly once
folds = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
scores = cross_val_score(model, X, y, cv=folds)
print("Fold accuracies:", scores.round(3))
print(f"Mean {scores.mean():.3f} +/- {scores.std():.3f}")

Năm accuracy của các fold nằm trong khoảng từ 0.956 đến 1.000, với giá trị trung bình là 0.979 và độ lệch chuẩn là 0.014. Một lần chia 80/20 duy nhất sẽ báo cáo một trong năm con số đó, chênh lệch trong khoảng 4.4 điểm phần trăm. Đặt scaler bên trong pipeline giúp fold validation không bị đưa vào thống kê tiền xử lý dữ liệu; nếu chuẩn hóa toàn bộ dataset trước, sẽ xảy ra rò rỉ dữ liệu từ mỗi fold validation sang tập huấn luyện.

Chọn biến thể cross-validation#

K-fold thông thường giả định các mẫu độc lập và có thể thay thế cho nhau. Khi không đáp ứng giả định này, phép chia ngẫu nhiên sẽ làm rò rỉ thông tin hoặc tạo ra các fold không phản ánh đúng tác vụ:

  • Stratified k-fold: Giữ tỷ lệ lớp trong mỗi fold bằng với tỷ lệ của toàn dataset; điều này quan trọng khi một lớp hiếm có thể vắng mặt trong một fold.
  • Group k-fold: Giữ mọi ví dụ thuộc cùng một nhóm, chẳng hạn một bệnh nhân, video hoặc địa điểm thực địa, trong cùng fold để model không bao giờ được validation trên các ảnh huấn luyện gần trùng lặp. Group k-fold phân tầng kết hợp cả hai ràng buộc.
  • Chia chuỗi thời gian: Chỉ huấn luyện trên dữ liệu quá khứ và validation trên giai đoạn tiếp theo, mở rộng cửa sổ huấn luyện sau mỗi vòng, vì xáo trộn dữ liệu theo thứ tự thời gian sẽ khiến model nhìn thấy tương lai.
  • Cross-validation lồng nhau: Chạy một vòng cross-validation bên trong để tinh chỉnh hyperparameter trong mỗi fold bên ngoài, nhờ đó điểm số bên ngoài không bị tăng giả tạo do tinh chỉnh trên chính các fold được dùng để báo cáo điểm số.

Cross-validation cho deep learning#

Huấn luyện một mạng sâu k lần làm chi phí tính toán tăng gấp k lần, vì vậy các dataset lớn như ImageNet và COCO dùng một tập validation cố định duy nhất, vốn đã đủ lớn để tạo điểm số ổn định. Cross-validation hữu ích với dataset thị giác nhỏ có từ vài trăm đến vài nghìn ảnh, khi một lần chia validation có thể chỉ chứa một vài mẫu của mỗi lớp. Hướng dẫn Cross Validation K-Fold của Ultralytics chia một dataset detection thành năm fold bằng KFold của scikit-learn, ghi danh sách ảnh huấn luyện và validation cùng file YAML dataset cho từng fold, rồi huấn luyện một model YOLO26 trên mỗi fold. Vì ảnh detection thường chứa nhiều lớp nên không thể phân tầng theo một nhãn duy nhất; do đó, hướng dẫn cũng ghi lại tỷ lệ nhãn validation so với nhãn huấn luyện cho từng lớp trong mỗi fold.

  • Validation hold-out: Một lần chia dữ liệu, chẳng hạn 80/20, được chấm điểm một lần. Phương pháp này chỉ tốn một lần chạy huấn luyện, phù hợp với dataset lớn, và điểm số phụ thuộc vào những mẫu nằm trong tập validation.
  • Bootstrapping: Tạo các tập huấn luyện bằng cách lấy mẫu có hoàn lại và chấm điểm mỗi model trên những mẫu không được chọn trong lần lấy mẫu đó. K-fold phân vùng dữ liệu không hoàn lại, nên mỗi mẫu chỉ nằm trong đúng một fold.
  • Đánh giá trên tập kiểm thử: Cross-validation chọn model và thiết lập. Một tập kiểm thử riêng, không thuộc bất kỳ fold nào, cung cấp ước tính cuối cùng cho model đã chọn.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning