עם סבירות גבוהה יותר שתוכן מותאם יגרום למעורבות של לקוחות, עסקים מחפשים ללא הרף לספק תוכן מותאם על סמך הפרופיל וההתנהגות של הלקוח שלהם. מערכות המלצות בפרט מבקשות לחזות את ההעדפה שמשתמש קצה יעניק לפריט. כמה מקרי שימוש נפוצים כוללים המלצות למוצרים בחנויות קמעונאיות מקוונות, התאמה אישית של ניוזלטרים, הפקת המלצות לפלייליסטים של מוזיקה, או אפילו גילוי תוכן דומה בשירותי מדיה מקוונים.
עם זאת, זה יכול להיות מאתגר ליצור מערכת המלצות יעילה בגלל המורכבות בהכשרת מודלים, בחירת אלגוריתמים וניהול פלטפורמה. אמזון להתאים אישית מאפשר למפתחים לשפר את מעורבות הלקוחות באמצעות המלצות מוצר ותוכן מותאמות אישית ללא צורך במומחיות למידת מכונה (ML). מפתחים יכולים להתחיל למשוך לקוחות מיד על ידי שימוש בנתוני התנהגות משתמשים שנלכדו. מאחורי הקלעים, Amazon Personalize בוחנת את הנתונים הללו, מזהה מה משמעותי, בוחרת את האלגוריתמים הנכונים, מאמנת ומבצעת אופטימיזציה של מודל פרסונליזציה שמותאם לנתונים שלך, ומספקת המלצות דרך נקודת קצה של API.
למרות שמתן המלצות בזמן אמת יכול לעזור להגביר את המעורבות והשביעות רצון, לפעמים זה לא ממש נדרש, וביצוע זה באצווה על בסיס מתוזמן יכול פשוט להיות אפשרות חסכונית יותר וניתנת לניהול.
פוסט זה מראה לך כיצד להשתמש בשירותי AWS כדי לא רק ליצור המלצות אלא גם להפעיל צינור המלצות אצווה. אנו עוברים על הפתרון מקצה לקצה ללא שורת קוד אחת. נדון בשני נושאים בפירוט:
סקירת פתרונות
בפתרון זה, אנו משתמשים ב- עדשות סרטים מערך נתונים. מערך נתונים זה כולל 86,000 דירוגים של סרטים מ-2,113 משתמשים. אנו מנסים להשתמש בנתונים אלה כדי ליצור המלצות עבור כל אחד מהמשתמשים הללו.
הכנת הנתונים חשובה מאוד כדי להבטיח שנקבל נתוני התנהגות לקוחות לפורמט שמוכן לאמזון פרסונלייז. הארכיטקטורה המתוארת בפוסט זה משתמשת ב-AWS Glue, שירות שילוב נתונים ללא שרת, כדי לבצע את הטרנספורמציה של נתונים גולמיים לפורמט שמוכן לצריכה של Amazon Personalize. הפתרון משתמש ב-Amazon Personalize כדי ליצור המלצות אצווה לכל המשתמשים על ידי שימוש בהסקת אצווה. לאחר מכן אנו משתמשים בזרימת עבודה של Step Functions כך שניתן להפעיל את זרימת העבודה האוטומטית על ידי קריאה לממשקי API של Amazon Personalize באופן שניתן לחזור עליו.
אנו נבנה את הפתרון הזה עם השלבים הבאים:
- בנו עבודה לשינוי נתונים כדי להפוך את הנתונים הגולמיים שלנו באמצעות דבק AWS.
- בנה פתרון של Amazon Personalize עם מערך הנתונים שעבר שינוי.
- בנו זרימת עבודה של Step Functions כדי לתזמר את יצירת מסקנות אצווה.
תנאים מוקדמים
אתה צריך את הדברים הבאים עבור הדרכה זו:
בנו משימת שינוי נתונים כדי להפוך נתונים גולמיים עם AWS Glue
עם Amazon Personalize, נתוני קלט צריכים להיות בעלי סכימה ופורמט קובץ ספציפיים. נתונים מאינטראקציות בין משתמשים ופריטים חייבים להיות בפורמט CSV עם עמודות ספציפיות, בעוד שרשימת המשתמשים שעבורם ברצונך להפיק המלצות חייבת להיות בפורמט JSON. בחלק זה, אנו משתמשים ב-AWS Glue Studio כדי להפוך נתוני קלט גולמיים למבנים ולפורמט הנדרשים עבור Amazon Personalize.
AWS Glue Studio מספק ממשק גרפי המיועד ליצירה והפעלה קלה של עבודות חילוץ, טרנספורמציה וטעינה (ETL). אתה יכול ליצור חזותית עומסי עבודה של שינוי נתונים באמצעות פעולות גרירה ושחרור פשוטות.
ראשית אנו מכינים את נתוני המקור שלנו שירות אחסון פשוט של אמזון (Amazon S3), אז נמיר את הנתונים ללא קוד.
- בקונסולת Amazon S3, צור דלי S3 עם שלוש תיקיות: גלם, טרנספורמציה ואצור.
- הורד מערך הנתונים של MovieLens והעלה את הקובץ הלא דחוס בשם user_ratingmovies-timestamp.dat לדלי שלך מתחת לתיקיה הגולמית.
- במסוף AWS Glue Studio, בחר מקומות תעסוקה בחלונית הניווט.
- בחר ויזואלי עם מקור ומטרה, ואז לבחור צור.
- בחר את הצומת הראשון שנקרא מקור נתונים – דלי S3. זה המקום שבו אנו מציינים את נתוני הקלט שלנו.
- על מאפייני מקור נתונים בחר, בחר מיקום S3 ודפדף לקובץ שהעלית.
- בעד פורמט נתונים, בחר CSV, ועבור מפריד, בחר Tab.
- אנו יכולים לבחור בלשונית פלט סכימה כדי לוודא שהסכימה הסיקה את העמודות בצורה נכונה.
- אם הסכימה לא תואמת את הציפיות שלך, בחר ערוך כדי לערוך את הסכימה.
לאחר מכן, אנו משנים את הנתונים האלה כדי לעמוד בדרישות הסכימה עבור Amazon Personalize.
- בחר את טרנספורמציה - החל מיפוי צומת ו, על לשנות בכרטיסייה, עדכן את מפתח היעד וסוגי הנתונים.
Amazon Personalize, לכל הפחות, מצפה למבנה הבא עבור מערך נתונים של אינטראקציות:
בדוגמה זו, אנו לא כוללים את הסרטים עם דירוג גרוע במערך הנתונים.
- כדי לעשות זאת, הסר את הצומת האחרון שנקרא S3 bucket והוסף צומת סינון ב- לשנות TAB.
- בחרו להוסיף מצב ולסנן נתונים שבהם דירוג < 3.5.
כעת אנו כותבים את הפלט בחזרה לאמזון S3.
- הרחב יעד תפריט ובחר אמזון S3.
- בעד מיקום יעד S3, בחר את התיקיה בשם
transformed
. - בחרו CSV כמו הפורמט והסיומת ה מיקום יעד עם
interactions/
.
לאחר מכן, אנו מוציאים רשימה של משתמשים שאנו רוצים לקבל עליהם המלצות.
- בחר את ApplyMapping הצומת שוב, ולאחר מכן הרחב את לשנות תפריט ובחר ApplyMapping.
- שחרר את כל השדות למעט
user_id
ושנה את שם השדה לuserId
. אמזון פרסונלייז מצפה שהשדה הזה יקבל שם תעודת זהות של המשתמש. - הרחב יעד תפריט שוב ובחר אמזון S3.
- הפעם, בחר JSON בתור הפורמט, ולאחר מכן בחר את תיקיית S3 שהשתנתה וסיומת אותה
batch_users_input/
.
זה מייצר א JSON רשימת משתמשים כקלט עבור Amazon Personalize. כעת אמורה להיות לנו דיאגרמה שנראית כמו הבאה.
כעת אנו מוכנים להפעיל את עבודת הטרנספורמציה שלנו.
- במסוף IAM, צור תפקיד הנקרא glue-service-role וצרף את המדיניות המנוהלת הבאה:
AWSGlueServiceRole
AmazonS3FullAccess
למידע נוסף על אופן יצירת תפקידי שירות IAM, עיין ב- יצירת תפקיד להאצלת הרשאות לשירות AWS.
- נווט חזרה לעבודת AWS Glue Studio שלך ובחר את פרטי עבודה TAB.
- הגדר את שם העבודה בתור
batch-personalize-input-transform-job
. - בחר את תפקיד IAM החדש שנוצר.
- שמור את ערכי ברירת המחדל עבור כל השאר.
- בחרו שמור.
- כשתהיה מוכן, בחר הפעלה ולפקח על העבודה ב ריצות TAB.
- כאשר העבודה תושלם, נווט אל מסוף Amazon S3 כדי לוודא שקובץ הפלט שלך נוצר בהצלחה.
כעת עיצבנו את הנתונים שלנו לפורמט ולמבנה ש-Amazon Personalize דורש. למערך הנתונים שעבר טרנספורמציה צריכים להיות השדות והפורמט הבאים:
- מערך אינטראקציות - פורמט CSV עם שדות
USER_ID
,ITEM_ID
,TIMESTAMP
- מערך נתונים של קלט משתמש - פורמט JSON עם אלמנט
userId
בנה פתרון של Amazon Personalize עם מערך הנתונים שעבר שינוי
עם מערך האינטראקציות שלנו ונתוני קלט המשתמש בפורמט הנכון, אנו יכולים כעת ליצור את פתרון Amazon Personalize שלנו. בסעיף זה, אנו יוצרים את קבוצת הנתונים שלנו, מייבאים את הנתונים שלנו, ולאחר מכן יוצרים עבודת מסקנות אצווה. קבוצת מערכי נתונים מארגנת משאבים במכולות עבור רכיבי Amazon Personalize.
- במסוף ההתאמה האישית של אמזון בחר צור קבוצת נתונים.
- בעד תְחוּם, בחר מותאם אישית.
- בחרו צור קבוצת נתונים והמשך.
לאחר מכן, צור את מערך הנתונים של האינטראקציות.
כעת אנו מייבאים את נתוני האינטראקציות שיצרנו קודם לכן.
- נווט אל דלי S3 שבו יצרנו את מערך הנתונים של אינטראקציות CSV שלנו.
- על הרשאות הכרטיסייה, הוסף את מדיניות הגישה הבאה לדלי כדי של-Amazon Personalize תהיה גישה. עדכן את המדיניות כך שתכלול את שם הדלי שלך.
נווט חזרה אל Amazon Personalize ובחר צור את עבודת ייבוא הנתונים שלך. מערך האינטראקציות שלנו אמור לייבא כעת אל Amazon Personalize. המתן עד שעבודת הייבוא תושלם עם הסטטוס פעיל לפני שתמשיך לשלב הבא. זה אמור לקחת כ-8 דקות.
- במסוף ההתאמה האישית של אמזון בחר סקירה כללית בחלונית הניווט ובחר צור פתרון.
- הזן שם לפתרון.
- בעד סוג פתרון, בחר המלצה על פריט.
- בעד מתכון, בחר את
aws-user-personalization
מתכון. - בחרו צור והדרכה פתרון.
הפתרון מתאמן כעת מול מערך האינטראקציות שיובאו עם המתכון להתאמה אישית של המשתמש. עקוב אחר המצב של תהליך זה תחת גרסאות הפיתרון. המתן עד שהוא יסתיים לפני שתמשיך. זה אמור לקחת בערך 20 דקות.
כעת אנו יוצרים את עבודת ההסקת האצווה שלנו, אשר מייצרת המלצות לכל אחד מהמשתמשים הנוכחים בקלט JSON.
- בחלונית הניווט, מתחת משאבים מותאמים אישית, בחר עבודות מסקנות אצווה.
- הזן שם עבודה, ועבור פתרון, בחר את הפתרון שנוצר קודם לכן.
- בחרו צור עבודת הסקת אצווה.
- בעד תצורת נתוני קלט, היכנס לנתיב S3 של המקום שבו
batch_users_input
הקובץ נמצא.
זהו קובץ JSON שמכיל userId
.
- בעד תצורת נתוני פלט נתיב, בחר את הנתיב שנקבע ב-S3.
- בחרו צור עבודת הסקת אצווה.
תהליך זה אורך כ-30 דקות. בסיום העבודה, המלצות עבור כל אחד מהמשתמשים המצוינים בקובץ הקלט של המשתמש נשמרות במיקום הפלט S3.
יצרנו בהצלחה סדרת המלצות לכל המשתמשים שלנו. עם זאת, יישמנו את הפתרון רק באמצעות הקונסולה עד כה. כדי לוודא שהסקת אצווה זו פועלת באופן קבוע עם קבוצת הנתונים העדכנית ביותר, עלינו לבנות זרימת עבודה של תזמור. בסעיף הבא, אנו מראים לך כיצד ליצור זרימת עבודה של תזמור באמצעות Step Functions.
בנו זרימת עבודה של Step Functions כדי לתזמן את זרימת העבודה של מסקנות אצווה
כדי לתזמן את הצינור שלך, בצע את השלבים הבאים:
- במסוף Step Functions, בחר צור מכונת מדינה.
- בחר עצב את זרימת העבודה שלך בצורה ויזואלית, ואז לבחור הַבָּא.
- גרור את
CreateDatasetImportJob
צומת משמאל (תוכל לחפש את הצומת הזה בתיבת החיפוש) על הבד. - בחר את הצומת, ואתה אמור לראות את פרמטרי ה-API של התצורה בצד ימין. הקלט את ה-ARN.
- הזן את הערכים שלך ב- פרמטרי API תיבת טקסט.
זה קורא ל CreateDatasetImportJob API עם ערכי הפרמטרים שאתה מציין.
- גרור את
CreateSolutionVersion
צומת על הבד. - עדכן את פרמטרי ה-API עם ה-ARN של הפתרון שציינת.
פעולה זו יוצרת גרסת פתרון חדשה עם הנתונים החדשים שיובאו על ידי קריאה ל- CreateSolutionVersion ה-API.
- גרור את
CreateBatchInferenceJob
צומת על הקנבס ובאופן דומה עדכן את פרמטרי ה-API עם הערכים הרלוונטיים.
ודא שאתה משתמש ב- $.SolutionVersionArn
תחביר כדי לאחזר את פרמטר גרסת הפתרון ARN מהשלב הקודם. פרמטרי API אלה מועברים ל- CreateBatchInferenceJob ה-API.
עלינו לבנות היגיון המתנה בזרימת העבודה של Step Functions כדי לוודא שעבודת ההסקת האצווה של המלצה מסתיימת לפני שזרימת העבודה מסתיימת.
- מצא וגרור בצומת המתנה.
- בתצורה עבור חכה, הזן 300 שניות.
זהו ערך שרירותי; עליך לשנות את זמן ההמתנה בהתאם למקרה השימוש הספציפי שלך.
- בחר את
CreateBatchInferenceJob
הצומת שוב ונווט אל שגיאה בטיפול TAB. - בעד היאבקות שגיאות, להיכנס
Personalize.ResourceInUseException
. - בעד מצב נפילה, בחר חכה.
שלב זה מאפשר לנו לבדוק מעת לעת את מצב העבודה והיא יוצאת מהלולאה רק כאשר העבודה הושלמה.
- בעד ResultPath, להיכנס
$.errorMessage
.
המשמעות היא למעשה שכאשר החריג "משאב בשימוש" מתקבל, העבודה ממתינה X שניות לפני שתנסה שוב עם אותן כניסות.
- בחרו שמור, ולאחר מכן לבחור התחל את הביצוע.
תזמרנו בהצלחה את צינור המלצות האצווה שלנו עבור Amazon Personalize. כצעד אופציונלי, אתה יכול להשתמש אמזון EventBridge לתזמן הפעלה של זרימת עבודה זו על בסיס קבוע. לפרטים נוספים, עיין ב EventBridge (CloudWatch Events) לשינויי סטטוס ביצוע של Step Functions.
לנקות את
כדי להימנע מחיובים עתידיים, מחק את המשאבים שיצרת עבור הדרכה זו.
סיכום
בפוסט זה, הדגמנו כיצד ליצור צינור המלצות אצווה על ידי שימוש בשילוב של AWS Glue, Amazon Personalize ו-Step Functions, מבלי להזדקק לשורה אחת של קוד או ניסיון ב-ML. השתמשנו ב-AWS Glue כדי להכין את הנתונים שלנו לפורמט ש-Amazon Personalize דורש. לאחר מכן השתמשנו ב-Amazon Personalize כדי לייבא את הנתונים, ליצור פתרון עם מתכון להתאמה אישית של המשתמש, וליצור עבודת הסקת מסקנות אצווה המייצרת ברירת מחדל של 25 המלצות לכל משתמש, בהתבסס על אינטראקציות קודמות. לאחר מכן תזמרנו את השלבים הללו באמצעות Step Functions כך שנוכל להפעיל את המשימות הללו באופן אוטומטי.
לצעדים הבאים לשקול, פילוח משתמשים הוא אחד המתכונים החדשים יותר ב-Amazon Personalize, שאולי תרצה לחקור כדי ליצור פלחי משתמשים עבור כל שורה של נתוני הקלט. לפרטים נוספים, עיין ב קבלת המלצות אצווה ופלחי משתמשים.
על הסופר
מקסין ווי הוא אדריכל AWS Data Lab Solutions. Maxine עובדת עם לקוחות על מקרי השימוש שלהם, מעצבת פתרונות לפתרון הבעיות העסקיות שלהם ומנחה אותם בבניית אבות טיפוס ניתנים להרחבה. לפני המסע שלה עם AWS, Maxine עזרה ללקוחות ליישם BI, אחסון נתונים ופרויקטים של אגם נתונים באוסטרליה.