Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov

Številne aplikacije, namenjene vzdrževanju industrijske opreme, spremljanju trgovine, upravljanju voznega parka in optimizaciji poti, so zgrajene z uporabo odprtokodnih API-jev Cassandra in gonilnikov za obdelavo podatkov pri visokih hitrostih in nizki zakasnitvi. Samostojno upravljanje tabel Cassandra je lahko dolgotrajno in drago. Amazon Keyspaces (za Apache Cassandra) omogoča nastavitev, zaščito in prilagajanje tabel Cassandra v oblaku AWS brez upravljanja dodatne infrastrukture.

V tej objavi vas bomo popeljali skozi storitve AWS, povezane z usposabljanjem modelov strojnega učenja (ML) z uporabo Amazon Keyspaces na visoki ravni, in podali navodila po korakih za vnos podatkov iz Amazon Keyspaces v Amazon SageMaker in usposabljanje modela, ki ga je mogoče uporabiti za poseben primer uporabe segmentacije strank.

AWS ima več storitev za pomoč podjetjem pri implementaciji procesov ML v oblaku.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

AWS ML Stack ima tri plasti. V srednji plasti je SageMaker, ki razvijalcem, podatkovnim znanstvenikom in inženirjem ML omogoča izgradnjo, usposabljanje in uvajanje modelov ML v velikem obsegu. Odstrani zapletenost vsakega koraka delovnega toka ML, tako da lahko lažje uvedete svoje primere uporabe ML. To vključuje vse od prediktivnega vzdrževanja do računalniškega vida za napovedovanje vedenja strank. Stranke s SageMakerjem dosežejo do 10-krat večjo produktivnost podatkovnih znanstvenikov.

Apache Cassandra je priljubljena izbira za zelo zahtevne primere uporabe z nestrukturiranimi ali polstrukturiranimi podatki. Na primer, priljubljeno podjetje za dostavo hrane oceni čas dostave, maloprodajna stranka pa bi lahko pogosto uporabljala informacije iz kataloga izdelkov v zbirki podatkov Apache Cassandra. Amazon Keyspaces je razširljiva, zelo razpoložljiva in upravljana brezstrežniška storitev baze podatkov, združljiva z Apache Cassandra. Ni vam treba zagotavljati, popravljati ali upravljati strežnikov in ni vam treba namestiti, vzdrževati ali upravljati programske opreme. Tabele se lahko samodejno povečajo in zmanjšajo, plačate pa samo za vire, ki jih uporabljate. Amazon Keyspaces vam omogoča izvajanje delovnih obremenitev Cassandra na AWS z uporabo iste kode aplikacije Cassandra in orodij za razvijalce, ki jih uporabljate danes.

SageMaker ponuja zbirko vgrajeni algoritmi za pomoč podatkovnim znanstvenikom in praktikom ML pri hitrem začetku usposabljanja in uvajanja modelov ML. V tej objavi vam bomo pokazali, kako lahko maloprodajna stranka uporabi zgodovino nakupov strank v bazi podatkov Keyspaces in cilja na različne segmente strank za marketinške akcije.

K-pomeni je nenadzorovan učni algoritem. Poskuša najti diskretne skupine znotraj podatkov, kjer so člani skupine čim bolj podobni drug drugemu in čim bolj različni od članov drugih skupin. Vi definirate atribute, ki jih želite, da algoritem uporabi za določanje podobnosti. SageMaker uporablja spremenjeno različico algoritem za združevanje k-sredstev na spletni lestvici. V primerjavi s prvotno različico algoritma je različica, ki jo uporablja SageMaker, natančnejša. Vendar pa se, tako kot izvirni algoritem, prilagaja ogromnim naborom podatkov in zagotavlja izboljšave v času usposabljanja.

Pregled rešitev

Navodila predvidevajo, da bi za zagon kode uporabljali SageMaker Studio. Povezana koda je bila v skupni rabi na Vzorec AWS GitHub. Po navodilih v laboratoriju lahko naredite naslednje:

  • Namestite potrebne odvisnosti.
  • Povežite se z Amazon Keyspaces, ustvarite tabelo in vnesite vzorčne podatke.
  • Zgradite klasifikacijski model ML z uporabo podatkov v Amazon Keyspaces.
  • Raziščite rezultate modela.
  • Očistite novo ustvarjene vire.

Ko končate, boste integrirali SageMaker z Amazon Keyspaces za usposabljanje modelov ML, kot je prikazano na naslednji sliki.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Zdaj lahko sledite navodila po korakih v tej objavi za vnos neobdelanih podatkov, shranjenih v Amazon Keyspaces, z uporabo SageMakerja in tako pridobljenih podatkov za obdelavo ML.

Predpogoji

Najprej pojdite na SageMaker.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato izberite, če SageMaker uporabljate prvič Odkrij več.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato izberite Nastavite domeno SageMaker.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato ustvarite nov uporabniški profil z Ime – sagemakeruserin izberite Ustvari novo vlogo v Privzeta izvršilna vloga pododdelek.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato na pojavnem zaslonu izberite katerega koli Preprosta storitev shranjevanja Amazon (Amazon S3) vedro in izberite Ustvari vlogo.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ta vloga bo uporabljena v naslednjih korakih, da SageMakerju omogoči dostop do tabele Keyspaces Table z uporabo začasnih poverilnic iz vloge. To odpravlja potrebo po shranjevanju uporabniškega imena in gesla v beležnici.

Nato pridobite vlogo, povezano z sagemakeruser ki je bil ustvarjen v prejšnjem koraku iz razdelka s povzetkom.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato se pomaknite do Konzola AWS in poglej gor AWS Upravljanje identitete in dostopa (IAM). V IAM se pomaknite do Vloge. Znotraj Vloge poiščite izvršilno vlogo, identificirano v prejšnjem koraku.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato izberite vlogo, identificirano v prejšnjem koraku, in izberite Dodaj dovoljenja. V spustnem meniju, ki se prikaže, izberite Create Inline Policy. SageMaker vam omogoča zagotavljanje natančne ravni dostopa, ki omejuje, katera dejanja lahko izvaja uporabnik/aplikacija glede na poslovne zahteve.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato izberite zavihek JSON in kopirajte pravilnik iz razdelka Opomba v Githubu Stran. Ta pravilnik omogoča prenosniku SageMaker, da se poveže s prostori ključev in pridobi podatke za nadaljnjo obdelavo.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato znova izberite Dodaj dovoljenja in na spustnem seznamu izberite Priloži pravilnik.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Poiščite pravilnik AmazonKeyspacesFullAccess in izberite potrditveno polje poleg ujemajočega se rezultata ter izberite Priloži pravilnike.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Preverite, ali razdelek s pravilniki o dovoljenjih vključuje AmazonS3FullAccess, AmazonSageMakerFullAccess, AmazonKeyspacesFullAccess, kot tudi na novo dodan vgrajeni pravilnik.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato se s konzolo AWS pomaknite do SageMaker Studio in izberite SageMaker Studio. Ko ste tam, izberite Zaženi aplikacijo in izberite Studio.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Prehod prek prenosnika

Najprimernejši način povezovanja s Keyspaces iz SageMaker Notebook je z uporabo Postopek AWS Signature različice 4 (SigV4) temeljijo Začasne poverilnice za avtentikacijo. V tem scenariju nam NI treba ustvariti ali shraniti poverilnic Keyspaces in lahko poverilnice uporabimo za preverjanje pristnosti z vtičnikom SigV4. Začasne varnostne poverilnice so sestavljene iz ID-ja ključa za dostop in skrivnega ključa za dostop. Vendar pa vključujejo tudi varnostni žeton, ki označuje, kdaj potečejo poverilnice. V tej objavi bomo ustvarili vlogo IAM in ustvarili začasne varnostne poverilnice.

Najprej namestimo gonilnik (cassandra-sigv4). Ta gonilnik vam omogoča dodajanje informacij za preverjanje pristnosti vašim zahtevam API z uporabo postopka AWS Signature Version 4 (SigV4). Z uporabo vtičnika lahko uporabnikom in aplikacijam zagotovite kratkoročne poverilnice za dostop do Amazon Keyspaces (za Apache Cassandra) z uporabo uporabnikov in vlog IAM. Po tem boste uvozili zahtevano potrdilo skupaj z dodatnimi odvisnostmi paketa. Na koncu boste prenosniku dovolili, da prevzame vlogo za pogovor s 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)

Nato se povežite z Amazon Keyspaces in preberite sistemske podatke iz Keyspaces v Pandas DataFrame, da potrdite povezavo.

# 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)

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Nato pripravite podatke za usposabljanje na naboru neobdelanih podatkov. V zvezku python, povezanem s to objavo, uporabite nabor maloprodajnih podatkov, prenesen iz tukaj, in ga obdelajte. Naš poslovni cilj glede na nabor podatkov je združiti stranke v skupine z uporabo posebnega metričnega klica RFM. Model RFM temelji na treh kvantitativnih dejavnikih:

  • Nedavnost: Kako nedavno je stranka opravila nakup.
  • Pogostost: kako pogosto kupec opravi nakup.
  • Denarna vrednost: Koliko denarja stranka porabi za nakupe.

Analiza RFM številčno razvrsti stranko v vsako od teh treh kategorij, običajno na lestvici od 1 do 5 (višja kot je številka, boljši je rezultat). »Najboljša« stranka bi prejela najvišjo oceno v vsaki kategoriji. Uporabili bomo pandino funkcijo diskretizacije na osnovi kvantilov (qcut). Pomagal bo diskretizirati vrednosti v enako velika vedra na podlagi ali na podlagi vzorčnih kvantilov.

# 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()

V tem primeru uporabljamo CQL za branje zapisov iz tabele Keyspace. V nekaterih primerih uporabe ML boste morda morali večkrat prebrati iste podatke iz iste tabele Keyspaces. V tem primeru vam priporočamo, da svoje podatke shranite v vedro Amazon S3, da se izognete dodatnim stroškibere iz Amazon Keyspaces. Odvisno od vašega scenarija lahko uporabite tudi Amazonski EMR do zaužiti zelo veliko datoteko Amazon S3 v 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())

Nato urimo model ML z uporabo algoritma KMeans in poskrbimo, da so grozdi ustvarjeni. V tem posebnem scenariju bi videli, da so ustvarjene gruče natisnjene, kar kaže, da so bile stranke v naboru neobdelanih podatkov združene skupaj na podlagi različnih atributov v naboru podatkov. Te informacije o grozdu je mogoče uporabiti za ciljno usmerjene marketinške akcije.

# 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);

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

(Izbirno) Nato shranimo segmente strank, ki jih je identificiral model ML, nazaj v tabelo Amazon Keyspaces za ciljno trženje. Paketno opravilo bi lahko prebralo te podatke in zagnalo ciljane kampanje za stranke v določenih segmentih.

# 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, ), )

Končno tudi mi očistite vire ustvarjeni med to vadnico, da se izognete dodatnim stroškom.

# 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 )

Dokončanje brisanja prostora ključev in tabel lahko traja od nekaj sekund do minute. Ko izbrišete prostor ključev, se izbrišejo prostor ključev in vse njegove tabele in prenehajo nabirati stroške zanje.

zaključek

Ta objava vam je pokazala, kako vnesti podatke o strankah iz Amazon Keyspaces v SageMaker in usposobiti model združevanja v gruče, ki vam je omogočil segmentiranje strank. Te informacije bi lahko uporabili za ciljno trženje in tako močno izboljšali svoj poslovni KPI. Če želite izvedeti več o Amazon Keyspaces, preglejte naslednje vire:


O avtorjih

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Vadim Ljahovič je višji arhitekt za rešitve pri AWS na območju zaliva San Francisco, ki strankam pomaga pri prehodu na AWS. Sodeluje z organizacijami, od velikih podjetij do majhnih startupov, da bi podprl njihove inovacije. Prav tako strankam pomaga oblikovati razširljive, varne in stroškovno učinkovite rešitve na AWS.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Parth Patel je arhitekt rešitev pri AWS na območju zaliva San Francisco. Parth usmerja stranke, da pospešijo njihovo pot v oblak in jim pomaga uspešno sprejeti oblak AWS. Osredotoča se na ML in posodobitev aplikacij.

Usposabljajte modele strojnega učenja z uporabo Amazon Keyspaces kot vira podatkov PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Ram Pathangi je arhitekt rešitev pri AWS na območju zaliva San Francisco. Pomagal je strankam v kmetijstvu, zavarovalništvu, bančništvu, trgovini na drobno, zdravstveni negi in znanosti o življenju, gostinstvu in visokotehnoloških vertikalah pri uspešnem vodenju poslovanja v oblaku AWS. Specializiral se je za baze podatkov, analitiko in ML.

Časovni žig:

Več od Strojno učenje AWS