Bài 3 đã đề cập đến các thuật toán Machine Learning. Tuy nhiên, chất lượng của thuật toán phụ thuộc vào dữ liệu mà chúng học hỏi. Bài học này sẽ đi sâu vào quy trình xử lý dữ liệu - cách chuyển đổi dữ liệu thô thành mô hình đã qua huấn luyện, cũng như những sai lầm nghiêm trọng có thể phá hỏng toàn bộ quá trình.
Dưới đây là quy trình thực hiện:
DỮ LIỆU THÔ → Làm sạch → Kỹ thuật tạo đặc trưng → Chia dữ liệu → Chuẩn hóa tỷ lệ → Huấn luyện → Đánh giá
Mỗi bước đều quan trọng. Nếu bỏ qua một bước, mô hình của bạn sẽ không thể học được hoặc học sai kiến thức.
Bước 1: Làm sạch dữ liệu
Dữ liệu thực tế thường rất lộn xộn. Trước khi có thể triển khai Machine Learning (ML), bạn cần xử lý các vấn đề sau:
Giá trị bị thiếu: Một số hàng có các trường dữ liệu trống. Các lựa chọn: loại bỏ những hàng đó (nếu số lượng ít), điền giá trị trung bình/trung vị của cột (nếu là dữ liệu số), hoặc điền giá trị xuất hiện nhiều nhất (nếu là dữ liệu phân loại).
Giá trị ngoại lai: Một ngôi nhà được niêm yết với giá 1 USD hoặc 999.999.999 USD sẽ làm sai lệch mô hình. Hãy xác định các giá trị cực đoan này và quyết định xem chúng là dữ liệu thực (giữ lại) hay lỗi (sửa lại hoặc loại bỏ). Định dạng không nhất quán: "New York," "new york," "NY," và "N.Y." đều chỉ cùng một thành phố. Hãy chuẩn hóa các trường văn bản trước khi chúng gây nhiễu cho thuật toán.
Bản ghi trùng lặp: Cùng một điểm dữ liệu được tính hai lần sẽ làm tăng ảnh hưởng của mẫu dữ liệu đó một cách giả tạo. Hãy loại bỏ các bản ghi trùng lặp hoàn toàn.
Kiểm tra nhanh: Tập dữ liệu của bạn có 50.000 bản ghi khách hàng. 200 bản ghi bị thiếu trường "thu nhập". Bạn có nên xóa 200 dòng đó không? Câu trả lời tùy thuộc vào tình huống. Nếu thu nhập là yếu tố quan trọng đối với dự đoán và 200 trên 50.000 là con số rất nhỏ (0,4%), thì việc xóa chúng là chấp nhận được. Tuy nhiên, nếu việc thiếu thông tin thu nhập có liên quan đến một yếu tố quan trọng nào đó (ví dụ: khách hàng có thu nhập thấp thường bỏ qua trường này), thì việc xóa chúng sẽ gây ra sai lệch. Một cách tiếp cận an toàn hơn là: Điền giá trị trung vị (median) vào chỗ thiếu, hoặc tạo một biến nhị phân "income_missing" để mô hình có thể học xem liệu việc thiếu thông tin thu nhập có mang giá trị dự báo hay không.
Bước 2: Kỹ thuật tạo đặc trưng (Feature Engineering)
Các đặc trưng là những biến đầu vào mà mô hình sẽ học từ đó. Kỹ thuật tạo đặc trưng là quá trình tạo, chọn lọc và biến đổi các đặc trưng để giúp mô hình học hiệu quả hơn.
Tạo đặc trưng mới:
Từ cột "ngày sinh", tạo đặc trưng "tuổi"
Từ "ngày đặt hàng" và "ngày giao hàng", tạo đặc trưng "thời gian giao hàng (tính bằng ngày)"
Từ "thành phố" và "tiểu bang", tạo đặc trưng "vùng" (Đông Bắc, Đông Nam, Tây, v.v...)
Mã hóa dữ liệu phân loại: Các thuật toán xử lý số, không phải văn bản. Các giá trị "Red", "Blue", "Green" sẽ được chuyển thành 3 cột nhị phân: is_red (0/1), is_blue (0/1), is_green (0/1). Đây được gọi là mã hóa one-hot (one-hot encoding).
Chọn lọc đặc trưng: Không phải đặc trưng nào cũng hữu ích. Một số không liên quan (ví dụ: màu sắc yêu thích của khách hàng có lẽ không giúp dự đoán khả năng vỡ nợ khoản vay). Một số bị dư thừa (ví dụ: diện tích tính bằng feet vuông và mét vuông mang cùng một thông tin). Việc loại bỏ các đặc trưng không hữu ích thực sự có thể cải thiện độ chính xác của mô hình bằng cách giảm nhiễu.
Bước 3: Chia tập dữ liệu thành tập huấn luyện và tập kiểm tra
Đây là bước mà hầu hết người mới bắt đầu thường mắc phải sai lầm nghiêm trọng đầu tiên.
Quy tắc: LUÔN chia dữ liệu TRƯỚC khi thực hiện bất kỳ bước tiền xử lý nào sử dụng các thông số thống kê từ chính dữ liệu đó (như chuẩn hóa, co giãn đặc trưng, hay điền giá trị thiếu bằng giá trị trung bình).
Tại sao điều này quan trọng - vấn đề rò rỉ dữ liệu:
Nếu bạn chuẩn hóa dữ liệu rồi mới chia tập, quá trình chuẩn hóa đã sử dụng thông tin từ tập kiểm tra (test set). Khi đó, mô hình của bạn đã gián tiếp "nhìn thấy" dữ liệu tương lai. Hiệu suất trên tập kiểm tra sẽ có vẻ tốt hơn so với hiệu suất thực tế khi triển khai.
Trình tự đúng:
Chia dữ liệu thành tập huấn luyện (70-80%) và tập kiểm tra (20-30%)
Tính toán các thông số thống kê (trung bình, min, max, v.v...) chỉ dựa trên tập huấn luyện
Áp dụng các thông số đó để chuẩn hóa/co giãn cả tập huấn luyện và tập kiểm tra
Huấn luyện mô hình trên tập huấn luyện
Đánh giá trên tập kiểm tra
Tập kiểm định (validation set): Để tinh chỉnh tham số mô hình, bạn thường chia nhỏ hơn nữa: 70% huấn luyện, 15% kiểm định (để tinh chỉnh), 15% kiểm tra (để đánh giá cuối cùng). Tập kiểm tra chỉ nên được sử dụng MỘT LẦN duy nhất - vào giai đoạn cuối cùng - để có được ước tính hiệu suất khách quan.
Bước 4: Kiểm chứng chéo
Việc chia dữ liệu thành tập huấn luyện và tập kiểm tra chỉ một lần duy nhất có thể dẫn đến kết quả mang tính ngẫu nhiên (may mắn hoặc kém may mắn) tùy thuộc vào việc dữ liệu nào rơi vào tập kiểm tra. Kiểm chứng chéo mang lại ước tính đáng tin cậy hơn.
Kiểm chứng chéo K-fold (phương pháp tiêu chuẩn):
Chia dữ liệu thành K phần bằng nhau (gọi là các "fold" hay "nhóm con") - thường chọn K=5 hoặc K=10.
Huấn luyện mô hình trên K-1 phần và kiểm thử trên phần còn lại.
Lặp lại quy trình K lần, mỗi lần sử dụng một phần khác nhau làm tập kiểm thử.
Tính trung bình cộng của K kết quả để có ước lượng cuối cùng về hiệu suất.
Ví dụ với phương pháp 5-fold CV trên 10.000 dòng dữ liệu:
Vòng 1: Huấn luyện trên các dòng 1-8.000, kiểm thử trên 8.001-10.000 → độ chính xác 92%
Vòng 2: Huấn luyện trên các dòng 1-6.000 và 8.001-10.000, kiểm thử trên 6.001-8.000 → độ chính xác 94%
Các vòng 3-5: Thực hiện xoay vòng tương tự → 91%, 93%, 95%
Ước lượng cuối cùng: 93% ± 1,4% (giá trị trung bình ± độ lệch chuẩn).
Độ lệch chuẩn cho biết mức độ ổn định của mô hình. Độ lệch chuẩn thấp (±1-2%) cho thấy hiệu suất đáng tin cậy. Độ lệch chuẩn cao (±5-10%) cho thấy mô hình nhạy cảm với dữ liệu được dùng để huấn luyện - đây là một dấu hiệu cảnh báo.
Kiểm tra nhanh: Bạn thực hiện kiểm chứng chéo 5-fold và thu được các kết quả: 95%, 94%, 96%, 93%, 94%. Đồng nghiệp của bạn thực hiện chia dữ liệu thành tập huấn luyện và tập kiểm thử một lần duy nhất và đạt kết quả 97%. Kết quả của ai đáng tin cậy hơn?
Đáp án: Kết quả của bạn - kết quả từ phương pháp 5-fold (94,4% ± 1,0%) dựa trên 5 lần đánh giá độc lập và cho thấy hiệu suất ổn định. Kết quả 97% của đồng nghiệp bạn có thể chỉ là do may mắn khi chia dữ liệu. Nếu thực hiện cách làm của đồng nghiệp bạn 5 lần với các cách chia ngẫu nhiên khác nhau, kết quả có thể sẽ dao động từ 91% đến 97% - và giá trị trung bình sẽ xấp xỉ mức 94,4% của bạn.
Bước 5: Chuẩn hóa đặc trưng
Nhiều thuật toán rất nhạy cảm với thang đo của các đặc trưng. Nếu "thu nhập" nằm trong khoảng từ 20.000 đến 500.000 và "độ tuổi" nằm trong khoảng từ 18 đến 90, thuật toán có thể đặt trọng số quá lớn cho thu nhập đơn giản vì các giá trị của nó lớn hơn.
Những thuật toán nào không cần? Cây quyết định và random forest (chúng phân chia dựa trên giá trị, nên chuẩn hóa không quan trọng).
Những điểm chính cần ghi nhớ:
Quy trình xử lý dữ liệu: Làm sạch → thiết kế đặc trưng → phân chia → chuẩn hóa → huấn luyện → đánh giá
Rò rỉ dữ liệu: LUÔN LUÔN phân chia trước khi tiền xử lý - chuẩn hóa chỉ sử dụng số liệu thống kê của tập huấn luyện
Thiết kế đặc trưng tạo ra các đầu vào hữu ích mà mô hình có thể học hỏi - tuổi từ ngày sinh, thời gian giao hàng từ ngày tháng
Kiểm định chéo (k-fold, thường k=5) cho ước tính hiệu suất đáng tin cậy hơn so với việc chỉ phân chia tập huấn luyện và tập kiểm tra
Chuẩn hóa đặc trưng quan trọng đối với một số thuật toán (mạng nơ-ron, SVM) nhưng không quan trọng đối với các thuật toán khác (cây quyết định, random forest)
Chất lượng của quy trình xử lý dữ liệu quyết định trực tiếp chất lượng dự đoán của mô hình
Câu 1:
Bạn đang dự đoán giá nhà. Tập dữ liệu của bạn bao gồm đặc trưng "giá bán trên mỗi foot vuông". Mô hình của bạn đạt độ chính xác 99,5%. Liệu đây có phải là kết quả thực tế không?
GIẢI THÍCH:
Đây là trường hợp rò rỉ đặc trưng - một đặc trưng chứa thông tin về biến mục tiêu mà lẽ ra không có sẵn tại thời điểm dự đoán. Nếu bạn đang dự đoán giá bán, bạn không thể sử dụng 'giá bán trên mỗi foot vuông' vì nó đã chứa sẵn đáp án. Các ví dụ khác bao gồm: Sử dụng 'ngày chẩn đoán' để dự đoán bệnh (bạn chỉ biết ngày này sau khi đã có chẩn đoán), hoặc sử dụng 'số tiền vỡ nợ' để dự đoán liệu một người có vỡ nợ hay không. Quy tắc cần nhớ là: Hãy tự hỏi "liệu mình có nắm được thông tin này TRƯỚC KHI thực hiện dự đoán hay không?" Nếu câu trả lời là không, hãy loại bỏ nó.
Câu 2:
Tập dữ liệu của bạn có 10.000 dòng. Bạn chia dữ liệu theo tỷ lệ 80/20 cho huấn luyện và kiểm tra. Mô hình của bạn đạt độ chính xác 95%. Liệu bạn có nên tin tưởng kết quả này không?
GIẢI THÍCH:
Việc chia dữ liệu huấn luyện-kiểm thử một lần duy nhất cũng giống như làm một bài kiểm tra rồi tự coi mình là chuyên gia vậy. Có thể bạn đã gặp may với những câu hỏi dễ. Kiểm chứng chéo k-fold giống như làm 5 bài kiểm tra với nội dung khác nhau - nếu bạn đạt điểm cao ở cả 5 bài, kiến thức của bạn mới thực sự vững chắc. Với phương pháp 5-fold CV trên 10.000 dòng dữ liệu, bạn sẽ thu được 5 chỉ số độ chính xác từ 5 tập kiểm thử khác nhau (mỗi tập gồm 2.000 dòng). Giá trị trung bình và độ lệch chuẩn của các chỉ số này sẽ cho bạn biết cả chất lượng lẫn tính ổn định của mô hình.
Câu 3:
Bạn chuẩn hóa toàn bộ tập dữ liệu (đưa tất cả các giá trị về khoảng 0-1), sau đó chia nó thành tập huấn luyện (training set) và tập kiểm tra (test set). Mô hình của bạn hoạt động rất tốt trên tập kiểm tra nhưng lại kém hiệu quả trên dữ liệu thực tế. Điều gì đã xảy ra?
GIẢI THÍCH:
Rò rỉ dữ liệu là một trong những sai lầm phổ biến và gây hậu quả nghiêm trọng nhất trong Machine Learning (ML). Khi bạn chuẩn hóa trước khi chia dữ liệu, các giá trị nhỏ nhất và lớn nhất dùng để quy đổi thang đo đã bao gồm cả dữ liệu kiểm tra. Quá trình huấn luyện vô tình bị "nhiễm" thông tin từ tương lai. Trình tự đúng là: (1) chia dữ liệu thành tập huấn luyện/kiểm tra, (2) tính toán các tham số chuẩn hóa chỉ dựa trên dữ liệu huấn luyện, (3) áp dụng chính những tham số đó cho dữ liệu kiểm tra. Điều này đảm bảo tập kiểm tra thực sự là dữ liệu "chưa từng thấy" - mô phỏng cách mô hình sẽ tiếp xúc với dữ liệu thực tế.
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây: