Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных

Многие приложения, предназначенные для обслуживания промышленного оборудования, мониторинга торговли, управления автопарком и оптимизации маршрутов, созданы с использованием API и драйверов Cassandra с открытым исходным кодом для обработки данных с высокой скоростью и малой задержкой. Самостоятельное управление таблицами Cassandra может занять много времени и средств. Amazon Keyspaces (для Apache Cassandra) позволяет настраивать, защищать и масштабировать таблицы Cassandra в облаке AWS без управления дополнительной инфраструктурой.

В этом посте мы познакомим вас с сервисами AWS, связанными с обучением моделей машинного обучения (ML) с использованием Amazon Keyspaces на высоком уровне, и предоставим пошаговые инструкции по загрузке данных из Amazon Keyspaces в Создатель мудреца Амазонки и обучение модели, которую можно использовать для конкретного варианта использования сегментации клиентов.

У AWS есть несколько сервисов, помогающих компаниям внедрять процессы машинного обучения в облаке.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Стек AWS ML состоит из трех уровней. В среднем слое находится SageMaker, который предоставляет разработчикам, специалистам по данным и инженерам машинного обучения возможность создавать, обучать и развертывать модели машинного обучения в любом масштабе. Он устраняет сложность каждого шага рабочего процесса машинного обучения, чтобы вам было проще развертывать варианты использования машинного обучения. Это включает в себя все, от профилактического обслуживания до компьютерного зрения для прогнозирования поведения клиентов. С помощью SageMaker клиенты достигают 10-кратного повышения производительности специалистов по данным.

Apache Cassandra — популярный выбор для случаев использования с большим количеством операций чтения с неструктурированными или полуструктурированными данными. Например, популярная компания по доставке еды оценивает время доставки, а розничный клиент может часто использовать информацию из каталога продуктов в базе данных Apache Cassandra. Ключевые пространства Amazon — это масштабируемая, высокодоступная и управляемая бессерверная служба базы данных, совместимая с Apache Cassandra. Вам не нужно выделять, исправлять или управлять серверами, а также устанавливать, обслуживать или использовать программное обеспечение. Таблицы могут масштабироваться вверх и вниз автоматически, и вы платите только за те ресурсы, которые используете. Amazon Keyspaces позволяет запускать рабочие нагрузки Cassandra на AWS, используя тот же код приложения Cassandra и инструменты разработчика, которые вы используете сегодня.

SageMaker предоставляет набор встроенные алгоритмы чтобы помочь специалистам по данным и специалистам по машинному обучению быстро приступить к обучению и развертыванию моделей машинного обучения. В этом посте мы покажем вам, как розничный клиент может использовать историю покупок клиентов в базе данных Keyspaces и ориентироваться на различные сегменты клиентов для маркетинговых кампаний.

K-средних алгоритм обучения без учителя. Он пытается найти в данных дискретные группы, в которых члены группы максимально похожи друг на друга и максимально отличаются от членов других групп. Вы определяете атрибуты, которые вы хотите, чтобы алгоритм использовал для определения сходства. SageMaker использует модифицированную версию алгоритм кластеризации k-средних в веб-масштабе. По сравнению с оригинальной версией алгоритма версия, используемая SageMaker, является более точной. Однако, как и исходный алгоритм, он масштабируется до массивных наборов данных и сокращает время обучения.

Обзор решения

В инструкциях предполагается, что вы будете использовать SageMaker Studio для запуска кода. Связанный код был опубликован на Образец AWS на GitHub. Следуя инструкциям в лаборатории, вы можете сделать следующее:

  • Установите необходимые зависимости.
  • Подключитесь к Amazon Keyspaces, создайте таблицу и получите образцы данных.
  • Создайте классификационную модель машинного обучения, используя данные в Amazon Keyspaces.
  • Изучите результаты модели.
  • Очистите вновь созданные ресурсы.

После завершения вы интегрируете SageMaker с Amazon Keyspaces для обучения моделей машинного обучения, как показано на следующем рисунке.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Теперь вы можете следить за пошаговые инструкции в этом посте, чтобы получить необработанные данные, хранящиеся в Amazon Keyspaces, с помощью SageMaker, и данные, полученные таким образом, для обработки ML.

Предпосылки

Сначала перейдите к SageMaker.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Далее, если вы используете SageMaker впервые, выберите Свяжитесь с нами!.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем выберите Настройка домена SageMaker.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем создайте новый профиль пользователя с именем – sagemakeruserИ выберите Создание новой роли в Роль исполнения по умолчанию подраздел.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Далее в появившемся окне выберите любой Сервис Amazon Simple Storage (Amazon S3) ведро и выберите Создать роль.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Эта роль будет использоваться в следующих шагах, чтобы позволить SageMaker получить доступ к таблице Keyspaces с использованием временных учетных данных из роли. Это избавляет от необходимости хранить имя пользователя и пароль в записной книжке.

Затем извлеките роль, связанную с sagemakeruser который был создан на предыдущем шаге из сводного раздела.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем перейдите к Консоль AWS и посмотри вверх AWS Управление идентификацией и доступом (IAM). В IAM перейдите к Ролям. В разделе «Роли» найдите роль исполнения, указанную на предыдущем шаге.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем выберите роль, указанную на предыдущем шаге, и нажмите «Добавить разрешения». В появившемся раскрывающемся списке выберите «Создать встроенную политику». SageMaker позволяет предоставить детальный уровень доступа, который ограничивает действия, которые может выполнять пользователь/приложение, в зависимости от бизнес-требований.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем выберите вкладку JSON и скопируйте политику из раздела Note на Github. страница. Эта политика позволяет блокноту SageMaker подключаться к Keyspaces и извлекать данные для дальнейшей обработки.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем снова выберите «Добавить разрешения» и в раскрывающемся списке выберите «Прикрепить политику».

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Найдите политику AmazonKeyspacesFullAccess, установите флажок рядом с соответствующим результатом и выберите Прикрепить политики.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Убедитесь, что раздел политик разрешений включает AmazonS3FullAccess, AmazonSageMakerFullAccess, AmazonKeyspacesFullAccess, а также недавно добавленная встроенная политика.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем перейдите в SageMaker Studio с помощью консоли AWS и выберите SageMaker Studio. Оказавшись там, выберите «Запустить приложение» и выберите «Студия».

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Пошаговое руководство по записной книжке

Предпочтительный способ подключения к Keyspaces из SageMaker Notebook — использование Процесс подписи AWS версии 4 (SigV4) основанный Временные учетные данные для аутентификации. В этом сценарии нам НЕ нужно создавать или хранить учетные данные Keyspaces, и мы можем использовать эти учетные данные для аутентификации с помощью подключаемого модуля SigV4. Временные учетные данные безопасности состоят из идентификатора ключа доступа и секретного ключа доступа. Однако они также включают маркер безопасности, который указывает, когда истечет срок действия учетных данных. В этом посте мы создадим роль IAM и создадим временные учетные данные безопасности.

Сначала мы устанавливаем драйвер (cassandra-sigv4). Этот драйвер позволяет добавлять информацию для аутентификации в запросы API с помощью процесса подписи AWS версии 4 (SigV4). С помощью подключаемого модуля вы можете предоставить пользователям и приложениям краткосрочные учетные данные для доступа к Amazon Keyspaces (для Apache Cassandra) с использованием пользователей и ролей IAM. После этого вы импортируете необходимый сертификат вместе с дополнительными зависимостями пакета. В конце концов, вы позволите блокноту взять на себя роль общения с Keyspaces.

# Install missing packages and import dependencies
# Installing Cassandra SigV4
%pip install cassandra-sigv4 # Get Security certificate
!curl https://certs.secureserver.net/repository/sf-class2-root.crt -O # Import
from sagemaker import get_execution_role
from cassandra.cluster import Cluster
from ssl import SSLContext, PROTOCOL_TLSv1_2, CERT_REQUIRED
from cassandra_sigv4.auth import SigV4AuthProvider
import boto3 import pandas as pd
from pandas import DataFrame import csv
from cassandra import ConsistencyLevel
from datetime import datetime
import time
from datetime import timedelta import pandas as pd
import datetime as dt
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler # Getting credentials from the role
client = boto3.client("sts") # Get notebook Role
role = get_execution_role()
role_info = {"RoleArn": role, "RoleSessionName": "session1"}
print(role_info) credentials = client.assume_role(**role_info)

Затем подключитесь к Amazon Keyspaces и прочитайте системные данные из Keyspaces в Pandas DataFrame, чтобы проверить подключение.

# Connect to Cassandra Database from SageMaker Notebook # using temporary credentials from the Role.
session = boto3.session.Session() ###
### You can also pass specific credentials to the session
###
#session = boto3.session.Session(
# aws_access_key_id=credentials["Credentials"]["AccessKeyId"],
# aws_secret_access_key=credentials["Credentials"]["SecretAccessKey"],
# aws_session_token=credentials["Credentials"]["SessionToken"],
#) region_name = session.region_name # Set Context
ssl_context = SSLContext(PROTOCOL_TLSv1_2)
ssl_context.load_verify_locations("sf-class2-root.crt")
ssl_context.verify_mode = CERT_REQUIRED auth_provider = SigV4AuthProvider(session)
keyspaces_host = "cassandra." + region_name + ".amazonaws.com" cluster = Cluster([keyspaces_host], ssl_context=ssl_context, auth_provider=auth_provider, port=9142)
session = cluster.connect() # Read data from Keyspaces system table. # Keyspaces is serverless DB so you don't have to create Keyspaces DB ahead of time.
r = session.execute("select * from system_schema.keyspaces") # Read Keyspaces row into Panda DataFrame
df = DataFrame(r)
print(df)

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем подготовьте данные для обучения на необработанном наборе данных. В записной книжке Python, связанной с этим постом, используйте розничный набор данных, загруженный из здесь, и обработайте его. Наша бизнес-цель, учитывая набор данных, состоит в том, чтобы сгруппировать клиентов с использованием определенного метрического вызова RFM. Модель RFM основана на трех количественных факторах:

  • Недавность: как недавно клиент совершил покупку.
  • Частота: как часто клиент совершает покупку.
  • Денежная ценность: сколько денег клиент тратит на покупки.

RFM-анализ численно ранжирует клиента в каждой из этих трех категорий, как правило, по шкале от 1 до 5 (чем выше число, тем лучше результат). «Лучший» клиент получит высший балл в каждой категории. Мы будем использовать функцию дискретизации на основе квантилей pandas (qcut). Это поможет разбить значения на сегменты одинакового размера на основе квантилей выборки.

# Prepare Data
r = session.execute("select * from " + keyspaces_schema + ".online_retail") df = DataFrame(r)
df.head(100) df.count()
df["description"].nunique()
df["totalprice"] = df["quantity"] * df["price"]
df.groupby("invoice").agg({"totalprice": "sum"}).head() df.groupby("description").agg({"price": "max"}).sort_values("price", ascending=False).head()
df.sort_values("price", ascending=False).head()
df["country"].value_counts().head()
df.groupby("country").agg({"totalprice": "sum"}).sort_values("totalprice", ascending=False).head() returned = df[df["invoice"].str.contains("C", na=False)]
returned.sort_values("quantity", ascending=True).head() df.isnull().sum()
df.dropna(inplace=True)
df.isnull().sum()
df.dropna(inplace=True)
df.isnull().sum()
df.describe([0.05, 0.01, 0.25, 0.50, 0.75, 0.80, 0.90, 0.95, 0.99]).T
df.drop(df.loc[df["customer_id"] == ""].index, inplace=True) # Recency Metric
import datetime as dt today_date = dt.date(2011, 12, 9)
df["customer_id"] = df["customer_id"].astype(int) # create get the most recent invoice for each customer
temp_df = df.groupby("customer_id").agg({"invoice_date": "max"})
temp_df["invoice_date"] = temp_df["invoice_date"].astype(str)
temp_df["invoice_date"] = pd.to_datetime(temp_df["invoice_date"]).dt.date
temp_df["Recency"] = (today_date - temp_df["invoice_date"]).dt.days
recency_df = temp_df.drop(columns=["invoice_date"])
recency_df.head() # Frequency Metric
temp_df = df.groupby(["customer_id", "invoice"]).agg({"invoice": "count"})
freq_df = temp_df.groupby("customer_id").agg({"invoice": "count"})
freq_df.rename(columns={"invoice": "Frequency"}, inplace=True) # Monetary Metric
monetary_df = df.groupby("customer_id").agg({"totalprice": "sum"})
monetary_df.rename(columns={"totalprice": "Monetary"}, inplace=True)
rfm = pd.concat([recency_df, freq_df, monetary_df], axis=1) df = rfm
df["RecencyScore"] = pd.qcut(df["Recency"], 5, labels=[5, 4, 3, 2, 1])
df["FrequencyScore"] = pd.qcut(df["Frequency"].rank(method="first"), 5, labels=[1, 2, 3, 4, 5])
df["Monetary"] = df["Monetary"].astype(int)
df["MonetaryScore"] = pd.qcut(df["Monetary"], 5, labels=[1, 2, 3, 4, 5])
df["RFM_SCORE"] = ( df["RecencyScore"].astype(str) + df["FrequencyScore"].astype(str) + df["MonetaryScore"].astype(str)
)
seg_map = { r"[1-2][1-2]": "Hibernating", r"[1-2][3-4]": "At Risk", r"[1-2]5": "Can't Loose", r"3[1-2]": "About to Sleep", r"33": "Need Attention", r"[3-4][4-5]": "Loyal Customers", r"41": "Promising", r"51": "New Customers", r"[4-5][2-3]": "Potential Loyalists", r"5[4-5]": "Champions",
} df["Segment"] = df["RecencyScore"].astype(str) + rfm["FrequencyScore"].astype(str)
df["Segment"] = df["Segment"].replace(seg_map, regex=True)
df.head()
rfm = df.loc[:, "Recency":"Monetary"]
df.groupby("customer_id").agg({"Segment": "sum"}).head()

В этом примере мы используем CQL для чтения записей из таблицы Keyspace. В некоторых случаях использования ML вам может потребоваться несколько раз прочитать одни и те же данные из одной и той же таблицы Keyspaces. В этом случае мы рекомендуем вам сохранить данные в корзину Amazon S3, чтобы избежать дополнительных стоятчтение из Amazon Keyspaces. В зависимости от вашего сценария вы также можете использовать Амазонка ЭМИ в употребляете очень большой файл Amazon S3 в SageMaker.

## Optional Code to save Python DataFrame to S3
from io import StringIO # python3 (or BytesIO for python2) smclient = boto3.Session().client('sagemaker')
sess = sagemaker.Session()
bucket = sess.default_bucket() # Set a default S3 bucket
print(bucket) csv_buffer = StringIO()
df.to_csv(csv_buffer)
s3_resource = boto3.resource('s3')
s3_resource.Object(bucket, ‘out/saved_online_retail.csv').put(Body=csv_buffer.getvalue())

Далее мы обучаем модель машинного обучения с использованием алгоритма KMeans и убеждаемся, что кластеры созданы. В этом конкретном сценарии вы увидите, что созданные кластеры напечатаны, показывая, что клиенты в наборе необработанных данных были сгруппированы вместе на основе различных атрибутов в наборе данных. Эту кластерную информацию можно использовать для целевых маркетинговых кампаний.

# Training sc = MinMaxScaler((0, 1))
df = sc.fit_transform(rfm) # Clustering
kmeans = KMeans(n_clusters=6).fit(df) # Result
segment = kmeans.labels_ # Visualize the clusters
import matplotlib.pyplot as plt final_df = pd.DataFrame({"customer_id": rfm.index, "Segment": segment})
bucket_data = final_df.groupby("Segment").agg({"customer_id": "count"}).head()
index_data = final_df.groupby("Segment").agg({"Segment": "max"}).head()
index_data["Segment"] = index_data["Segment"].astype(int)
dataFrame = pd.DataFrame(data=bucket_data["customer_id"], index=index_data["Segment"])
dataFrame.rename(columns={"customer_id": "Total Customers"}).plot.bar( rot=70, title="RFM clustering"
)
# dataFrame.plot.bar(rot=70, title="RFM clustering");
plt.show(block=True);

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

(Необязательно) Затем мы сохраняем сегменты клиентов, определенные моделью машинного обучения, обратно в таблицу Amazon Keyspaces для целевого маркетинга. Пакетное задание может считывать эти данные и запускать целевые кампании для клиентов в определенных сегментах.

# Create ml_clustering_results table to store results createTable = """CREATE TABLE IF NOT EXISTS %s.ml_clustering_results ( run_id text, segment int, total_customers int, run_date date, PRIMARY KEY (run_id, segment)); """
cr = session.execute(createTable % keyspaces_schema)
time.sleep(20)
print("Table 'ml_clustering_results' created") insert_ml = ( "INSERT INTO " + keyspaces_schema + '.ml_clustering_results' + '("run_id","segment","total_customers","run_date") ' + 'VALUES (?,?,?,?); '
) prepared = session.prepare(insert_ml)
prepared.consistency_level = ConsistencyLevel.LOCAL_QUORUM run_id = "101"
dt = datetime.now() for ind in dataFrame.index: print(ind, dataFrame['customer_id'][ind]) r = session.execute( prepared, ( run_id, ind, dataFrame['customer_id'][ind], dt, ), )

Наконец, мы очистить ресурсы созданные во время этого руководства, чтобы избежать дополнительных расходов.

# Delete blog keyspace and tables
deleteKeyspace = "DROP KEYSPACE IF EXISTS blog"
dr = session.execute(deleteKeyspace) time.sleep(5)
print("Dropping %s keyspace. It may take a few seconds to a minute to complete deletion keyspace and table." % keyspaces_schema )

Удаление пространства ключей и таблиц может занять от нескольких секунд до минуты. Когда вы удаляете пространство ключей, пространство ключей и все его таблицы удаляются, и с них перестают взиматься сборы.

Заключение

В этом посте показано, как принимать данные о клиентах из Amazon Keyspaces в SageMaker и обучать модель кластеризации, позволяющую сегментировать клиентов. Вы можете использовать эту информацию для целевого маркетинга, тем самым значительно улучшив свой бизнес-KPI. Чтобы узнать больше об Amazon Keyspaces, просмотрите следующие ресурсы:


Об авторах

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Вадим Ляхович — старший архитектор решений в AWS в районе залива Сан-Франциско, помогающий клиентам перейти на AWS. Он работает с организациями, начиная от крупных предприятий и заканчивая небольшими стартапами, чтобы поддерживать их инновации. Он также помогает клиентам разрабатывать масштабируемые, безопасные и экономичные решения на AWS.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Парт Патель работает архитектором решений в AWS в районе залива Сан-Франциско. Парт помогает клиентам ускорить переход к облаку и успешно внедрить облако AWS. Он специализируется на машинном обучении и модернизации приложений.

Обучайте модели машинного обучения, используя Amazon Keyspaces в качестве источника данных PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Рам Патанги работает архитектором решений в AWS в районе залива Сан-Франциско. Он помог клиентам из отраслей сельского хозяйства, страхования, банковского дела, розничной торговли, здравоохранения и медико-биологических наук, гостиничного бизнеса и высоких технологий успешно вести свой бизнес в облаке AWS. Он специализируется на базах данных, аналитике и машинном обучении.

Отметка времени:

Больше от Машинное обучение AWS