Bài 5: Tối ưu mô hình để có kết quả tốt hơn
1. Giới thiệu
Sau khi huấn luyện và đánh giá mô hình, bạn có thể thấy rằng độ chính xác chưa tốt hoặc sai số còn cao. Vậy làm sao để cải thiện mô hình?
Trong bài này, bạn sẽ học:
✅ Các yếu tố ảnh hưởng đến chất lượng mô hình.
✅ Tối ưu dữ liệu đầu vào.
✅ Chọn thuật toán tốt hơn.
✅ Điều chỉnh tham số mô hình (Hyperparameter Tuning).
✅ Kỹ thuật AutoML.NET giúp tối ưu tự động.
2. Các yếu tố ảnh hưởng đến chất lượng mô hình
Một mô hình tốt phụ thuộc vào nhiều yếu tố:
1️⃣ Dữ liệu đầu vào:
- Dữ liệu có bị thiếu hoặc sai không?
- Có quá nhiều cột dư thừa không?
- Có cột nào quan trọng nhưng chưa được dùng không?
2️⃣ Thuật toán học máy (Machine Learning Algorithm):
- Đang dùng thuật toán phù hợp chưa?
- Có thuật toán nào khác tốt hơn không?
3️⃣ Tham số thuật toán (Hyperparameters):
- Cần điều chỉnh tham số nào để cải thiện mô hình?
4️⃣ Số lượng dữ liệu huấn luyện:
- Dữ liệu càng nhiều thì mô hình càng chính xác.
🎯 Mục tiêu: Giảm sai số, tăng độ chính xác để có mô hình tốt nhất!
3. Tối ưu dữ liệu đầu vào
Chất lượng mô hình = Chất lượng dữ liệu!
📌 Một số kỹ thuật cải thiện dữ liệu:
- Loại bỏ dữ liệu trùng lặp hoặc không hợp lệ.
- Xử lý giá trị bị thiếu (có thể dùng giá trị trung bình để thay thế).
- Chuẩn hóa dữ liệu (đưa dữ liệu về cùng một đơn vị).
Tạo thêm đặc trưng quan trọng (Feature Engineering).
📌 Ví dụ:
Nếu đang dự đoán giá xe, cột “Số năm sử dụng” có thể quan trọng hơn cột “Năm sản xuất”.
Thay vì dùng cột "Year", có thể tạo cột mới như sau:
int currentYear = DateTime.Now.Year;
carData.YearsUsed = currentYear - carData.Year;
🔹 Lợi ích: Mô hình có thể hiểu dữ liệu rõ hơn! 🚀
4. Chọn thuật toán tốt hơn
ML.NET có nhiều thuật toán khác nhau. Một số thuật toán tốt cho hồi quy (Regression):
| Thuật toán | Mô tả | Khi nào nên dùng? |
|---|---|---|
| FastTree Regression | Cây quyết định nhanh | Dữ liệu không quá lớn |
| LightGBM Regression | Gradient Boosting mạnh | Dữ liệu lớn, nhiều đặc trưng |
| Sdca Regression | Hồi quy tuyến tính tối ưu | Khi dữ liệu tuyến tính |
📌 Ví dụ: Thay đổi thuật toán từ FastTree sang LightGBM
var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "YearsUsed", "Mileage" })
.Append(mlContext.Regression.Trainers.LightGbm());
✅ Kết quả: Có thể giảm sai số và tăng độ chính xác!
5. Điều chỉnh tham số mô hình (Hyperparameter Tuning)
Mỗi thuật toán có các tham số có thể điều chỉnh để tối ưu hiệu suất. Ví dụ với FastTree Regression:
📌 Thay đổi số lượng cây quyết định (NumberOfTrees) và độ sâu (MaximumDepth)
var trainer = mlContext.Regression.Trainers.FastTree(
numberOfTrees: 200,
minimumExampleCountPerLeaf: 10,
maximumDepth: 8
);
var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "YearsUsed", "Mileage" })
.Append(trainer);
🎯 Lợi ích:
- Số cây cao hơn → Mô hình mạnh hơn nhưng có thể chậm.
- Sâu hơn → Hiểu dữ liệu tốt hơn nhưng có thể bị overfitting.
🔹 Cách tốt nhất để chọn tham số? 👉 AutoML.NET!
6. Dùng AutoML.NET để tối ưu tự động
AutoML.NET giúp tự động thử nghiệm các thuật toán và tham số tốt nhất!
📌 Cài đặt AutoML.NET:
dotnet add package Microsoft.ML.AutoML
📌 Chạy thử nghiệm để tìm mô hình tốt nhất:
using Microsoft.ML.AutoML;
var experimentSettings = new RegressionExperimentSettings
{
MaxExperimentTimeInSeconds = 600 // Chạy trong 10 phút
};
var experiment = mlContext.Auto().CreateRegressionExperiment(experimentSettings);
var result = experiment.Execute(trainData, labelColumnName: "Price");
Console.WriteLine($"Mô hình tốt nhất: {result.BestRun.TrainerName}");
Console.WriteLine($"Sai số nhỏ nhất: {result.BestRun.ValidationMetrics.MeanAbsoluteError}");
✅ AutoML sẽ chọn thuật toán và tham số tốt nhất cho bạn!
7. Tổng kết
✅ Chất lượng mô hình phụ thuộc vào dữ liệu, thuật toán và tham số.
✅ Dọn dẹp & tối ưu dữ liệu giúp mô hình hoạt động tốt hơn.
✅ Chọn thuật toán phù hợp với bài toán của bạn.
✅ Điều chỉnh tham số mô hình để giảm sai số.
✅ Dùng AutoML.NET để tìm mô hình tối ưu một cách tự động.
Tác giả: TEDU
Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.
Bài viết liên quan
Xây dựng trợ lý AI (Copilot) bằng cách sử dụng Semantic Kernel framework với C#.NET
Semantic Kernel (SK) là một SDK mã nguồn mở, giúp bạn dễ dàng xây dựng các AI agent có thể gọi code hiện có của bạn. SK hỗ trợ các model từ OpenAI, Azure OpenAI, Hugging Face, v.v.
Đọc thêm
Bài 1: ML.NET là gì? Tổng quan về Machine Learning trong .NET
ML.NET là một framework Machine Learning dành riêng cho .NET, giúp các lập trình viên C# có thể xây dựng mô hình ML một cách dễ dàng mà không cần kiến thức chuyên sâu về AI.
Đọc thêm
Cách Sử Dụng Trí Tuệ Nhân Tạo (AI) trong Business Analytics
Trong bài viết này, chúng ta sẽ khám phá sức mạnh của trí tuệ nhân tạo (AI) trong lĩnh vực Business Analytics và cách nó đã thay đổi cách chúng ta hiểu và thực hiện phân tích dữ liệu.
Đọc thêmKhám phá Phind: Đối tác lập trình AI hoàn hảo và hoàn toàn miễn phí
Giới thiệu công cụ AI Phind, một trợ lý lập trình miễn phí giúp viết mã nhanh chóng và hiệu quả dựa trên ngữ cảnh và ý định của mã bạn đang viết.
Đọc thêm
Khám phá GitHub Copilot: Đối tác lập trình AI tốt nhất hiện nay
Hướng dẫn sử dụng công cụ AI lập trình Github Copilot thông qua Visual Stdio Code
Đọc thêm