Xây dựng và tích hợp mô hình máy học tùy chỉnh vào AutoGluon

AutoGluon là một khung làm việc (framework) AutoML mạnh mẽ, cung cấp sẵn nhiều mô hình tối ưu. Tuy nhiên, trong các bài toán thực tế, đôi khi bạn cần tích hợp các thuật toán chuyên biệt, các quy tắc dựa trên tri thức ngành (domain knowledge) hoặc các kiến trúc mạng nơ-ron tùy chỉnh mà hệ thống chưa hỗ trợ sẵn. Việc mở rộng AutoGluon cho phép bạn tận dụng khả năng tự động tối ưu hóa tham số và kết hợp mô hình (stacking/ensembling) cho chính thuật toán của mình.

Điều kiện tiên quyết

Để bắt đầu, hãy đảm bảo bạn đã cài đặt các thư viện cần thiết cho AutoGluon:

pip install autogluon.core autogluon.tabular

Quy trình 3 bước triển khai mô hình tùy chỉnh

Bước 1: Định nghĩa lớp mô hình kế thừa AbstractModel

Mọi mô hình trong AutoGluon đều bắt nguồn từ lớp AbstractModel. Bạn cần triển khai lại các phương thức quan trọng như _fit để huấn luyện và _preprocess để xử lý dữ liệu.

from autogluon.core.models import AbstractModel
from sklearn.linear_model import LogisticRegression

class MyCustomClassifier(AbstractModel):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.model = None

    def _preprocess(self, data_frame, **kwargs):
        # Thực hiện tiền xử lý dữ liệu đặc thù
        data_frame = super()._preprocess(data_frame, **kwargs)
        return data_frame.fillna(0).select_dtypes(include=['number'])

    def _fit(self, X_in, y_in, **kwargs):
        # Khởi tạo mô hình với các tham số từ hyperparameters
        params = self._get_model_params()
        self.model = LogisticRegression(**params)
        self.model.fit(X_in, y_in)

Bước 2: Cấu hình không gian tìm kiếm tham số

Để AutoGluon có thể tự động tinh chỉnh mô hình, bạn cần định nghĩa không gian siêu tham số (search space). Việc sử dụng decorator @TabularModel.register() giúp hệ thống nhận diện mô hình mới một cách tự động.

from autogluon.core.space import Categorical, Real
from autogluon.tabular.models import TabularModel

@TabularModel.register()
class RegisteredCustomModel(MyCustomClassifier):
    def _get_default_searchspace(self):
        return {
            'C': Real(0.01, 10.0, default=1.0, log=True),
            'solver': Categorical('liblinear', 'lbfgs'),
            'max_iter': 200
        }

Bước 3: Huấn luyện tích hợp

Sau khi đã đăng ký, bạn có thể sử dụng mô hình này như một phần của quy trình AutoML tiêu chuẩn. Bạn có thể huấn luyện riêng lẻ hoặc kết hợp với các mô hình mặc định của AutoGluon.

from autogluon.tabular import TabularPredictor

# Cấu hình danh sách mô hình tham gia huấn luyện
custom_hyperparams = {
    RegisteredCustomModel: {},
    'GBM': [
        {'device': 'gpu', 'extra_trees': True, 'ag_args': {'name_suffix': 'XT'}},
    ]
}

predictor = TabularPredictor(label='target_column').fit(
    train_data='path/to/data.csv',
    hyperparameters=custom_hyperparams,
    auto_stack=True
)

# Kiểm tra bảng xếp hạng hiệu năng
performance_board = predictor.leaderboard(test_data)

Tối ưu hóa khả năng tương thích

Để mô hình hoạt động ổn định trong các cấu trúc phức tạp như Multi-layer Stacking, bạn nên lưu ý các phương thức bổ trợ:

  • Xử lý kiểu dữ liệu: Sử dụng _get_default_auxiliary_params để giới hạn các loại dữ liệu đầu vào mà mô hình có thể tiếp nhận (ví dụ: chỉ nhận dữ liệu số, bỏ qua văn bản).
  • Quản lý bộ nhớ: Triển khai các cơ chế kiểm soát kích thước mô hình nếu bạn dự định triển khai trên các thiết bị có tài nguyên hạn chế.
  • Trích xuất đặc trưng: Tích hợp các bước kỹ thuật đặc trưng (Feature Engineering) trực tiếp vào phương thức _preprocess để đảm bảo tính nhất quán giữa lúc huấn luyện và dự báo.

Xử lý lưu trữ và tải mô hình

AutoGluon tự động quản lý việc serialization cho các lớp kế thừa đúng chuẩn. Sau khi hoàn tất huấn luyện, việc tải lại mô hình để dự báo được thực hiện đơn giản như sau:

# Lưu trữ mô hình đã huấn luyện
predictor.save("my_automl_path")

# Tải lại để thực hiện inference
loaded_predictor = TabularPredictor.load("my_automl_path")
predictions = loaded_predictor.predict(new_data)

Bằng cách mở rộng lớp AbstractModel, bạn không chỉ đưa được thuật toán của mình vào hệ sinh thái AutoGluon mà còn tận dụng được các tính năng cao cấp như xử lý song song, kiểm soát thời gian huấn luyện và các chiến lược ensemble tự động, giúp tối ưu hóa độ chính xác cuối cùng của hệ thống máy học.

Thẻ: autogluon automl scikit-learn machine-learning-engineering python

Đăng vào ngày 17 tháng 7 lúc 08:46