Tất cả khách hàng đều muốn theo dõi chỉ số quan trọng nhất đối với doanh nghiệp của họ. Ví dụ, một ứng dụng mua sắm trực tuyến có thể muốn theo dõi hai chỉ số: tỷ lệ nhấp chuột (CTR) cho các gợi ý và tổng số lượt mua hàng. Một nền tảng video theo yêu cầu có các băng chuyền có các người đề xuất khác nhau cung cấp các gợi ý có thể muốn so sánh CTR hoặc thời lượng xem. Bạn cũng có thể theo dõi tổng doanh thu hoặc lợi nhuận của một loại sự kiện cụ thể, ví dụ như khi người dùng mua một sản phẩm. Khả năng mới này cho phép bạn đo lường tác động của các chiến dịch và người đề xuất Amazon Personalize, cũng như các tương tác được tạo ra bởi các giải pháp của bên thứ ba.
Trong bài viết này, chúng tôi sẽ hướng dẫn cách theo dõi các chỉ số của bạn và đánh giá tác động của các gợi ý Cá nhân của bạn trong một trường hợp sử dụng thương mại điện tử.
Tổng quan về Giải pháp
Trước đây, để hiểu tác động của các gợi ý cá nhân, bạn phải tự thủ công triển khai các luồng công việc để thu thập dữ liệu về các chỉ số kinh doanh, sau đó trình bày chúng dưới dạng biểu đồ ý nghĩa để so sánh. Bây giờ, Amazon Personalize đã loại bỏ sự cồng kềnh vận hành này bằng cách cho phép bạn xác định và theo dõi các chỉ số mà bạn muốn theo dõi. Amazon Personalize có thể gửi dữ liệu hiệu suất đến Amazon CloudWatch để trực quan hóa và theo dõi hoặc tùy chọn gửi vào một bucket Amazon Simple Storage Service (Amazon S3) mà bạn có thể truy cập các chỉ số và tích hợp chúng vào các công cụ thông tin kinh doanh khác. Điều này cho phép bạn đo lường một cách hiệu quả cách sự kiện và các gợi ý ảnh hưởng đến các mục tiêu kinh doanh và quan sát kết quả của bất kỳ sự kiện nào bạn muốn theo dõi.
Để đo lường tác động của các gợi ý, bạn xác định một “sự gán kết chỉ số”, đó là một danh sách các loại sự kiện mà bạn muốn báo cáo bằng cách sử dụng cả bảng điều khiển Amazon Personalize hoặc APIs. Đối với mỗi loại sự kiện, bạn chỉ cần xác định chỉ số và hàm mà bạn muốn tính toán (tổng hoặc số lượt mẫu), và Amazon Personalize thực hiện tính toán, gửi các báo cáo được tạo ra đến CloudWatch hoặc Amazon S3.
Biểu đồ dưới đây thể hiện cách bạn có thể theo dõi các chỉ số từ một người đề xuất hoặc chiến dịch duy nhất:
Hình 1. Tổng quan về tính năng: Bộ dữ liệu tương tác được sử dụng để huấn luyện một hệ thống giới thiệu hoặc chiến dịch. Sau đó, khi người dùng tương tác với các mục được đề xuất, những tương tác này được gửi đến Amazon Personalize và được ghi nhận cho hệ thống giới thiệu hoặc chiến dịch tương ứng. Tiếp theo, các số liệu này được xuất khẩu đến Amazon S3 và CloudWatch để bạn có thể theo dõi và so sánh các số liệu của mỗi hệ thống giới thiệu hoặc chiến dịch.
Sự ghi nhận số liệu cũng cho phép bạn cung cấp một eventAttributionSource, cho mỗi tương tác, để xác định tình huống người dùng đang trải qua khi tương tác với một mục. Sơ đồ sau cho thấy bạn có thể theo dõi số liệu từ hai hệ thống giới thiệu khác nhau bằng cách sử dụng sự ghi nhận số liệu của Amazon Personalize.
Hình 2. Đo lường tác động kinh doanh của các đề xuất trong hai kịch bản: Bộ dữ liệu tương tác được sử dụng để huấn luyện hai bộ tiếp thị hoặc đề xuất, trong trường hợp này được đánh dấu là “Blue” và “Orange”. Sau đó, khi người dùng tương tác với các mục được đề xuất, các tương tác này được gửi đến Amazon Personalize và được gán cho bộ đề xuất, chiến dịch hoặc kịch bản tương ứng mà người dùng đã tiếp xúc khi tương tác với mục đó. Tiếp theo, các số liệu này được xuất khẩu vào Amazon S3 và CloudWatch để bạn có thể theo dõi và so sánh số liệu của mỗi bộ đề xuất hoặc chiến dịch.
Trong ví dụ này, chúng ta đi qua quá trình xác định các số liệu gắn kết cho dữ liệu tương tác của bạn trong Amazon Personalize. Trước tiên, bạn nhập dữ liệu của mình và tạo hai số liệu gắn kết để đo lường tác động kinh doanh của các đề xuất. Sau đó, bạn tạo hai bộ đề xuất bán lẻ – quy trình này giống nhau nếu bạn đang sử dụng giải pháp đề xuất tùy chỉnh – và gửi các sự kiện để theo dõi bằng cách sử dụng các số liệu. Để bắt đầu, bạn chỉ cần có bộ dữ liệu tương tác. Tuy nhiên, vì một trong những số liệu chúng tôi theo dõi trong ví dụ này là lợi nhuận biên, chúng tôi cũng sẽ chỉ cho bạn cách nhập bộ dữ liệu mục. Một đoạn mã mẫu cho trường hợp sử dụng này có sẵn trên GitHub.
Điều kiện tiên quyết
Để tạo các gợi ý bằng Amazon Personalize, bạn có thể sử dụng AWS Console hoặc các APIs hỗ trợ, ví dụ như AWS Command Line Interface hoặc AWS SDK for Python.
Để tính toán và báo cáo tác động của các khuyến nghị, trước tiên bạn cần thiết lập một số tài nguyên AWS.
Bạn phải tạo một role IAM (Identity and Access Management) trên AWS mà Amazon Personalize sẽ giả định với một tài liệu chính sách giả định vai trò liên quan. Bạn cũng phải gắn các chính sách để cho phép Amazon Personalize truy cập dữ liệu từ một bucket S3 và gửi dữ liệu đến CloudWatch. Để biết thêm thông tin, xem Truy cập Amazon Personalize vào bucket Amazon S3 của bạn và Truy cập Amazon Personalize vào CloudWatch.
Sau đó, bạn phải tạo một số tài nguyên Amazon Personalize. Tạo nhóm dataset của bạn, tải dữ liệu và đào tạo bộ khuyến nghị. Để biết hướng dẫn đầy đủ, xem Bắt đầu.
- Tạo một nhóm dataset. Bạn có thể sử dụng các thuộc tính đo lường trong các nhóm dataset miền và nhóm dataset tùy chỉnh.
- Tạo một dataset Interactions schema sau đây:
{
“type”: “record”,
“name”: “Interactions”,
“namespace”: “com.amazonaws.personalize.schema”,
“fields”: [
{
“name”: “USER_ID”,
“type”: “string”
},
{
“name”: “ITEM_ID”,
“type”: “string”
},
{
“name”: “TIMESTAMP”,
“type”: “long”
},
{
“name”: “EVENT_TYPE”,
“type”: “string”
}
],
“version”: “1.0”
} - Tạo một dataset Items schema sau đây:
{
“type”: “record”,
“name”: “Items”,
“namespace”: “com.amazonaws.personalize.schema”,
“fields”: [
{
“name”: “ITEM_ID”,
“type”: “string”
},
{
“name”: “PRICE”,
“type”: “float”
},
{
“name”: “CATEGORY_L1”,
“type”: [“string”],
“categorical”: true
},
{
“name”: “CATEGORY_L2”,
“type”: [“string”],
“categorical”: true
},
{
“name”: “MARGIN”,
“type”: “double”
}
],
“version”: “1.0”
}
Trước khi nhập dữ liệu vào Amazon Personalize, chúng ta sẽ xác định các thuộc tính đo lường của chúng.
Tạo Chỉ số Gán Kết
Để bắt đầu tạo các chỉ số, bạn chỉ định danh sách các sự kiện mà bạn muốn thu thập chỉ số. Đối với mỗi loại sự kiện được chọn, bạn xác định hàm mà Amazon Personalize sẽ áp dụng khi nó thu thập dữ liệu – hai hàm có sẵn là SUM(DatasetType.COLUMN_NAME) và SAMPLECOUNT(), trong đó DatasetType có thể là tập dữ liệu INTERACTIONS hoặc ITEMS. Amazon Personalize có thể gửi dữ liệu chỉ số đến CloudWatch để trực quan hóa và theo dõi hoặc xuất nó vào một bucket S3.
Sau khi bạn tạo một chỉ số gán kết và ghi lại sự kiện hoặc nhập dữ liệu lô tăng dần, bạn sẽ phải trả một số chi phí hàng tháng cho mỗi chỉ số CloudWatch. Để biết thông tin về chi phí của CloudWatch, xem trang chi phí của CloudWatch. Để ngừng gửi chỉ số đến CloudWatch, hãy xóa chỉ số gán kết.
Trong ví dụ này, chúng tôi sẽ tạo hai chỉ số gán kết:
- Đếm tổng số sự kiện “Xem” bằng cách sử dụng SAMPLECOUNT(). Hàm này chỉ yêu cầu tập dữ liệu INTERACTIONS.
- Tính tổng lợi nhuận tổng cộng khi xảy ra sự kiện mua bằng cách sử dụng SUM(DatasetType.COLUMN_NAME). Trong trường hợp này, DatasetType là ITEMS và cột là MARGIN vì chúng tôi đang theo dõi lợi nhuận cho mục khi được mua. Sự kiện Mua được ghi lại trong tập dữ liệu INTERACTIONS. Lưu ý rằng, để lợi nhuận được kích hoạt bởi sự kiện mua, bạn sẽ phải gửi một sự kiện mua cho mỗi đơn vị cá nhân của từng mục được mua, ngay cả khi chúng trùng lặp – ví dụ: hai áo cùng loại. Nếu người dùng của bạn có thể mua nhiều mục của mỗi mặt hàng khi thanh toán, và bạn chỉ gửi một sự kiện mua duy nhất cho tất cả chúng, thì chỉ số khác sẽ thích hợp hơn.
Hàm để tính toán số lượng mẫu chỉ có sẵn cho tập dữ liệu INTERACTIONS. Tuy nhiên, tổng lợi nhuận yêu cầu bạn phải có tập dữ liệu ITEMS và cấu hình tính toán. Đối với mỗi chỉ số, chúng tôi chỉ định eventType mà chúng tôi sẽ theo dõi, hàm được sử dụng và đặt tên chỉ số sẽ xác định các chỉ số sau khi chúng ta xuất chúng. Trong ví dụ này, chúng tôi đặt tên cho chúng là “countViews” và “sumMargin”.
Mẫu mã được viết bằng Python.
import boto3
personalize = boto3.client(‘personalize’)
metrics_list = [{
“eventType”: “View”,
“expression”: “SAMPLECOUNT()”,
“metricName”: “countViews”
},
{
“eventType”: “Purchase”,
“expression”: “SUM(ITEMS.MARGIN)”,
“metricName”: “sumMargin”
}]
Chúng tôi cũng xác định nơi dữ liệu sẽ được xuất. Trong trường hợp này là vào một bucket S3.
output_config = {
“roleArn”: role_arn,
“s3DataDestination”: {
“path”: path_to_bucket
}
}
Sau đó, chúng tôi tạo chỉ số gán kết.
response = personalize.create_metric_attribution(
name = metric_attribution_name,
datasetGroupArn = dataset_group_arn,
metricsOutputConfig = output_config,
metrics = metrics_list
)
metric_attribution_arn = response[‘metricAttributionArn’]
Bạn phải đặt tên cho chỉ số gán kết, cũng như chỉ ra nhóm tập dữ liệu mà các chỉ số sẽ được gán kết bằng cách sử dụng datasetGroupArn, và đối tượng metricsOutputConfig và metrics mà chúng ta đã tạo trước đó.
Bây giờ khi chỉ số gán kết đã được tạo, bạn có thể tiếp tục với công việc nhập tập dữ liệu mà sẽ nạp tập dữ liệu mục và tương tác từ bucket S3 của chúng tôi vào các nhóm tập dữ liệu mà chúng tôi đã cấu hình trước đó.
Để biết thông tin về cách sửa đổi hoặc xóa một chỉ số gán kết hiện có, xem Quản lý chỉ số gán kết.
Nhập Dữ liệu và Tạo Người Đề Xuất
Trước hết, nhập dữ liệu tương tác vào Amazon Personalize từ Amazon S3. Trong ví dụ này, chúng tôi sử dụng tệp dữ liệu sau đây. Chúng tôi đã tạo dữ liệu tổng hợp dựa trên mã trong dự án Retail Demo Store. Để tìm hiểu thêm về dữ liệu tổng hợp và các ứng dụng tiềm năng, hãy tham khảo kho lưu trữ GitHub.
Tiếp theo, tạo một người đề xuất. Trong ví dụ này, chúng tôi tạo hai người đề xuất:
- Người đề xuất “Gợi ý cho bạn”. Loại người đề xuất này tạo ra các gợi ý cá nhân cho các mục dựa trên một người dùng mà bạn chỉ định.
- Khách hàng đã xem X cũng đã xem. Loại người đề xuất này tạo ra các gợi ý cho các mục mà khách hàng cũng đã xem dựa trên một mục mà bạn chỉ định.
Gửi sự kiện đến Amazon Personalize và gán chúng cho người đề xuất
Để gửi các tương tác đến Amazon Personalize, bạn phải tạo một trình theo dõi sự kiện.
Đối với mỗi sự kiện, Amazon Personalize có thể ghi lại eventAttributionSource. Nó có thể được suy ra từ recommendationId hoặc bạn có thể chỉ định nó một cách rõ ràng và xác định nó trong các báo cáo trong cột EVENT_ATTRIBUTION_SOURCE. Một eventAttributionSource có thể là một người đề xuất, tình huống hoặc một phần của trang do bên thứ ba quản lý nơi các tương tác xảy ra.
- Nếu bạn cung cấp một recommendationId, thì Amazon Personalize tự động suy ra nguồn chiến dịch hoặc người đề xuất.
- Nếu bạn cung cấp cả hai thuộc tính, thì Amazon Personalize chỉ sử dụng nguồn.
- Nếu bạn không cung cấp nguồn hoặc recommendationId, thì Amazon Personalize đánh dấu nguồn là SOURCE_NAME_UNDEFINED trong các báo cáo.
Mã sau đây cho thấy cách cung cấp eventAttributionSource cho một sự kiện trong một hoạt động PutEvents.
response = personalize_events.put_events(
trackingId=’eventTrackerId’,
userId=’userId’,
sessionId=’sessionId123′,
eventList=[{
‘eventId’: event_id,
‘eventType’: event_type,
‘itemId’: item_id,
‘metricAttribution’: {“eventAttributionSource”: attribution_source},
‘sentAt’: timestamp_in_unix_format
}]
)
print(response)
Xem các chỉ số của bạn
Amazon Personalize gửi các chỉ số đến Amazon CloudWatch hoặc Amazon S3:
Đối với tất cả dữ liệu hàng loạt, nếu bạn cung cấp một bucket Amazon S3 khi bạn tạo chỉ số của bạn, bạn có thể chọn công bố báo cáo chỉ số vào bucket Amazon S3 của bạn. Bạn cần thực hiện điều này mỗi khi bạn tạo một công việc nhập tập dữ liệu cho dữ liệu tương tác.
import boto3
personalize = boto3.client(‘personalize’)
response = personalize.create_dataset_import_job(
jobName = ‘YourImportJob’,
datasetArn = ‘dataset_arn’,
dataSource = {‘dataLocation’:’s3://bucket/file.csv’},
roleArn = ‘role_arn’,
importMode = ‘INCREMENTAL’,
publishAttributionMetricsToS3 = True
)
print(response)
Khi nhập dữ liệu của bạn, hãy chọn chế độ nhập đúng INCREMENTAL hoặc FULL và hướng dẫn Amazon Personalize công bố các chỉ số bằng cách thiết lập publishAttributionMetricsToS3 thành True. Để biết thêm thông tin về cách công bố báo cáo chỉ số vào Amazon S3, xem Công bố chỉ số vào Amazon S3.
Đối với dữ liệu PutEvents được gửi qua Event Tracker và dữ liệu hàng loạt nhập tăng dần, Amazon Personalize tự động gửi chỉ số đến CloudWatch. Bạn có thể xem dữ liệu trong 2 tuần trước trên Amazon CloudWatch – dữ liệu cũ hơn sẽ bị bỏ qua.
Bạn có thể vẽ biểu đồ chỉ số trực tiếp trong bảng điều khiển CloudWatch bằng cách xác định tên mà bạn đã đặt cho chỉ số khi bạn tạo chỉ số như là thuật ngữ tìm kiếm. Để biết thêm thông tin về cách bạn có thể xem các chỉ số này trong CloudWatch, xem Xem chỉ số trong CloudWatch.
Hình 3: Một ví dụ về việc so sánh hai tỷ lệ bấm vào (CTR) từ hai người đề xuất được xem trong Bảng điều khiển CloudWatch.
Nhập và công bố các chỉ số vào Amazon S3
Khi bạn tải dữ liệu của mình lên Amazon Personalize thông qua một công việc nhập tập dữ liệu và bạn đã cung cấp một đường dẫn đến bucket Amazon S3 của bạn trong chỉ số của bạn, bạn có thể xem các chỉ số của bạn trong Amazon S3 khi công việc hoàn thành.
Mỗi lần bạn công bố chỉ số, Amazon Personalize tạo một tệp mới trong bucket Amazon S3 của bạn. Tên tệp chỉ định phương pháp nhập và ngày. Trường EVENT_ATTRIBUTION_SOURCE chỉ định nguồn sự kiện, tức là dưới tình huống nào tương tác diễn ra. Amazon Personalize cho phép bạn chỉ định EVENT_ATTRIBUTION_SOURCE một cách rõ ràng bằng cách sử dụng trường này, có thể là một người đề xuất từ bên thứ ba. Để biết thêm thông tin, xem Công bố chỉ số vào Amazon S3.
Tóm lại
Thêm các chỉ số gán kết cho phép bạn theo dõi tác động của các gợi ý đối với các chỉ số kinh doanh. Bạn tạo các chỉ số này bằng cách thêm một chỉ số gán kết vào nhóm tập dữ liệu của bạn và chọn các sự kiện mà bạn muốn theo dõi, cũng như hàm để đếm các sự kiện hoặc tổng hợp một trường tập dữ liệu. Sau đó, bạn có thể xem các chỉ số mà bạn quan tâm trong CloudWatch hoặc trong tệp được xuất ra trong Amazon S3.
Để biết thêm thông tin về Amazon Personalize, xem Amazon Personalize là gì?
Xem bài viết gốc: https://aws.amazon.com/vi/blogs/machine-learning/measure-the-business-impact-of-amazon-personalize-recommendations/