ด้วยเนื้อหาที่ปรับให้เหมาะกับแต่ละบุคคลมีแนวโน้มที่จะกระตุ้นการมีส่วนร่วมของลูกค้ามากขึ้น ธุรกิจจึงพยายามจัดหาเนื้อหาที่ปรับแต่งตามโปรไฟล์และพฤติกรรมของลูกค้าอย่างต่อเนื่อง ระบบคำแนะนำโดยเฉพาะอย่างยิ่งพยายามคาดการณ์การตั้งค่าที่ผู้ใช้ปลายทางจะมอบให้กับรายการ กรณีการใช้งานทั่วไป ได้แก่ คำแนะนำผลิตภัณฑ์ในร้านค้าปลีกออนไลน์ การปรับแต่งจดหมายข่าว การสร้างรายการเพลงแนะนำ หรือแม้แต่การค้นหาเนื้อหาที่คล้ายกันในบริการสื่อออนไลน์
อย่างไรก็ตาม การสร้างระบบการแนะนำที่มีประสิทธิภาพอาจเป็นเรื่องยากเนื่องจากความซับซ้อนในการฝึกโมเดล การเลือกอัลกอริทึม และการจัดการแพลตฟอร์ม ปรับแต่ง Amazon ช่วยให้นักพัฒนาปรับปรุงการมีส่วนร่วมของลูกค้าผ่านการแนะนำผลิตภัณฑ์และเนื้อหาที่ปรับให้เป็นส่วนตัวโดยไม่ต้องมีความเชี่ยวชาญด้านการเรียนรู้ของเครื่อง (ML) นักพัฒนาสามารถเริ่มมีส่วนร่วมกับลูกค้าได้ทันทีโดยใช้ข้อมูลพฤติกรรมของผู้ใช้ที่บันทึกไว้ เบื้องหลัง Amazon Personalize ตรวจสอบข้อมูลนี้ ระบุสิ่งที่มีความหมาย เลือกอัลกอริธึมที่เหมาะสม ฝึกฝนและปรับแต่งโมเดลส่วนบุคคลที่ปรับแต่งสำหรับข้อมูลของคุณ และให้คำแนะนำผ่านจุดปลาย API
แม้ว่าการให้คำแนะนำแบบเรียลไทม์จะช่วยเพิ่มการมีส่วนร่วมและความพึงพอใจได้ แต่บางครั้งอาจไม่จำเป็นจริงๆ และการดำเนินการนี้เป็นกลุ่มตามกำหนดเวลาอาจเป็นทางเลือกที่คุ้มค่าและจัดการได้มากกว่า
โพสต์นี้แสดงให้คุณเห็นถึงวิธีการใช้บริการของ AWS ไม่เพียงแต่สร้างคำแนะนำ แต่ยังดำเนินการไปป์ไลน์การแนะนำแบบกลุ่ม เราดำเนินการแก้ปัญหาแบบ end-to-end โดยไม่ต้องใช้โค้ดแม้แต่บรรทัดเดียว เราพูดคุยรายละเอียดสองหัวข้อ:
ภาพรวมโซลูชัน
ในโซลูชันนี้ เราใช้ เลนส์ภาพยนตร์ ชุดข้อมูล ชุดข้อมูลนี้ประกอบด้วยการให้คะแนนภาพยนตร์ 86,000 เรื่องจากผู้ใช้ 2,113 ราย เราพยายามใช้ข้อมูลนี้เพื่อสร้างคำแนะนำสำหรับผู้ใช้แต่ละราย
การเตรียมข้อมูลมีความสำคัญมากเพื่อให้แน่ใจว่าเราได้รับข้อมูลพฤติกรรมของลูกค้าในรูปแบบที่พร้อมสำหรับ Amazon Personalize สถาปัตยกรรมที่อธิบายไว้ในโพสต์นี้ใช้ AWS Glue ซึ่งเป็นบริการการรวมข้อมูลแบบไร้เซิร์ฟเวอร์เพื่อดำเนินการแปลงข้อมูลดิบให้อยู่ในรูปแบบที่พร้อมให้ Amazon Personalize ใช้ โซลูชันนี้ใช้ Amazon Personalize เพื่อสร้างคำแนะนำแบทช์สำหรับผู้ใช้ทั้งหมดโดยใช้การอนุมานแบบแบตช์ จากนั้น เราใช้เวิร์กโฟลว์ Step Functions เพื่อให้เวิร์กโฟลว์อัตโนมัติสามารถเรียกใช้ได้โดยการเรียก Amazon Personalize API ในลักษณะที่ทำซ้ำได้
ไดอะแกรมต่อไปนี้สาธิตวิธีแก้ปัญหานี้
เราจะสร้างโซลูชันนี้ด้วยขั้นตอนต่อไปนี้:
- สร้างงานการแปลงข้อมูลเพื่อแปลงข้อมูลดิบของเราโดยใช้ AWS Glue
- สร้างโซลูชัน Amazon Personalize ด้วยชุดข้อมูลที่แปลงแล้ว
- สร้างเวิร์กโฟลว์ Step Functions เพื่อควบคุมการสร้างการอนุมานแบบแบตช์
เบื้องต้น
คุณต้องการสิ่งต่อไปนี้สำหรับคำแนะนำนี้:
สร้างงานการแปลงข้อมูลเพื่อแปลงข้อมูลดิบด้วย AWS Glue
ด้วย Amazon Personalize ข้อมูลที่ป้อนต้องมีสคีมาและรูปแบบไฟล์เฉพาะ ข้อมูลจากการโต้ตอบระหว่างผู้ใช้และรายการต้องอยู่ในรูปแบบ CSV กับคอลัมน์เฉพาะ ในขณะที่รายชื่อผู้ใช้ที่คุณต้องการสร้างคำแนะนำต้องอยู่ในรูปแบบ JSON ในส่วนนี้ เราใช้ AWS Glue Studio เพื่อแปลงข้อมูลดิบอินพุตให้เป็นโครงสร้างและรูปแบบที่จำเป็นสำหรับ Amazon Personalize
AWS Glue Studio มีอินเทอร์เฟซแบบกราฟิกที่ออกแบบมาเพื่อการสร้างและเรียกใช้งานการแยก แปลง และโหลด (ETL) ที่ง่ายดาย คุณสามารถสร้างปริมาณงานการแปลงข้อมูลแบบเห็นภาพได้ผ่านการดำเนินการแบบลากแล้วปล่อยอย่างง่าย
ก่อนอื่นเราเตรียมข้อมูลต้นทางของเราใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) จากนั้นเราแปลงข้อมูลโดยไม่มีรหัส
- บนคอนโซล Amazon S3 ให้สร้างบัคเก็ต S3 ที่มีสามโฟลเดอร์: ดิบ แปลงแล้ว และดูแลจัดการ
- ดาวน์โหลด ชุดข้อมูล MovieLens และอัปโหลดไฟล์ที่ไม่บีบอัดชื่อ user_ratingmovies-timestamp.dat ไปยังบัคเก็ตของคุณภายใต้โฟลเดอร์ดิบ
- บนคอนโซล AWS Glue Studio ให้เลือก งาน ในบานหน้าต่างนำทาง
- เลือก ภาพที่มีแหล่งที่มาและเป้าหมายแล้วเลือก สร้างบัญชีตัวแทน.
- เลือกโหนดแรกที่เรียกว่า แหล่งข้อมูล – S3 bucket. นี่คือที่ที่เราระบุข้อมูลอินพุตของเรา
- เกี่ยวกับ คุณสมบัติแหล่งข้อมูล เลือก ที่ตั้ง S3 และเรียกดูไฟล์ที่คุณอัปโหลด
- สำหรับ รูปแบบข้อมูลเลือก CSVและสำหรับ คั่นเลือก แถบ.
- เราสามารถเลือกแท็บ Output schema เพื่อตรวจสอบว่า schema อนุมานคอลัมน์ได้ถูกต้องหรือไม่
- หากสคีมาไม่ตรงกับความคาดหวังของคุณ ให้เลือก Edit เพื่อแก้ไขสคีมา
ต่อไป เราแปลงข้อมูลนี้เพื่อให้เป็นไปตามข้อกำหนดของสคีมาสำหรับ Amazon Personalize
- เลือก แปลง – ใช้การทำแผนที่ โหนดและบน แปลง แท็บ อัปเดตคีย์เป้าหมายและประเภทข้อมูล
อย่างน้อยที่สุด Amazon Personalize คาดหวังโครงสร้างต่อไปนี้สำหรับ ชุดข้อมูลการโต้ตอบ:
ในตัวอย่างนี้ เราไม่รวมภาพยนตร์ที่มีเรทต่ำในชุดข้อมูล
- ในการดำเนินการดังกล่าว ให้ลบโหนดสุดท้ายที่เรียกว่าบัคเก็ต S3 และเพิ่มโหนดตัวกรองบน แปลง แถบ
- Choose เพิ่ม สภาพ และกรองข้อมูลที่ให้คะแนน < 3.5
ตอนนี้เราเขียนผลลัพธ์กลับไปที่ Amazon S3
- ขยาย เป้า เมนูและเลือก Amazon S3.
- สำหรับ ตำแหน่งเป้าหมาย S3, เลือกโฟลเดอร์ที่ชื่อ
transformed
. - Choose CSV เป็นรูปแบบและคำต่อท้าย ที่ตั้งเป้าหมาย กับ
interactions/
.
ต่อไป เราแสดงรายชื่อผู้ใช้ที่เราต้องการรับคำแนะนำ
- เลือก ใช้การทำแผนที่ โหนดอีกครั้งแล้วขยาย แปลง เมนูและเลือก ใช้การทำแผนที่.
- วางทุกช่องยกเว้นสำหรับ
user_id
และเปลี่ยนชื่อฟิลด์นั้นเป็นuserId
. Amazon Personalize คาดว่าฟิลด์นั้นจะถูกตั้งชื่อ รหัสผู้ใช้. - ขยาย เป้า เมนูอีกครั้งและเลือก Amazon S3.
- คราวนี้เลือก JSON เป็นรูปแบบแล้วเลือกโฟลเดอร์ S3 ที่แปลงแล้วและต่อท้ายด้วย
batch_users_input/
.
สิ่งนี้ทำให้เกิด JSON รายชื่อผู้ใช้ที่เป็นอินพุตสำหรับ Amazon Personalize ตอนนี้เราควรจะมีไดอะแกรมที่มีลักษณะดังนี้
ตอนนี้เราพร้อมที่จะรันงานการแปลงของเราแล้ว
- บนคอนโซล IAM ให้สร้างบทบาทที่เรียกว่า glue-service-role และแนบนโยบายที่มีการจัดการต่อไปนี้:
AWSGlueServiceRole
AmazonS3FullAccess
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างบทบาทบริการ IAM โปรดดูที่ การสร้างบทบาทเพื่อมอบสิทธิ์ให้กับบริการของ AWS.
- กลับไปที่งาน AWS Glue Studio และเลือก รายละเอียดงาน แถบ
- ตั้งชื่องานเป็น
batch-personalize-input-transform-job
. - เลือกบทบาท IAM ที่สร้างขึ้นใหม่
- เก็บค่าดีฟอลต์ไว้สำหรับอย่างอื่น
- Choose ลด.
- พร้อมเมื่อไหร่ก็เลือก วิ่ง และติดตามงานใน วิ่ง แถบ
- เมื่องานเสร็จสมบูรณ์ ให้ไปที่คอนโซล Amazon S3 เพื่อตรวจสอบว่าไฟล์เอาต์พุตของคุณสร้างสำเร็จแล้ว
ตอนนี้เราได้จัดรูปแบบข้อมูลของเราให้อยู่ในรูปแบบและโครงสร้างที่ Amazon Personalize ต้องการ ชุดข้อมูลที่แปลงแล้วควรมีฟิลด์และรูปแบบต่อไปนี้:
- ชุดข้อมูลการโต้ตอบ – รูปแบบ CSV พร้อมช่อง
USER_ID
,ITEM_ID
,TIMESTAMP
- ผู้ใช้ป้อนข้อมูลชุดข้อมูล – รูปแบบ JSON พร้อมองค์ประกอบ
userId
สร้างโซลูชัน Amazon Personalize ด้วยชุดข้อมูลที่แปลงแล้ว
ด้วยชุดข้อมูลการโต้ตอบและข้อมูลอินพุตของผู้ใช้ในรูปแบบที่ถูกต้อง เราจึงสามารถสร้างโซลูชัน Amazon Personalize ได้ ในส่วนนี้ เราสร้างกลุ่มชุดข้อมูล นำเข้าข้อมูล และจากนั้นสร้างงานการอนุมานแบบแบตช์ กลุ่มชุดข้อมูลจัดระเบียบทรัพยากรลงในคอนเทนเนอร์สำหรับส่วนประกอบ Amazon Personalize
- บนคอนโซล Amazon Personalize ให้เลือก สร้างบัญชีตัวแทน กลุ่มชุดข้อมูล.
- สำหรับ โดเมนให้เลือก ประเพณี.
- Choose สร้างกลุ่มชุดข้อมูลและดำเนินการต่อ.
ถัดไป สร้างชุดข้อมูลการโต้ตอบ
ตอนนี้เรานำเข้าข้อมูลการโต้ตอบที่เราได้สร้างไว้ก่อนหน้านี้
- ไปที่บัคเก็ต S3 ที่เราสร้างชุดข้อมูล CSV การโต้ตอบของเรา
- เกี่ยวกับ สิทธิ์ เพิ่มนโยบายการเข้าถึงบัคเก็ตต่อไปนี้เพื่อให้ Amazon Personalize เข้าถึงได้ อัปเดตนโยบายเพื่อรวมชื่อที่เก็บข้อมูลของคุณ
กลับไปที่ Amazon Personalize แล้วเลือก สร้างงานนำเข้าชุดข้อมูลของคุณ. ตอนนี้ควรนำเข้าชุดข้อมูลการโต้ตอบของเราไปยัง Amazon Personalize รอให้งานนำเข้าเสร็จสมบูรณ์ด้วยสถานะ "ใช้งานอยู่" ก่อนดำเนินการต่อในขั้นตอนต่อไป ควรใช้เวลาประมาณ 8 นาที
- บนคอนโซล Amazon Personalize ให้เลือก ขององค์กร ในบานหน้าต่างนำทางแล้วเลือก สร้างโซลูชัน.
- ป้อนชื่อโซลูชัน
- สำหรับ ประเภทโซลูชันเลือก รายการแนะนำ.
- สำหรับ ตำรับ, เลือก
aws-user-personalization
สูตรอาหาร. - Choose สร้างและฝึกอบรมโซลูชัน.
ตอนนี้โซลูชันฝึกกับชุดข้อมูลการโต้ตอบที่นำเข้าด้วยสูตรการปรับให้เป็นส่วนตัวของผู้ใช้ ตรวจสอบสถานะของกระบวนการนี้ภายใต้ เวอร์ชันโซลูชัน. รอให้เสร็จก่อนดำเนินการต่อ ควรใช้เวลาประมาณ 20 นาที
ตอนนี้เราสร้างงานการอนุมานแบบแบตช์ ซึ่งสร้างคำแนะนำสำหรับผู้ใช้แต่ละรายที่อยู่ในอินพุต JSON
- ในบานหน้าต่างนำทาง ภายใต้ ทรัพยากรที่กำหนดเองเลือก งานอนุมานแบบแบตช์.
- ป้อนชื่องานและสำหรับ Solutionให้เลือกโซลูชันที่สร้างไว้ก่อนหน้านี้
- Choose สร้างงานการอนุมานแบบแบตช์.
- สำหรับ การกำหนดค่าข้อมูลอินพุตป้อนเส้นทาง S3 ที่
batch_users_input
ไฟล์ตั้งอยู่
นี่คือไฟล์ JSON ที่มี userId
.
- สำหรับ การกำหนดค่าข้อมูลเอาต์พุต เส้นทางเลือกเส้นทางที่ดูแลจัดการใน S3
- Choose สร้างงานการอนุมานแบบแบตช์.
ขั้นตอนนี้ใช้เวลาประมาณ 30 นาที เมื่องานเสร็จสิ้น คำแนะนำสำหรับผู้ใช้แต่ละรายที่ระบุในไฟล์อินพุตของผู้ใช้จะถูกบันทึกไว้ในตำแหน่งเอาต์พุต S3
เราได้สร้างชุดคำแนะนำสำหรับผู้ใช้ทั้งหมดของเราเรียบร้อยแล้ว อย่างไรก็ตาม เราได้ใช้โซลูชันนี้โดยใช้คอนโซลเท่านั้น เพื่อให้แน่ใจว่าการอนุมานแบทช์นี้ทำงานเป็นประจำด้วยชุดข้อมูลล่าสุด เราจำเป็นต้องสร้างเวิร์กโฟลว์การประสาน ในส่วนถัดไป เราจะแสดงวิธีสร้างเวิร์กโฟลว์การประสานโดยใช้ Step Functions
สร้างเวิร์กโฟลว์ Step Functions เพื่อจัดการเวิร์กโฟลว์การอนุมานแบบแบตช์
ในการจัดวางไปป์ไลน์ของคุณ ให้ทำตามขั้นตอนต่อไปนี้:
- บนคอนโซล Step Functions ให้เลือก สร้างเครื่องสถานะ.
- เลือก ออกแบบเวิร์กโฟลว์ของคุณด้วยภาพแล้วเลือก ถัดไป.
- ลาก
CreateDatasetImportJob
โหนดจากด้านซ้าย (คุณสามารถค้นหาโหนดนี้ในช่องค้นหา) ลงบนผืนผ้าใบ - เลือกโหนด และคุณควรเห็นพารามิเตอร์การกำหนดค่า API ทางด้านขวา บันทึก ARN
- ป้อนค่าของคุณเองใน พารามิเตอร์ API กล่องข้อความ.
สิ่งนี้เรียกว่า สร้างชุดข้อมูลนำเข้างาน API ที่มีค่าพารามิเตอร์ที่คุณระบุ
- ลาก
CreateSolutionVersion
โหนดลงบนผืนผ้าใบ - อัปเดตพารามิเตอร์ API ด้วย ARN ของโซลูชันที่คุณจดบันทึกไว้
สิ่งนี้สร้างเวอร์ชันโซลูชันใหม่พร้อมข้อมูลที่นำเข้าใหม่โดยการเรียก CreateSolutionVersion API
- ลาก
CreateBatchInferenceJob
โหนดบนผืนผ้าใบและอัปเดตพารามิเตอร์ API ในทำนองเดียวกันด้วยค่าที่เกี่ยวข้อง
ตรวจสอบให้แน่ใจว่าคุณใช้ $.SolutionVersionArn
ไวยากรณ์เพื่อดึงพารามิเตอร์ ARN เวอร์ชันโซลูชันจากขั้นตอนก่อนหน้า พารามิเตอร์ API เหล่านี้ถูกส่งไปยัง CreateBatchInferenceงาน API
เราจำเป็นต้องสร้างตรรกะการรอในเวิร์กโฟลว์ Step Functions เพื่อให้แน่ใจว่างานการอนุมานแบบกลุ่มคำแนะนำจะเสร็จสิ้นก่อนที่เวิร์กโฟลว์จะเสร็จสมบูรณ์
- ค้นหาและลากในโหนดรอ
- ในการกำหนดค่าสำหรับ รอป้อน 300 วินาที
นี่เป็นค่าที่กำหนดขึ้นเอง คุณควรเปลี่ยนเวลารอนี้ตามกรณีการใช้งานเฉพาะของคุณ
- เลือก
CreateBatchInferenceJob
โหนดอีกครั้งและไปที่ การจัดการข้อผิดพลาด แถบ - สำหรับ จับ ข้อผิดพลาดป้อน
Personalize.ResourceInUseException
. - สำหรับ สถานะทางเลือกเลือก รอ.
ขั้นตอนนี้ช่วยให้เราตรวจสอบสถานะของงานได้เป็นระยะ และออกจากลูปเมื่องานเสร็จสมบูรณ์เท่านั้น
- สำหรับ เส้นทางผลลัพธ์ป้อน
$.errorMessage
.
นี่หมายความว่าเมื่อได้รับข้อยกเว้น "ทรัพยากรที่ใช้งานอยู่" งานจะรอ x วินาทีก่อนที่จะลองอีกครั้งด้วยอินพุตเดียวกัน
- Choose ลดแล้วเลือก เริ่มปฏิบัติการ.
เราได้จัดเตรียมไปป์ไลน์การแนะนำแบบกลุ่มสำหรับ Amazon Personalize เรียบร้อยแล้ว คุณสามารถใช้ อเมซอน EventBridge เพื่อกำหนดเวลาทริกเกอร์ของเวิร์กโฟลว์นี้เป็นประจำ ดูรายละเอียดเพิ่มเติมได้ที่ EventBridge (เหตุการณ์ CloudWatch) สำหรับการเปลี่ยนแปลงสถานะการดำเนินการของ Step Functions.
ทำความสะอาด
เพื่อหลีกเลี่ยงค่าใช้จ่ายในอนาคต ให้ลบทรัพยากรที่คุณสร้างขึ้นสำหรับคำแนะนำนี้
สรุป
ในโพสต์นี้ เราสาธิตวิธีสร้างไปป์ไลน์การแนะนำแบบกลุ่มโดยใช้การรวมกันของ AWS Glue, Amazon Personalize และ Step Functions โดยไม่ต้องใช้โค้ดหรือประสบการณ์ ML แม้แต่บรรทัดเดียว เราใช้ AWS Glue เพื่อเตรียมข้อมูลของเราให้อยู่ในรูปแบบที่ Amazon Personalize ต้องการ จากนั้นเราใช้ Amazon Personalize เพื่อนำเข้าข้อมูล สร้างโซลูชันด้วยสูตรการปรับให้เป็นส่วนตัวของผู้ใช้ และสร้างงานการอนุมานแบบกลุ่มที่สร้างคำแนะนำเริ่มต้น 25 รายการสำหรับผู้ใช้แต่ละราย โดยอิงจากการโต้ตอบที่ผ่านมา จากนั้นเราจัดการขั้นตอนเหล่านี้โดยใช้ Step Functions เพื่อให้เราสามารถเรียกใช้งานเหล่านี้ได้โดยอัตโนมัติ
สำหรับขั้นตอนที่ต้องพิจารณาต่อไป การแบ่งกลุ่มผู้ใช้เป็นหนึ่งในสูตรใหม่ใน Amazon Personalize ซึ่งคุณอาจต้องการสำรวจเพื่อสร้างกลุ่มผู้ใช้สำหรับแต่ละแถวของข้อมูลที่ป้อน ดูรายละเอียดเพิ่มเติมได้ที่ รับคำแนะนำแบทช์และเซ็กเมนต์ผู้ใช้.
เกี่ยวกับผู้เขียน
แม็กซีน วี เป็นสถาปนิกโซลูชัน AWS Data Lab Maxine ทำงานร่วมกับลูกค้าเกี่ยวกับกรณีการใช้งาน ออกแบบโซลูชันเพื่อแก้ปัญหาทางธุรกิจ และแนะนำพวกเขาผ่านการสร้างต้นแบบที่ปรับขนาดได้ ก่อนเดินทางกับ AWS Maxine ช่วยลูกค้าปรับใช้ BI, คลังข้อมูล และโครงการ Data Lake ในออสเตรเลีย
- ขั้นสูง (300)
- AI
- ไอ อาร์ต
- เครื่องกำเนิดไออาร์ท
- หุ่นยนต์ไอ
- ปรับแต่ง Amazon
- ปัญญาประดิษฐ์
- ใบรับรองปัญญาประดิษฐ์
- ปัญญาประดิษฐ์ในการธนาคาร
- หุ่นยนต์ปัญญาประดิษฐ์
- หุ่นยนต์ปัญญาประดิษฐ์
- ซอฟต์แวร์ปัญญาประดิษฐ์
- AWS กาว
- AWS Machine Learning AWS
- blockchain
- การประชุม blockchain ai
- เหรียญอัจฉริยะ
- ปัญญาประดิษฐ์สนทนา
- การประชุม crypto ai
- ดัล-อี
- การเรียนรู้ลึก ๆ
- google ai
- เรียนรู้เครื่อง
- เพลโต
- เพลโตไอ
- เพลโตดาต้าอินเทลลิเจนซ์
- เกมเพลโต
- เพลโตดาต้า
- เพลโตเกม
- ขนาดไอ
- วากยสัมพันธ์
- วิธีการทางเทคนิค
- ลมทะเล