Logo Zephyrnet

Xây dựng mô hình phân loại nhiều lớp với Amazon Redshift ML

Ngày:

Máy học dịch chuyển đỏ của Amazon đơn giản hóa việc sử dụng máy học (ML) bằng cách sử dụng các câu lệnh SQL đơn giản để tạo và huấn luyện các mô hình ML từ dữ liệu trong Amazon RedShift. Bạn có thể sử dụng Amazon Redshift ML để giải quyết các vấn đề về phân loại nhị phân, phân loại đa lớp và hồi quy, đồng thời có thể sử dụng trực tiếp AutoML hoặc XGBoost.

Bài đăng này là một phần của loạt bài mô tả việc sử dụng Amazon Redshift ML. Để biết thêm thông tin về xây dựng hồi quy bằng Amazon Redshift ML, hãy xem Xây dựng mô hình hồi quy với Amazon Redshift ML.

Bạn có thể sử dụng Amazon Redshift ML để tự động hóa việc chuẩn bị dữ liệu, xử lý trước và lựa chọn loại sự cố như được mô tả trong bài viết trên blog này. Chúng tôi cho rằng bạn hiểu rõ về dữ liệu của mình và loại sự cố nào phù hợp nhất với trường hợp sử dụng của bạn. Bài đăng này đặc biệt tập trung vào việc tạo mô hình trong Amazon Redshift bằng cách sử dụng loại vấn đề phân loại nhiều lớp, bao gồm việc phân loại các thể hiện thành một trong ba hoặc nhiều lớp. Ví dụ: bạn có thể dự đoán liệu một giao dịch là gian lận, thất bại hay thành công, liệu khách hàng có duy trì hoạt động trong 3 tháng, 12 tháng, XNUMX tháng, XNUMX tháng hay liệu một tin tức có được gắn thẻ là thể thao, tin tức thế giới, kinh doanh hay không.

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

Là điều kiện tiên quyết để triển khai giải pháp này, bạn cần thiết lập một cụm Amazon Redshift có bật ML trên đó. Để biết các bước sơ bộ để bắt đầu, hãy xem Tạo, đào tạo và triển khai các mô hình học máy trong Amazon Redshift bằng cách sử dụng SQL với Amazon Redshift ML.

Trường hợp sử dụng

Đối với trường hợp sử dụng của chúng tôi, chúng tôi muốn nhắm mục tiêu những khách hàng tích cực nhất của mình cho một chương trình khách hàng thân thiết đặc biệt. Chúng tôi sử dụng Amazon Redshift ML và phân loại nhiều lớp để dự đoán số tháng khách hàng sẽ hoạt động trong khoảng thời gian 13 tháng. Điều này chuyển thành tối đa 13 lớp có thể, điều này làm cho điều này phù hợp hơn với phân loại nhiều lớp. Khách hàng có hoạt động dự đoán từ 7 tháng trở lên được nhắm mục tiêu cho chương trình khách hàng thân thiết đặc biệt.

Nhập dữ liệu thô

Để chuẩn bị dữ liệu thô cho mô hình này, chúng tôi đã điền vào bảng ecommerce_sales trong Amazon Redshift bằng tập dữ liệu công khai Dự báo doanh số thương mại điện tử, bao gồm dữ liệu bán hàng của một nhà bán lẻ trực tuyến ở Vương quốc Anh.

Nhập các câu lệnh sau để tải dữ liệu lên Amazon Redshift:

CREATE TABLE IF NOT EXISTS ecommerce_sales
( invoiceno VARCHAR(30) ,stockcode VARCHAR(30) ,description VARCHAR(60) ,quantity DOUBLE PRECISION ,invoicedate VARCHAR(30) ,unitprice DOUBLE PRECISION ,customerid BIGINT ,country VARCHAR(25) )
;

Copy ecommerce_sales
From 's3://redshift-ml-multiclass/ecommerce_data.txt'
iam_role '<<your-amazon-redshift-sagemaker-iam-role-arn>>' delimiter 't' IGNOREHEADER 1 region 'us-east-1' maxerror 100;

Để tạo lại tập lệnh này trong môi trường của bạn, hãy thay thế < > với Quản lý truy cập và nhận dạng AWS (IAM) ARN cho cụm Amazon Redshift của bạn.

Chuẩn bị dữ liệu cho mô hình ML

Giờ đây, tập dữ liệu của chúng ta đã được tải, chúng ta có thể tùy chọn chia dữ liệu thành ba tập hợp để đào tạo (80%), xác thực (10%) và dự đoán (10%). Lưu ý rằng Amazon Redshift ML Autopilot sẽ tự động phân tách dữ liệu thành quá trình đào tạo và xác thực, nhưng bằng cách phân tách dữ liệu tại đây, bạn sẽ có thể xác minh tính chính xác của mô hình của mình. Ngoài ra, chúng tôi tính toán số tháng mà một khách hàng đã hoạt động, vì đó sẽ là giá trị mà chúng tôi muốn mô hình của mình dự đoán trên dữ liệu mới. Chúng tôi sử dụng hàm ngẫu nhiên trong các câu lệnh SQL của mình để phân chia dữ liệu. Xem đoạn mã sau:

create table ecommerce_sales_data as ( select t1.stockcode, t1.description, t1.invoicedate, t1.customerid, t1.country, t1.sales_amt, cast(random() * 100 as int) as data_group_id from ( select stockcode, description, invoicedate, customerid, country, sum(quantity * unitprice) as sales_amt from ecommerce_sales group by 1, 2, 3, 4, 5 ) t1
);

Tập huấn luyện

create table ecommerce_sales_training as ( select a.customerid, a.country, a.stockcode, a.description, a.invoicedate, a.sales_amt, (b.nbr_months_active) as nbr_months_active from ecommerce_sales_data a inner join ( select customerid, count( distinct( DATE_PART(y, cast(invoicedate as date)) || '-' || LPAD( DATE_PART(mon, cast(invoicedate as date)), 2, '00' ) ) ) as nbr_months_active from ecommerce_sales_data group by 1 ) b on a.customerid = b.customerid where a.data_group_id < 80
);

Bộ xác thực

create table ecommerce_sales_validation as ( select a.customerid, a.country, a.stockcode, a.description, a.invoicedate, a.sales_amt, (b.nbr_months_active) as nbr_months_active from ecommerce_sales_data a inner join ( select customerid, count( distinct( DATE_PART(y, cast(invoicedate as date)) || '-' || LPAD( DATE_PART(mon, cast(invoicedate as date)), 2, '00' ) ) ) as nbr_months_active from ecommerce_sales_data group by 1 ) b on a.customerid = b.customerid where a.data_group_id between 80 and 90
);

Bộ dự đoán

create table ecommerce_sales_prediction as ( select customerid, country, stockcode, description, invoicedate, sales_amt from ecommerce_sales_data where data_group_id > 90);

Tạo mô hình trong Amazon Redshift

Bây giờ chúng tôi đã tạo tập dữ liệu xác thực và đào tạo của mình, chúng tôi có thể sử dụng tạo mô hình trong Amazon Redshift để tạo mô hình ML của chúng tôi bằng cách sử dụng Multiclass_Classification. Chúng tôi chỉ định loại sự cố nhưng chúng tôi để AutoML lo mọi thứ khác. Trong mô hình này, mục tiêu chúng tôi muốn dự đoán là nbr_months_active. Amazon SageMaker tạo chức năng predict_customer_activity, mà chúng tôi sử dụng để suy luận trong Amazon Redshift. Xem đoạn mã sau:

create model ecommerce_customer_activity
from (
select customerid, country, stockcode, description, invoicedate, sales_amt, nbr_months_active from ecommerce_sales_training) TARGET nbr_months_active FUNCTION predict_customer_activity IAM_ROLE '<<your-amazon-redshift-sagemaker-iam-role-arn>>' problem_type MULTICLASS_CLASSIFICATION SETTINGS ( S3_BUCKET '<<your-amazon-s3-bucket-name>>’, S3_GARBAGE_COLLECT OFF );

Để tạo lại tập lệnh này trong môi trường của bạn, hãy thay thế < > với ARN vai trò IAM của cụm của bạn.

Xác thực dự đoán

Trong bước này, chúng tôi đánh giá độ chính xác của mô hình ML dựa trên dữ liệu xác thực của chúng tôi.

Trong khi tạo mô hình, Amazon SageMaker Tự động lái tự động phân tách dữ liệu đầu vào thành các bộ đào tạo và xác thực, đồng thời chọn mô hình có chỉ số khách quan tốt nhất, được triển khai trong cụm Amazon Redshift. Bạn có thể sử dụng câu lệnh mô hình hiển thị trong cụm của mình để xem các chỉ số khác nhau, bao gồm cả điểm chính xác. Nếu bạn không chỉ định rõ ràng, SageMaker sẽ tự động sử dụng độ chính xác cho loại mục tiêu. Xem đoạn mã sau:

Show model ecommerce_customer_activity;

Như được hiển thị trong đầu ra sau, mô hình của chúng tôi có điểm chính xác là 0.996580.

Key Giá trị
Tên Model thương mại điện tử_customer_activity
Tên giản đồ Công khai
Chủ nhân Demo
Thời gian sáng tạo Thứ Hai, 22.03.2021 19:48:30
Trạng thái mô hình SẲN SÀNG
Tình trạng công việc đào tạo Đã đạt MaxAutoMLJobRuntime
xác nhận: độ chính xác 0.996580
Chi phí ước tính 4.260437
DỮ LIỆU ĐÀO TẠO:
Query CHỌN ID KHÁCH HÀNG, QUỐC GIA, MÃ KHO, MÔ TẢ, NGÀY HÓA ĐƠN, SALES_AMT, NBR_MONTHS_ACTIVE
TỪ ECOMMERCE_SALES_CLN_TRAINING
Cột mục tiêu NBR_MONTHS_ACTIVE
THÔNG SỐ:
Loại mô hình Tự động
Loại vấn đề Đa lớpPhân loại
Loại vấn đề tính chính xác
Tên công việc AutoML 2021-03-07-19-48-30-960148-auto
Tên chức năng dự đoán_khách hàng_hoạt động
Các tham số chức năng customerid quốc gia mã chứng khoán mô tả hóa đơn ngày sales_amt
Các loại tham số chức năng int8 varchar varchar varchar varchar float8

Hãy chạy các truy vấn suy luận đối với dữ liệu xác thực của chúng ta bằng cách sử dụng mã SQL sau đối với dữ liệu xác thực:

select cast(sum(t1.match)as decimal(7,2)) as predicted_matches
,cast(sum(t1.nonmatch) as decimal(7,2)) as predicted_non_matches
,cast(sum(t1.match + t1.nonmatch) as decimal(7,2)) as total_predictions
,predicted_matches / total_predictions as pct_accuracy
from (select customerid, country, stockcode, description, invoicedate, sales_amt, nbr_months_active, predict_customer_activity(customerid, country, stockcode, description, invoicedate, sales_amt) as predicted_months_active, case when nbr_months_active = predicted_months_active then 1 else 0 end as match, case when nbr_months_active <> predicted_months_active then 1 else 0 end as nonmatch from ecommerce_sales_validation )t1;

Chúng tôi có thể thấy rằng chúng tôi đã dự đoán đúng 99.74% trên tập dữ liệu của mình, phù hợp với điểm số chính xác của chúng tôi từ mô hình hiển thị.

dự đoán_matches dự đoán_non_matches tổng_dự đoán pct_độ chính xác
43489.00 132.00 43621.00 0.99697393

Bây giờ, hãy chạy một truy vấn để xem khách hàng nào đủ điều kiện tham gia chương trình khách hàng thân thiết của chúng tôi bằng cách hoạt động trong ít nhất 7 tháng:

select customerid, predict_customer_activity(customerid, country, stockcode, description, invoicedate, sales_amt) as predicted_months_active from ecommerce_sales_prediction where predicted_months_active >=7 group by 1,2 limit 10;

Bảng sau đây cho thấy kết quả đầu ra của chúng tôi.

ID khách hàng dự đoán_tháng_hoạt động
16895 8
18283 10
15044 11
16746 11
14702 11
16607 10
12901 10
15078 13
16393 10
15005 12

Xử lý sự cố

Mặc dù các Create Model trong Amazon Redshift tự động đảm nhận việc bắt đầu quy trình SageMaker Autopilot để xây dựng, đào tạo và điều chỉnh mô hình ML tốt nhất cũng như triển khai mô hình đó trong Amazon Redshift, bạn có thể xem các bước trung gian được thực hiện trong quy trình này, điều này cũng có thể giúp bạn khắc phục sự cố Nếu có điều gì sai. Bạn cũng có thể truy xuất Tên công việc AutoML từ đầu ra của lệnh show model.

Trong khi tạo mô hình, bạn cần đề cập đến một Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) tên bộ chứa làm giá trị cho tham số, s3_bucket. Bạn sử dụng bộ chứa này để chia sẻ dữ liệu đào tạo và thành phần lạ giữa Amazon Redshift và SageMaker. Amazon Redshift tạo một thư mục con trong nhóm này trước khi hủy tải dữ liệu đào tạo. Khi đào tạo hoàn tất, nó sẽ xóa thư mục con và nội dung của nó trừ khi bạn đặt tham số s3_garbage_collect đến off, mà bạn có thể sử dụng cho mục đích khắc phục sự cố. Để biết thêm thông tin, xem TẠO MÔ HÌNH.

Để biết thông tin về cách sử dụng bảng điều khiển SageMaker và Xưởng sản xuất Amazon SageMaker, Xem Xây dựng mô hình hồi quy với Amazon Redshift ML.

Kết luận

Amazon Redshift ML cung cấp nền tảng phù hợp để người dùng cơ sở dữ liệu tạo, đào tạo và điều chỉnh các mô hình bằng giao diện SQL. Trong bài đăng này, chúng tôi đã hướng dẫn bạn cách tạo mô hình phân loại nhiều lớp. Chúng tôi hy vọng bạn có thể tận dụng Amazon Redshift ML để giúp thu được những thông tin chi tiết có giá trị.

Để biết thêm thông tin về cách xây dựng các mô hình khác nhau với Amazon Redshift ML, hãy xem Xây dựng mô hình hồi quy với Amazon Redshift ML  và đọc Amazon RedShift tài liệu ML.

Lời cảm ơn

Theo Kho lưu trữ máy học của UCI, dữ liệu này được cung cấp bởi Tiến sĩ Daqing Chen, Giám đốc: Nhóm phân tích công khai. chend '@' lsbu.ac.uk, Trường Kỹ thuật, Đại học London South Bank, London SE1 0AA, Vương quốc Anh.

Dua, D. và Graff, C. (2019). Kho lưu trữ học máy của UCI [http://archive.ics.uci.edu/ml]. Irvine, CA: Đại học California, Trường Thông tin và Khoa học Máy tính.


Về các tác giả

Phil Bates là Kiến trúc sư giải pháp chuyên gia phân tích cao cấp tại AWS với hơn 25 năm kinh nghiệm về kho dữ liệu.

gấu trúc ra mắt, giám đốc sản phẩm chính tại AWS, là công ty hàng đầu trong ngành về phân tích, nền tảng ứng dụng và công nghệ cơ sở dữ liệu và có hơn 25 năm kinh nghiệm trong thế giới CNTT.

Nikos Koulouris là Kỹ sư phát triển phần mềm tại AWS. Anh ấy đã nhận bằng Tiến sĩ tại Đại học California, San Diego và anh ấy đã làm việc trong lĩnh vực cơ sở dữ liệu và phân tích.

Enrico Sartorello là Kỹ sư phát triển phần mềm của Sr. tại Amazon Web Services. Anh ấy giúp khách hàng áp dụng các giải pháp máy học phù hợp với nhu cầu của họ bằng cách phát triển các chức năng mới cho Amazon SageMaker. Những lúc rảnh rỗi, anh say mê theo dõi đội bóng của mình và thích trau dồi kỹ năng nấu nướng.

Coinsmart. Đặt cạnh Bitcoin-Börse ở Europa
Nguồn: https://aws.amazon.com/blogs/machine-learning/build-multi-class-classification-models-with-amazon-redshift-ml/

tại chỗ_img

Tin tức mới nhất

tại chỗ_img