Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Deteksi penipuan dengan notebook contoh Feature Store
penting
IAMKebijakan khusus yang memungkinkan Amazon SageMaker Studio atau Amazon SageMaker Studio Classic membuat SageMaker sumber daya Amazon juga harus memberikan izin untuk menambahkan tag ke sumber daya tersebut. Izin untuk menambahkan tag ke sumber daya diperlukan karena Studio dan Studio Classic secara otomatis menandai sumber daya apa pun yang mereka buat. Jika IAM kebijakan mengizinkan Studio dan Studio Classic membuat sumber daya tetapi tidak mengizinkan penandaan, kesalahan "AccessDenied" dapat terjadi saat mencoba membuat sumber daya. Untuk informasi selengkapnya, lihat Berikan izin untuk menandai sumber daya SageMaker.
AWS Kebijakan Terkelola untuk Amazon SageMakeryang memberikan izin untuk membuat SageMaker sumber daya sudah menyertakan izin untuk menambahkan tag saat membuat sumber daya tersebut.
Kode contoh pada halaman ini mengacu pada contoh buku catatan: Deteksi Penipuan dengan Amazon SageMaker Feature Store
Gunakan yang berikut ini untuk mengkloning aws/ amazon-sagemaker-examples
-
Untuk Studio Klasik
Peluncuran pertama Studio Classic. Anda dapat membuka Studio Classic jika Studio atau Studio Classic diaktifkan sebagai pengalaman default Anda. Untuk membuka Studio Classic, lihatLuncurkan Studio Classic Menggunakan SageMaker Konsol Amazon.
Kloning aws/ amazon-sagemaker-examples
GitHub repositori ke Studio Classic dengan mengikuti langkah-langkah di. Mengkloning Repositori Git di Studio Classic SageMaker -
Untuk instans SageMaker notebook Amazon
Pertama luncurkan contoh SageMaker notebook dengan mengikuti instruksi diAkses Instans Notebook.
Periksa apakah contoh sudah ada di buku catatan Anda dengan mengikuti instruksi diAkses contoh notebook. Jika tidak, ikuti instruksi diTambahkan repositori Git ke akun Amazon Anda SageMaker.
Sekarang setelah Anda memiliki SageMaker contoh notebook, navigasikan ke amazon-sagemaker-examples/sagemaker-featurestore
direktori dan buka contoh notebook Deteksi Penipuan dengan Amazon SageMaker Feature Store
Langkah 1: Siapkan sesi Toko Fitur Anda
Untuk mulai menggunakan Feature Store, buat SageMaker sesi, sesi Boto3, dan sesi Feature Store. Selain itu, siapkan bucket Amazon S3 yang ingin Anda gunakan untuk fitur Anda. Ini adalah toko offline Anda. Kode berikut menggunakan bucket SageMaker default dan menambahkan awalan kustom ke dalamnya.
catatan
Peran yang Anda gunakan untuk menjalankan buku catatan harus memiliki kebijakan terkelola berikut yang dilampirkan padanya: AmazonSageMakerFullAccess
danAmazonSageMakerFeatureStoreAccess
. Untuk informasi tentang menambahkan kebijakan ke IAM peran Anda, lihatMenambahkan kebijakan ke IAM peran Anda.
import boto3 import sagemaker from sagemaker.session import Session sagemaker_session = sagemaker.Session() region = sagemaker_session.boto_region_name boto_session = boto3.Session(region_name=region) role = sagemaker.get_execution_role() default_bucket = sagemaker_session.default_bucket() prefix = 'sagemaker-featurestore' offline_feature_store_bucket = 's3://{}/{}'.format(default_bucket, prefix) sagemaker_client = boto_session.client(service_name='sagemaker', region_name=region) featurestore_runtime = boto_session.client(service_name='sagemaker-featurestore-runtime', region_name=region) feature_store_session = Session( boto_session=boto_session, sagemaker_client=sagemaker_client, sagemaker_featurestore_runtime_client=featurestore_runtime )
Langkah 2: Muat dataset dan partisi data ke dalam grup fitur
Muat data Anda ke dalam bingkai data untuk setiap fitur Anda. Anda menggunakan bingkai data ini setelah mengatur grup fitur. Dalam contoh deteksi penipuan, Anda dapat melihat langkah-langkah ini dalam kode berikut.
import numpy as np import pandas as pd import matplotlib.pyplot as plt import io s3_client = boto3.client(service_name='s3', region_name=region) fraud_detection_bucket_name = 'sagemaker-featurestore-fraud-detection' identity_file_key = 'sampled_identity.csv' transaction_file_key = 'sampled_transactions.csv' identity_data_object = s3_client.get_object(Bucket=fraud_detection_bucket_name, Key=identity_file_key) transaction_data_object = s3_client.get_object(Bucket=fraud_detection_bucket_name, Key=transaction_file_key) identity_data = pd.read_csv(io.BytesIO(identity_data_object['Body'].read())) transaction_data = pd.read_csv(io.BytesIO(transaction_data_object['Body'].read())) identity_data = identity_data.round(5) transaction_data = transaction_data.round(5) identity_data = identity_data.fillna(0) transaction_data = transaction_data.fillna(0) # Feature transformations for this dataset are applied before ingestion into FeatureStore. # One hot encode card4, card6 encoded_card_bank = pd.get_dummies(transaction_data['card4'], prefix = 'card_bank') encoded_card_type = pd.get_dummies(transaction_data['card6'], prefix = 'card_type') transformed_transaction_data = pd.concat([transaction_data, encoded_card_type, encoded_card_bank], axis=1) transformed_transaction_data = transformed_transaction_data.rename(columns={"card_bank_american express": "card_bank_american_express"})
Langkah 3: Siapkan grup fitur
Saat menyiapkan grup fitur, Anda perlu menyesuaikan nama fitur dengan nama unik dan mengatur setiap grup fitur dengan FeatureGroup
kelas.
from sagemaker.feature_store.feature_group import FeatureGroup feature_group_name = "some string for a name" feature_group = FeatureGroup(name=feature_group_name, sagemaker_session=feature_store_session)
Misalnya, dalam contoh deteksi penipuan, dua grup fitur adalah identity
dantransaction
. Dalam kode berikut, Anda dapat melihat bagaimana nama disesuaikan dengan stempel waktu, dan kemudian setiap grup diatur dengan meneruskan nama dan sesi.
import time from time import gmtime, strftime, sleep from sagemaker.feature_store.feature_group import FeatureGroup identity_feature_group_name = 'identity-feature-group-' + strftime('%d-%H-%M-%S', gmtime()) transaction_feature_group_name = 'transaction-feature-group-' + strftime('%d-%H-%M-%S', gmtime()) identity_feature_group = FeatureGroup(name=identity_feature_group_name, sagemaker_session=feature_store_session) transaction_feature_group = FeatureGroup(name=transaction_feature_group_name, sagemaker_session=feature_store_session)
Langkah 4: Siapkan fitur pengenal catatan dan waktu acara
Pada langkah ini, Anda menentukan nama pengenal catatan dan nama fitur waktu acara. Nama ini dipetakan ke kolom fitur yang sesuai dalam data Anda. Misalnya, dalam contoh deteksi penipuan, kolom yang diminati adalahTransactionID
. EventTime
dapat ditambahkan ke data Anda ketika tidak ada stempel waktu yang tersedia. Dalam kode berikut, Anda dapat melihat bagaimana variabel-variabel ini diatur, dan kemudian EventTime
ditambahkan ke data kedua fitur ini.
record_identifier_name = "TransactionID" event_time_feature_name = "EventTime" current_time_sec = int(round(time.time())) identity_data[event_time_feature_name] = pd.Series([current_time_sec]*len(identity_data), dtype="float64") transformed_transaction_data[event_time_feature_name] = pd.Series([current_time_sec]*len(transaction_data), dtype="float64")
Langkah 5: Muat definisi fitur
Anda sekarang dapat memuat definisi fitur dengan melewatkan bingkai data yang berisi data fitur. Dalam kode berikut untuk contoh deteksi penipuan, fitur identitas dan fitur transaksi masing-masing dimuat dengan menggunakanload_feature_definitions
, dan fungsi ini secara otomatis mendeteksi tipe data dari setiap kolom data. Untuk pengembang yang menggunakan skema daripada deteksi otomatis, lihat contoh Ekspor Grup Fitur dari Data Wrangler untuk kode yang menunjukkan cara memuat skema, memetakannya, dan menambahkannya sebagai kode FeatureDefinition
yang dapat Anda gunakan untuk membuat skema. FeatureGroup
Contoh ini juga mencakup AWS SDK for Python (Boto3) implementasi, yang dapat Anda gunakan alih-alih SageMaker PythonSDK.
identity_feature_group.load_feature_definitions(data_frame=identity_data); # output is suppressed transaction_feature_group.load_feature_definitions(data_frame=transformed_transaction_data); # output is suppressed
Langkah 6: Buat grup fitur
Pada langkah ini, Anda menggunakan create
fungsi untuk membuat grup fitur. Kode berikut menunjukkan semua parameter yang tersedia. Toko online tidak dibuat secara default, jadi Anda harus mengatur ini True
seolah-olah Anda ingin mengaktifkannya. s3_uri
Ini adalah lokasi bucket S3 dari toko offline Anda.
# create a FeatureGroup feature_group.create( description = "Some info about the feature group", feature_group_name = feature_group_name, record_identifier_name = record_identifier_name, event_time_feature_name = event_time_feature_name, feature_definitions = feature_definitions, role_arn = role, s3_uri = offline_feature_store_bucket, enable_online_store = True, online_store_kms_key_id = None, offline_store_kms_key_id = None, disable_glue_table_creation = False, data_catalog_config = None, tags = ["tag1","tag2"])
Kode berikut dari contoh deteksi penipuan menunjukkan create
panggilan minimal untuk masing-masing dari dua grup fitur yang sedang dibuat.
identity_feature_group.create( s3_uri=offline_feature_store_bucket, record_identifier_name=record_identifier_name, event_time_feature_name=event_time_feature_name, role_arn=role, enable_online_store=True ) transaction_feature_group.create( s3_uri=offline_feature_store_bucket, record_identifier_name=record_identifier_name, event_time_feature_name=event_time_feature_name, role_arn=role, enable_online_store=True )
Saat Anda membuat grup fitur, dibutuhkan waktu untuk memuat data, dan Anda harus menunggu hingga grup fitur dibuat sebelum Anda dapat menggunakannya. Anda dapat memeriksa status menggunakan metode berikut.
status = feature_group.describe().get("FeatureGroupStatus")
Saat grup fitur sedang dibuat, Anda menerima Creating
sebagai tanggapan. Ketika langkah ini telah selesai dengan sukses, jawabannya adalahCreated
. Status lain yang mungkin adalahCreateFailed
,Deleting
, atauDeleteFailed
.
Langkah 7: Bekerja dengan grup fitur
Setelah menyiapkan grup fitur, Anda dapat melakukan salah satu tugas berikut:
Topik
Jelaskan grup fitur
Anda dapat mengambil informasi tentang grup fitur Anda dengan describe
fungsi tersebut.
feature_group.describe()
Daftar grup fitur
Anda dapat mencantumkan semua grup fitur Anda dengan list_feature_groups
fungsi tersebut.
sagemaker_client.list_feature_groups()
Menempatkan catatan dalam grup fitur
Anda dapat menggunakan ingest
fungsi ini untuk memuat data fitur Anda. Anda meneruskan bingkai data data fitur, mengatur jumlah pekerja, dan memilih untuk menunggu kembali atau tidak. Contoh berikut menunjukkan menggunakan ingest
fungsi.
feature_group.ingest( data_frame=feature_data, max_workers=3, wait=True )
Untuk setiap grup fitur yang Anda miliki, jalankan ingest
fungsi pada data fitur yang ingin Anda muat.
Mendapatkan catatan dari grup fitur
Anda dapat menggunakan get_record
fungsi untuk mengambil data untuk fitur tertentu dengan pengenal catatannya. Contoh berikut menggunakan contoh identifier untuk mengambil catatan.
record_identifier_value = str(2990130) featurestore_runtime.get_record(FeatureGroupName=transaction_feature_group_name, RecordIdentifierValueAsString=record_identifier_value)
Contoh respon dari contoh deteksi penipuan:
... 'Record': [{'FeatureName': 'TransactionID', 'ValueAsString': '2990130'}, {'FeatureName': 'isFraud', 'ValueAsString': '0'}, {'FeatureName': 'TransactionDT', 'ValueAsString': '152647'}, {'FeatureName': 'TransactionAmt', 'ValueAsString': '75.0'}, {'FeatureName': 'ProductCD', 'ValueAsString': 'H'}, {'FeatureName': 'card1', 'ValueAsString': '4577'}, ...
Hasilkan perintah sarang DDL
FeatureStore
Kelas SageMaker Python SDK juga menyediakan fungsionalitas untuk menghasilkan perintah DDL Hive. Skema tabel dihasilkan berdasarkan definisi fitur. Kolom dinamai setelah nama fitur dan tipe data disimpulkan berdasarkan jenis fitur.
print(feature_group.as_hive_ddl())
Contoh output:
CREATE EXTERNAL TABLE IF NOT EXISTS sagemaker_featurestore.identity-feature-group-27-19-33-00 ( TransactionID INT id_01 FLOAT id_02 FLOAT id_03 FLOAT id_04 FLOAT ...
Membangun dataset pelatihan
Feature Store secara otomatis membuat katalog AWS Glue data saat Anda membuat grup fitur dan Anda dapat menonaktifkannya jika diinginkan. Berikut ini menjelaskan cara membuat kumpulan data pelatihan tunggal dengan nilai fitur dari grup fitur identitas dan transaksi yang dibuat sebelumnya dalam topik ini. Selain itu, berikut ini menjelaskan cara menjalankan kueri Amazon Athena untuk menggabungkan data yang disimpan di toko offline dari grup fitur identitas dan transaksi.
Untuk memulai, buat kueri Athena menggunakan athena_query()
grup fitur identitas dan transaksi. `table_name` adalah AWS Glue tabel yang dibuat secara otomatis oleh Feature Store.
identity_query = identity_feature_group.athena_query() transaction_query = transaction_feature_group.athena_query() identity_table = identity_query.table_name transaction_table = transaction_query.table_name
Tulis dan jalankan kueri Athena
Anda menulis kueri menggunakan SQL grup fitur ini, lalu jalankan kueri dengan .run()
perintah dan tentukan lokasi bucket Amazon S3 agar kumpulan data disimpan di sana.
# Athena query query_string = 'SELECT * FROM "'+transaction_table+'" LEFT JOIN "'+identity_table+'" ON "'+transaction_table+'".transactionid = "'+identity_table+'".transactionid' # run Athena query. The output is loaded to a Pandas dataframe. dataset = pd.DataFrame() identity_query.run(query_string=query_string, output_location='s3://'+default_s3_bucket_name+'/query_results/') identity_query.wait() dataset = identity_query.as_dataframe()
Dari sini Anda dapat melatih model menggunakan kumpulan data ini dan kemudian melakukan inferensi.
Hapus grup fitur
Anda dapat menghapus grup fitur dengan delete
fungsi tersebut.
feature_group.delete()
Contoh kode berikut adalah dari contoh deteksi penipuan.
identity_feature_group.delete() transaction_feature_group.delete()
Untuk informasi selengkapnya, lihat Menghapus grup fitur API.