Dùng AI

Bộ dữ liệu để luyện AI: Kaggle, UCI, Hugging Face Datasets

Ba nơi tìm dữ liệu để luyện AI: UCI Machine Learning Repository (690 bộ, phần lớn là bảng nhỏ kinh điển như Iris), Kaggle (dữ liệu kèm notebook của cộng đồng và các cuộc thi), và Hugging Face Datasets (hơn 1 triệu bộ, mạnh về văn bản, ảnh, âm thanh). Chọn bộ vừa sức, đọc giấy phép, rồi soát ô trống, dòng trùng và nhãn lệch trước khi huấn luyện.

Ý chính
  • UCI Machine Learning Repository: trang chủ ghi đang duy trì 690 bộ dữ liệu (11/11/2026); hợp để học thuật toán cổ điển trên bảng nhỏ, có gói Python ucimlrepo để tải.
  • Kaggle: dữ liệu đi kèm notebook của cộng đồng và các cuộc thi; hợp để học cách người khác xử lý cùng một bộ dữ liệu.
  • Hugging Face Datasets: tài liệu Hub ghi hơn 1 triệu bộ dữ liệu công khai thuộc hơn 8 nghìn ngôn ngữ; mạnh về văn bản, ảnh, âm thanh, có thẻ dữ liệu ghi giấy phép.
  • Trước khi huấn luyện: đọc giấy phép, rồi soát ô trống, dòng trùng, phân bố nhãn.

Thông tin trong bài lấy từ trang UCI, trang Datasets của Kaggle và tài liệu Hugging Face Hub, đọc ngày 11/11/2026.

Chọn bộ dữ liệu thế nào

Bộ dữ liệu đầu tiên nên:

  • Vừa sức: vài nghìn tới vài chục nghìn dòng, mở được trên máy cá nhân.
  • Có mô tả rõ: mỗi cột nghĩa là gì, nhãn lấy từ đâu, thu thập năm nào.
  • Có giấy phép rõ: biết mình được dùng cho học tập, cho đồ án, hay cho sản phẩm.
  • Gần với điều bạn quan tâm: dữ liệu về thứ bạn hiểu giúp bạn phát hiện lỗi mà mô hình mắc.

Bộ dữ liệu kinh điển (như Iris) tốt để học thuật toán; bộ dữ liệu "bẩn" ngoài đời tốt để học xử lý dữ liệu, phần chiếm nhiều thời gian nhất trong dự án thật.

UCI Machine Learning Repository

Kho dữ liệu của Đại học California, Irvine. Trang chủ ghi đang duy trì 690 bộ dữ liệu phục vụ cộng đồng học máy. Phần lớn là dữ liệu dạng bảng, kích thước nhỏ, được dùng trong rất nhiều giáo trình và bài báo.

Ví dụ trang bộ Iris (mã 53) ghi: đóng góp ngày 30/06/1988, 150 mẫu, 4 đặc trưng số thực, lĩnh vực sinh học, giấy phép CC BY 4.0, và hướng dẫn tải bằng Python:

# pip install ucimlrepo
from ucimlrepo import fetch_ucirepo
iris = fetch_ucirepo(id=53)

Hợp với ai: người đang học các thuật toán học máy cổ điển (hồi quy, cây quyết định, k-NN) và muốn kết quả so được với giáo trình.

Kaggle

Trang Datasets của Kaggle (tiêu đề "Find Open Datasets for AI and Research") là nơi người dùng đăng dữ liệu, kèm notebook phân tích và thảo luận của cộng đồng. Kaggle còn có các cuộc thi với dữ liệu, bảng xếp hạng và lời giải được chia sẻ sau khi thi, và phần Learn với các khóa ngắn.

Hợp với ai: người muốn học từ cách người khác làm. Với mỗi bộ dữ liệu, đọc vài notebook được đánh giá cao để xem họ làm sạch dữ liệu, chọn mô hình và đánh giá ra sao; sau đó tự làm lại theo cách của mình.

Lưu ý: mỗi bộ dữ liệu trên Kaggle do người đăng tự ghi giấy phép và nguồn gốc. Đọc kỹ, vì có bộ được thu thập lại từ nơi khác mà không rõ quyền sử dụng.

Hugging Face Datasets

Theo tài liệu Hub (11/11/2026), Hugging Face có hơn 1 triệu bộ dữ liệu công khai thuộc hơn 8 nghìn ngôn ngữ, cho xử lý ngôn ngữ, thị giác máy tính và âm thanh. Mỗi bộ có thẻ dữ liệu (dataset card) là tệp README.md của kho; phần siêu dữ liệu YAML ở đầu ghi giấy phép, ngôn ngữ, kích thước, loại tác vụ. Tài liệu khuyên thẻ dữ liệu nêu cả các thiên lệch có thể có của dữ liệu. Thư viện datasets tải được dữ liệu bằng một dòng, và đọc theo luồng (streaming) khi bộ dữ liệu quá lớn so với máy.

Hợp với ai: người làm xử lý ngôn ngữ, kể cả tiếng Việt (lọc theo ngôn ngữ Vietnamese), và người làm mô hình học sâu. Xem thêm Hugging Face là gì.

Google Dataset Search là công cụ tìm kiếm bộ dữ liệu trên nhiều trang web, hữu ích khi cần dữ liệu về một chủ đề cụ thể như khí hậu hay y tế công cộng.

Bộ dữ liệu để luyện AI Tìm, đọc giấy phép, soát rồi mới luyện UCI690 bộbảng nhỏ, kinh điển KaggleDữ liệu, notebookcó cuộc thi Hugging FaceHơn 1 triệu bộvăn bản, ảnh, âm thanh Soát trướcÔ trống, trùngnhãn lệch Mỗi bộ một giấy phép: đọc trước khi dùng
Bộ dữ liệu để luyện AI UCI690 bộbảng nhỏ, kinh điển KaggleDữ liệu, notebookcó cuộc thi Hugging FaceHơn 1 triệu bộvăn bản, ảnh, âm thanh Soát trướcÔ trống, trùngnhãn lệch Mỗi bộ một giấy phép: đọc trước khi dùng
Hình 1. Ba nơi tìm bộ dữ liệu để luyện AI: UCI với 690 bộ, chủ yếu là bảng nhỏ kinh điển; Kaggle với dữ liệu, notebook và các cuộc thi; Hugging Face với hơn 1 triệu bộ văn bản, ảnh, âm thanh. Trước khi luyện, soát ô trống, dòng trùng, nhãn lệch, và đọc giấy phép của từng bộ.

Soát dữ liệu trước khi luyện

Rất nhiều kết quả "tốt bất ngờ" đến từ lỗi dữ liệu: dòng trùng nằm ở cả tập huấn luyện lẫn tập kiểm tra, hay nhãn quá lệch khiến mô hình đoán toàn một lớp vẫn đạt độ chính xác cao. Đoạn Python dưới đây, chỉ dùng thư viện có sẵn, soát một tệp CSV: số dòng, số cột, số ô trống mỗi cột, số dòng trùng, phân bố nhãn, rồi đưa cảnh báo khi một cột trống quá 20%, có dòng trùng, hoặc lớp nhiều nhất gấp từ 3 lần lớp ít nhất.

"""Soát nhanh một bộ dữ liệu dạng bảng (CSV) trước khi luyện mô hình, chỉ dùng thư viện có sẵn của Python.

Báo: số dòng, số cột, ô trống theo cột, dòng trùng lặp, phân bố nhãn và cảnh báo khi lớp mất cân bằng.
Chạy: python soat_du_lieu.py du_lieu.csv ten_cot_nhan
Chạy không tham số: soát một bảng mẫu nhỏ có sẵn (số liệu giả định).
"""
import csv
import io
import sys
from collections import Counter


def soat(van_ban, cot_nhan):
    dong = list(csv.DictReader(io.StringIO(van_ban)))
    cot = list(dong[0].keys()) if dong else []
    trong = {c: sum(1 for d in dong if not (d[c] or "").strip()) for c in cot}
    khoa = [tuple(d[c] for c in cot) for d in dong]
    trung = len(khoa) - len(set(khoa))
    nhan = Counter(d[cot_nhan] for d in dong if (d[cot_nhan] or "").strip())
    return dict(so_dong=len(dong), cot=cot, trong=trong, trung=trung, nhan=nhan)


def canh_bao(kq, nguong_trong=0.2, ti_le_lech=3):
    cb = []
    for c, n in kq["trong"].items():
        if kq["so_dong"] and n / kq["so_dong"] > nguong_trong:
            cb.append(f"cột '{c}' trống {n}/{kq['so_dong']} ô")
    if kq["trung"]:
        cb.append(f"{kq['trung']} dòng trùng lặp: bỏ trước khi chia tập huấn luyện và kiểm tra")
    if kq["nhan"]:
        nhieu, it = max(kq["nhan"].values()), min(kq["nhan"].values())
        if nhieu / it >= ti_le_lech:
            cb.append(f"nhãn lệch {nhieu}:{it}: độ chính xác dễ đánh lừa, xem thêm precision, recall")
    return cb


MAU = """van_ban,diem_sao,nhan
Giao hàng nhanh,5,tich_cuc
Sản phẩm tốt,5,tich_cuc
Giao hàng nhanh,5,tich_cuc
Đóng gói cẩn thận,,tich_cuc
Hàng đúng mô tả,4,tich_cuc
Rất hài lòng,5,tich_cuc
Sẽ mua lại,,tich_cuc
Ổn,,tich_cuc
Hàng lỗi,1,tieu_cuc
Giao chậm,2,tieu_cuc
"""


def chay_thu():
    kq = soat(MAU, "nhan")
    dong = [f"{kq['so_dong']} dòng, {len(kq['cot'])} cột: {', '.join(kq['cot'])}",
            "Ô trống: " + ", ".join(f"{c} {n}" for c, n in kq["trong"].items()),
            "Nhãn: " + ", ".join(f"{k} {v}" for k, v in kq["nhan"].most_common())]
    dong += ["CẢNH BÁO: " + c for c in canh_bao(kq)]
    print("\n".join(dong))
    return dong


if __name__ == "__main__":
    if len(sys.argv) > 2:
        with open(sys.argv[1], encoding="utf-8") as f:
            kq = soat(f.read(), sys.argv[2])
        print(kq["so_dong"], "dòng;", "\n".join(canh_bao(kq)) or "không có cảnh báo")
    else:
        chay_thu()

Với bảng mẫu 10 bình luận giả định, đoạn code báo ba điều: cột điểm sao trống 3/10 ô; có 1 dòng trùng lặp ("Giao hàng nhanh" xuất hiện hai lần); nhãn lệch 8:2. Với nhãn lệch như vậy, một mô hình chỉ luôn đoán "tích cực" đã đạt 80% độ chính xác mà không học được gì, nên phải xem thêm precision và recall của lớp ít.

Chạy python soat_du_lieu.py du_lieu.csv ten_cot_nhan với tệp của bạn. Muốn soát sâu hơn (kiểu dữ liệu, giá trị bất thường), chuyển sang pandas như trong bài Python cho AI.

Chia tập dữ liệu cho đúng

Sau khi soát và làm sạch, bộ dữ liệu được chia thành ba phần. Tập huấn luyện để mô hình học. Tập kiểm định (validation) để bạn chọn mô hình và chỉnh siêu tham số. Tập kiểm tra (test) để đo kết quả cuối cùng, và chỉ được dùng một lần ở cuối; nếu bạn nhìn điểm trên tập kiểm tra rồi quay lại sửa mô hình nhiều lần, con số đó không còn phản ánh dữ liệu mới nữa.

Hai lỗi chia tập hay gặp. Thứ nhất, bỏ dòng trùng sau khi chia, khiến cùng một mẫu nằm ở cả hai phía. Thứ hai, chia ngẫu nhiên khi dữ liệu có thứ tự thời gian: mô hình dự báo được "nhìn trước tương lai" và cho kết quả đẹp giả. Với dữ liệu theo thời gian, lấy phần cũ để huấn luyện và phần mới để kiểm tra. Khi nhãn lệch, dùng cách chia giữ tỉ lệ các lớp ở mỗi phần.

Ba bài tập theo mức độ

Một cách dùng ba nguồn dữ liệu trên để luyện theo mức tăng dần. Đầu tiên, lấy một bộ bảng nhỏ trên UCI, huấn luyện hai mô hình đơn giản và so sánh chúng trên cùng tập kiểm tra. Tiếp theo, chọn một bộ trên Kaggle có nhiều notebook, tự làm trước rồi mới đọc notebook của người khác, ghi lại ba điều bạn học được từ họ. Cuối cùng, chọn một bộ văn bản tiếng Việt trên Hugging Face, đọc kỹ thẻ dữ liệu, rồi làm một bộ phân loại nhỏ và viết lại phần phân tích lỗi: mô hình sai ở loại câu nào, vì sao.

Giấy phép dữ liệu

Dữ liệu cũng có bản quyền và điều kiện sử dụng như code. Vài giấy phép hay gặp:

  • CC BY 4.0 (như bộ Iris trên UCI): được dùng, kể cả thương mại, miễn ghi nguồn.
  • CC BY-NC: không được dùng cho mục đích thương mại.
  • Giấy phép riêng của người đăng: đọc toàn văn.

Với đồ án ở trường, ghi rõ nguồn dữ liệu trong README và báo cáo. Với dự án có thể thành sản phẩm, chỉ dùng dữ liệu có giấy phép cho phép dùng thương mại. Xem thêm cách đọc giấy phép trong bài đọc README và LICENSE.

Cẩn thận
  • Chọn bộ dữ liệu khổng lồ cho dự án đầu tiên, máy không mở nổi.
  • Chia tập huấn luyện và kiểm tra trước khi bỏ dòng trùng, làm điểm kiểm tra cao giả.
  • Khoe độ chính xác cao trên dữ liệu nhãn lệch mà không xem lớp ít.
  • Dùng dữ liệu Kaggle cho sản phẩm khi người đăng không ghi rõ giấy phép.
  • Dùng dữ liệu có thông tin cá nhân mà không nghĩ tới quyền riêng tư.

Câu hỏi thường gặp

Có cần tài khoản để tải dữ liệu không?

Tùy nơi. UCI và phần lớn bộ dữ liệu công khai trên Hugging Face tải được không cần đăng nhập. Một số bộ trên Hugging Face bị khóa, cần đăng nhập và đồng ý điều kiện, giống mô hình bị khóa. Với Kaggle, đọc yêu cầu trên trang bộ dữ liệu.

Có bộ dữ liệu tiếng Việt không?

Có. Trên Hugging Face lọc theo ngôn ngữ Vietnamese; đọc thẻ dữ liệu để biết nguồn gốc và giấy phép trước khi dùng.

Dùng bộ dữ liệu kinh điển có bị coi là thiếu sáng tạo trong portfolio không?

Dùng để học thì tốt. Trong portfolio, nên có ít nhất một dự án dùng dữ liệu bạn tự thu thập hoặc ít người làm, kèm phần phân tích dữ liệu kỹ.

Tự thu thập dữ liệu từ web có được không?

Phải xem điều khoản của trang web, luật về dữ liệu cá nhân và bản quyền. Với đồ án, ưu tiên dữ liệu đã có giấy phép rõ.

Học tiếp

Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.

Muốn học bài bản cùng giảng viên?

Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.

Xem Khóa AI

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483