Dự đoán rời bỏ bằng thuật toán dạng bảng tích hợp sẵn của Amazon SageMaker LightGBM, CatBoost, TabTransformer và AutoGluon-Tabular PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Dự đoán rời bỏ bằng thuật toán dạng bảng tích hợp sẵn của Amazon SageMaker LightGBM, CatBoost, TabTransformer và AutoGluon-Tabular

Amazon SageMaker cung cấp một bộ thuật toán tích hợp, người mẫu được đào tạo trướccác mẫu giải pháp được xây dựng trước để giúp các nhà khoa học dữ liệu và những người thực hành máy học (ML) bắt đầu đào tạo và triển khai các mô hình ML một cách nhanh chóng. Các thuật toán và mô hình này có thể được sử dụng cho cả việc học có giám sát và không giám sát. Họ có thể xử lý nhiều loại dữ liệu đầu vào khác nhau, bao gồm dạng bảng, hình ảnh và văn bản.

Sự rời bỏ khách hàng là một vấn đề mà nhiều công ty phải đối mặt, từ viễn thông đến ngân hàng, nơi khách hàng thường bị mất vào tay đối thủ cạnh tranh. Lợi ích tốt nhất của công ty là giữ chân khách hàng hiện tại thay vì thu hút khách hàng mới vì thu hút khách hàng mới thường tốn nhiều chi phí hơn đáng kể. Các nhà khai thác di động có hồ sơ lịch sử trong đó khách hàng tiếp tục sử dụng dịch vụ hoặc cuối cùng ngừng sử dụng. Chúng tôi có thể sử dụng thông tin lịch sử này về hoạt động của nhà khai thác di động để đào tạo mô hình ML. Sau khi đào tạo mô hình này, chúng tôi có thể chuyển thông tin hồ sơ của một khách hàng tùy ý (thông tin hồ sơ tương tự mà chúng tôi đã sử dụng để đào tạo mô hình) cho mô hình và để nó dự đoán liệu khách hàng này có rời bỏ hay không.

Trong bài đăng này, chúng tôi đào tạo và triển khai bốn thuật toán SageMaker được phát hành gần đây—LightGBM, CatBoost, TabTransformer và AutoGluon-Tabular—trên tập dữ liệu dự đoán tỷ lệ rời bỏ. Chúng tôi sử dụng Điều chỉnh mô hình tự động SageMaker (một công cụ để tối ưu hóa siêu tham số) để tìm các siêu tham số tốt nhất cho từng mô hình và so sánh hiệu suất của chúng trên tập dữ liệu thử nghiệm loại trừ để chọn ra siêu tham số tối ưu.

Bạn cũng có thể sử dụng giải pháp này làm mẫu để tìm kiếm trong tập hợp các thuật toán dạng bảng hiện đại và sử dụng tính năng tối ưu hóa siêu tham số để tìm ra mô hình tổng thể tốt nhất. Bạn có thể dễ dàng thay thế tập dữ liệu mẫu bằng tập dữ liệu của riêng mình để giải quyết các vấn đề kinh doanh thực tế mà bạn quan tâm. Nếu muốn đi thẳng vào mã SageMaker SDK mà chúng tôi sẽ trình bày trong bài đăng này, bạn có thể tham khảo phần sau máy tính xách tay Jupyter mẫu.

Lợi ích của các thuật toán tích hợp SageMaker

Khi chọn một thuật toán cho loại vấn đề và dữ liệu cụ thể của bạn, sử dụng thuật toán tích hợp sẵn SageMaker là tùy chọn dễ dàng nhất, bởi vì làm như vậy đi kèm với những lợi ích chính sau:

  • Mã hóa thấp – Các thuật toán tích hợp yêu cầu ít mã hóa để bắt đầu chạy thử nghiệm. Đầu vào duy nhất bạn cần cung cấp là dữ liệu, siêu tham số và tài nguyên điện toán. Điều này cho phép bạn chạy thử nghiệm nhanh hơn, với ít chi phí hơn để theo dõi kết quả và thay đổi mã.
  • Triển khai thuật toán hiệu quả và có thể mở rộng – Các thuật toán tích hợp đi kèm với khả năng song song hóa trên nhiều phiên bản điện toán và hỗ trợ GPU ngay lập tức cho tất cả các thuật toán hiện hành. Nếu bạn có nhiều dữ liệu để huấn luyện mô hình của mình, hầu hết các thuật toán tích hợp đều có thể dễ dàng mở rộng quy mô để đáp ứng nhu cầu. Ngay cả khi bạn đã có một mô hình được đào tạo trước, việc sử dụng hệ quả tất yếu của nó trong SageMaker và nhập các siêu tham số mà bạn đã biết vẫn có thể dễ dàng hơn thay vì chuyển nó sang và tự viết tập lệnh đào tạo.
  • Minh bạch – Bạn là chủ sở hữu của các tạo phẩm mô hình thu được. Bạn có thể lấy mô hình đó và triển khai nó trên SageMaker cho một số mẫu suy luận khác nhau (xem tất cả các loại triển khai có sẵn) và quản lý và mở rộng điểm cuối dễ dàng hoặc bạn có thể triển khai nó ở bất kỳ nơi nào khác bạn cần.

Trực quan hóa và tiền xử lý dữ liệu

Đầu tiên, chúng tôi thu thập dữ liệu về khách hàng rời đi. Đó là một tập dữ liệu tương đối nhỏ với 5,000 bản ghi, trong đó mỗi bản ghi sử dụng 21 thuộc tính để mô tả hồ sơ khách hàng của một nhà mạng di động không xác định ở Hoa Kỳ. Các thuộc tính bao gồm từ tiểu bang Hoa Kỳ nơi khách hàng cư trú, đến số lượng cuộc gọi họ đã thực hiện tới bộ phận dịch vụ khách hàng, đến chi phí họ phải trả cho các cuộc gọi ban ngày. Chúng tôi đang cố gắng dự đoán liệu khách hàng có rời bỏ hay không, đây là một vấn đề phân loại nhị phân. Sau đây là tập hợp con của các tính năng đó, với nhãn là cột cuối cùng.

Sau đây là một số thông tin chi tiết cho từng cột, cụ thể là số liệu thống kê tóm tắt và biểu đồ của các tính năng được chọn.

Dự đoán rời bỏ bằng thuật toán dạng bảng tích hợp sẵn của Amazon SageMaker LightGBM, CatBoost, TabTransformer và AutoGluon-Tabular PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Sau đó, chúng tôi xử lý trước dữ liệu, chia dữ liệu thành các tập huấn luyện, xác thực và kiểm tra rồi tải dữ liệu lên Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3).

Tự động điều chỉnh mô hình của các thuật toán dạng bảng

Siêu tham số kiểm soát cách các thuật toán cơ bản của chúng tôi hoạt động và ảnh hưởng đến hiệu suất của mô hình. Các siêu tham số đó có thể là số lớp, tốc độ học tập, tốc độ giảm trọng số và tỷ lệ loại bỏ đối với các mô hình dựa trên mạng thần kinh hoặc số lượng lá, số lần lặp và độ sâu cây tối đa cho các mô hình tập hợp cây. Để chọn mô hình tốt nhất, chúng tôi áp dụng điều chỉnh mô hình tự động của SageMaker cho từng thuật toán trong số bốn thuật toán dạng bảng SageMaker đã được huấn luyện. Bạn chỉ cần chọn các siêu tham số để điều chỉnh và phạm vi cho từng tham số để khám phá. Để biết thêm thông tin về điều chỉnh mô hình tự động, hãy tham khảo Amazon SageMaker Automatic Model Tuning: Sử dụng Machine Learning cho Machine Learning or Điều chỉnh mô hình tự động của Amazon SageMaker: Tối ưu hóa không có độ dốc có thể mở rộng.

Hãy xem làm thế nào điều này hoạt động trong thực tế.

ánh sángGBM

Chúng tôi bắt đầu bằng cách chạy điều chỉnh mô hình tự động với LightGBM và điều chỉnh quy trình đó cho phù hợp với các thuật toán khác. Như đã giải thích trong bài viết Các mô hình và thuật toán Amazon SageMaker JumpStart hiện có sẵn thông qua API, cần có các tạo phẩm sau để huấn luyện thuật toán dựng sẵn thông qua SageMaker SDK:

  • Hình ảnh vùng chứa dành riêng cho khung của nó, chứa tất cả các phần phụ thuộc cần thiết cho việc đào tạo và suy luận
  • Tập lệnh huấn luyện và suy luận cho mô hình hoặc thuật toán đã chọn

Trước tiên, chúng tôi truy xuất các tạo phẩm này, điều này phụ thuộc vào model_id (lightgbm-classification-model trong trường hợp này) và phiên bản:

from sagemaker import image_uris, model_uris, script_uris
train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training"
training_instance_type = "ml.m5.4xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(region=None,
                                      framework=None,
                                      model_id=train_model_id,
                                      model_version=train_model_version,
                                      image_scope=train_scope,
                                      instance_type=training_instance_type,
                                      )                                      
# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=train_model_id,
                                        model_version=train_model_version,
                                        script_scope=train_scope
                                        )
# Retrieve the pre-trained model tarball (in the case of tabular modeling, it is a dummy file)
train_model_uri = model_uris.retrieve(model_id=train_model_id,
                                      model_version=train_model_version,
                                      model_scope=train_scope)

Sau đó, chúng tôi lấy các siêu tham số mặc định cho LightGBM, đặt một số trong số chúng thành các giá trị cố định đã chọn, chẳng hạn như số vòng tăng cường và chỉ số đánh giá trên dữ liệu xác thực, đồng thời xác định phạm vi giá trị mà chúng tôi muốn tìm kiếm cho các giá trị khác. Chúng tôi sử dụng các tham số SageMaker ContinuousParameterIntegerParameter cho điều này:

from sagemaker import hyperparameters
from sagemaker.tuner import ContinuousParameter, IntegerParameter, HyperparameterTuner

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=train_model_id,
                                                   model_version=train_model_version
                                                   )
# [Optional] Override default hyperparameters with custom values
hyperparameters["num_boost_round"] = "500"
hyperparameters["metric"] = "auc"

# Define search ranges for other hyperparameters
hyperparameter_ranges_lgb = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

Cuối cùng, chúng tôi tạo ra một Công cụ ước tính SageMaker, cho nó vào một Bộ điều chỉnh siêu tham sốvà bắt đầu công việc điều chỉnh siêu tham số với tuner.fit():

from sagemaker.estimator import Estimator
from sagemaker.tuner import HyperParameterTuner

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
)

tuner = HyperparameterTuner(
            tabular_estimator,
            "auc",
            hyperparameter_ranges_lgb,
            [{"Name": "auc", "Regex": "auc: ([0-9.]+)"}],
            max_jobs=10,
            max_parallel_jobs=5,
            objective_type="Maximize",
            base_tuning_job_name="some_name",
        )

tuner.fit({"training": training_dataset_s3_path}, logs=True)

Sản phẩm max_jobs tham số xác định tổng số công việc sẽ được chạy trong công việc điều chỉnh mô hình tự động và max_parallel_jobs xác định có bao nhiêu công việc đào tạo đồng thời nên được bắt đầu. Chúng tôi cũng xác định mục tiêu “Maximize” AUC của mô hình (diện tích dưới đường cong). Để đi sâu hơn vào các tham số có sẵn được trình bày bởi HyperParameterTuner, tham khảo Siêu tham sốTuner.

Kiểm tra các mẫu máy tính xách tay để xem cách chúng tôi tiến hành triển khai và đánh giá mô hình này trên tập thử nghiệm.

CátBoost

Quá trình điều chỉnh siêu tham số trên thuật toán CatBoost vẫn giống như trước đây, mặc dù chúng tôi cần truy xuất các tạo phẩm mô hình theo ID catboost-classification-model và thay đổi lựa chọn phạm vi của siêu tham số:

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["iterations"] = "500"
hyperparameters["eval_metric"] = "AUC"

# Define search ranges for other hyperparameters
hyperparameter_ranges_cat = {
    "learning_rate": ContinuousParameter(0.00001, 0.1, scaling_type="Logarithmic"),
    "iterations": IntegerParameter(50, 1000),
    "depth": IntegerParameter(1, 10),
    "l2_leaf_reg": IntegerParameter(1, 10),
    "random_strength": ContinuousParameter(0.01, 10, scaling_type="Logarithmic"),
}

TabBiến Áp

Quá trình điều chỉnh siêu tham số trên mô hình TabTransformer vẫn giống như trước đây, mặc dù chúng tôi cần truy xuất các tạo phẩm mô hình theo ID pytorch-tabtransformerclassification-model và thay đổi phạm vi lựa chọn của siêu tham số.

Chúng tôi cũng thay đổi cách đào tạo instance_type đến ml.p3.2xlarge. TabTransformer là một mô hình gần đây được lấy từ nghiên cứu của Amazon, mang lại sức mạnh của deep learning cho dữ liệu dạng bảng bằng cách sử dụng các mô hình Transformer. Để huấn luyện mô hình này một cách hiệu quả, chúng ta cần một phiên bản được hỗ trợ bởi GPU. Để biết thêm thông tin, hãy tham khảo Mang sức mạnh của deep learning vào dữ liệu trong bảng.

from sagemaker import hyperparameters
from sagemaker.tuner import CategoricalParameter

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["n_epochs"] = 40  # The same hyperparameter is named as "iterations" for CatBoost
hyperparameters["patience"] = 10

# Define search ranges for other hyperparameters
hyperparameter_ranges_tab = {
    "learning_rate": ContinuousParameter(0.001, 0.01, scaling_type="Auto"),
    "batch_size": CategoricalParameter([64, 128, 256, 512]),
    "attn_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "mlp_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "input_dim": CategoricalParameter(["16", "32", "64", "128", "256"]),
    "frac_shared_embed": ContinuousParameter(0.0, 0.5, scaling_type="Auto"),
}

AutoGluon-Bảng

Trong trường hợp AutoGluon, chúng tôi không chạy điều chỉnh siêu tham số. Điều này là do thiết kế, vì AutoGluon tập trung vào việc tập hợp nhiều mô hình với các lựa chọn siêu tham số hợp lý và xếp chúng thành nhiều lớp. Điều này mang lại hiệu quả cao hơn so với việc đào tạo một mô hình với sự lựa chọn siêu tham số hoàn hảo và cũng rẻ hơn về mặt tính toán. Để biết chi tiết, hãy kiểm tra AutoGluon-Tabular: AutoML mạnh mẽ và chính xác cho dữ liệu có cấu trúc.

Vì vậy, chúng tôi chuyển đổi model_id đến autogluon-classification-ensemblevà chỉ sửa siêu tham số chỉ số đánh giá theo điểm AUC mong muốn của chúng tôi:

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)

hyperparameters["eval_metric"] = "roc_auc"

Thay vì gọi tuner.fit(), chúng tôi gọi estimator.fit() để bắt đầu một công việc đào tạo duy nhất.

So sánh các mô hình được đào tạo

Sau khi triển khai tất cả bốn mô hình, chúng tôi gửi bộ thử nghiệm đầy đủ đến từng điểm cuối để dự đoán và tính toán độ chính xác, chỉ số F1 và AUC cho từng mô hình (xem mã trong mẫu máy tính xách tay). Chúng tôi trình bày kết quả trong bảng sau, kèm theo tuyên bố từ chối trách nhiệm quan trọng: kết quả và hiệu suất tương đối giữa các mô hình này sẽ phụ thuộc vào tập dữ liệu bạn sử dụng để đào tạo. Các kết quả này mang tính đại diện và mặc dù xu hướng một số thuật toán nhất định hoạt động tốt hơn dựa trên các yếu tố có liên quan (ví dụ: AutoGluon kết hợp một cách thông minh các dự đoán của cả hai mô hình LightGBM và CatBoost phía sau), sự cân bằng về hiệu suất có thể thay đổi theo một điều kiện khác. phân phối dữ liệu.

. LightGBM với điều chỉnh mô hình tự động CatBoost với tính năng Điều chỉnh mô hình tự động TabTransformer với điều chỉnh mô hình tự động AutoGluon-Bảng
tính chính xác 0.8977 0.9622 0.9511 0.98
F1 0.8986 0.9624 0.9517 0.98
AUC 0.9629 0.9907 0.989 0.9979

Kết luận

Trong bài đăng này, chúng tôi đã đào tạo bốn thuật toán tích hợp SageMaker khác nhau để giải quyết vấn đề dự đoán tỷ lệ rời bỏ khách hàng với nỗ lực mã hóa thấp. Chúng tôi đã sử dụng tính năng điều chỉnh mô hình tự động của SageMaker để tìm ra các siêu tham số tốt nhất để huấn luyện các thuật toán này và so sánh hiệu suất của chúng trên tập dữ liệu dự đoán rời bỏ đã chọn. Bạn có thể sử dụng liên quan mẫu máy tính xách tay làm mẫu, thay thế tập dữ liệu bằng tập dữ liệu của riêng bạn để giải quyết vấn đề dựa trên dữ liệu dạng bảng mà bạn mong muốn.

Đảm bảo thử các thuật toán này trên SageMaker và xem sổ ghi chép mẫu về cách sử dụng các thuật toán tích hợp khác có sẵn trên GitHub.


Giới thiệu về tác giả

Dự đoán rời bỏ bằng thuật toán dạng bảng tích hợp sẵn của Amazon SageMaker LightGBM, CatBoost, TabTransformer và AutoGluon-Tabular PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Tiến sĩ Xin Huang là Nhà khoa học ứng dụng cho các thuật toán tích hợp sẵn của Amazon SageMaker JumpStart và Amazon SageMaker. Ông tập trung vào việc phát triển các thuật toán học máy có thể mở rộng. Mối quan tâm nghiên cứu của anh ấy là trong lĩnh vực xử lý ngôn ngữ tự nhiên, học sâu có thể giải thích được trên dữ liệu dạng bảng và phân tích mạnh mẽ phân nhóm không-thời gian phi tham số. Ông đã xuất bản nhiều bài báo trong các hội nghị ACL, ICDM, KDD và Hiệp hội Thống kê Hoàng gia: Tạp chí Series A.

Dự đoán rời bỏ bằng thuật toán dạng bảng tích hợp sẵn của Amazon SageMaker LightGBM, CatBoost, TabTransformer và AutoGluon-Tabular PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.João Moura là Kiến trúc sư Giải pháp Chuyên gia về AI / ML tại Amazon Web Services. Ông chủ yếu tập trung vào các trường hợp sử dụng NLP và giúp khách hàng tối ưu hóa việc đào tạo và triển khai mô hình Deep Learning. Ông cũng là người tích cực đề xuất các giải pháp ML mã thấp và phần cứng chuyên dụng ML.

Dấu thời gian:

Thêm từ Học máy AWS