1. ภาพรวม
ยินดีต้อนรับสู่ Codelab การเพิ่มประสิทธิภาพการซื้อในแอปบนอุปกรณ์แบบเรียลไทม์ ในโค้ดแล็บนี้ คุณจะได้เรียนรู้วิธีใช้ TensorFlow Lite และ Firebase เพื่อฝึกและทำให้โมเดลการปรับตามโปรไฟล์ของผู้ใช้ที่กำหนดเองใช้งานได้ในแอป
บทแนะนํานี้จะแสดงวิธีสร้างโมเดลแมชชีนเลิร์นนิงสําหรับการปรับให้เหมาะกับผู้ใช้ โดยเฉพาะโมเดลที่คาดการณ์ข้อเสนอการซื้อในแอป (IAP) ที่ดีที่สุดตามสถานะของผู้ใช้ปัจจุบัน นี่เป็นตัวอย่างโจทย์แบบ Bandit ตามบริบท ซึ่งเป็นโจทย์แมชชีนเลิร์นนิงที่สําคัญและนําไปใช้ได้กว้างขวาง ซึ่งคุณจะได้เรียนรู้เพิ่มเติมใน Codelab นี้
สิ่งที่คุณจะได้เรียนรู้
- รวบรวมข้อมูลวิเคราะห์ผ่าน Firebase Analytics
- ประมวลผลข้อมูลวิเคราะห์ล่วงหน้าโดยใช้ BigQuery
- ฝึกโมเดล ML แบบง่ายสําหรับการเพิ่มประสิทธิภาพการซื้อในแอป (IAP) ในอุปกรณ์
- ติดตั้งใช้งานโมเดล TFLite ใน Firebase ML และเข้าถึงโมเดลเหล่านั้นจากแอป
- วัดผลและทดสอบรูปแบบต่างๆ ผ่าน Firebase A/B Testing
- ฝึกและทำให้โมเดลใหม่ใช้งานได้โดยใช้ข้อมูลล่าสุดตามช่วงเวลาที่กําหนด
สิ่งที่ต้องมี
- Android Studio เวอร์ชัน 3.4 ขึ้นไป
- อุปกรณ์ทดสอบจริงที่ใช้ Android 2.3 ขึ้นไปและบริการ Google Play 9.8 ขึ้นไป หรือโปรแกรมจำลองที่ใช้บริการ Google Play 9.8 ขึ้นไป
- หากใช้อุปกรณ์ทดสอบจริง ให้ใช้สายเชื่อมต่อ
- ความรู้เบื้องต้นเกี่ยวกับ ML
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์การสร้างแอป Android ว่าอย่างไร
2. คำอธิบายปัญหา
สมมติว่าคุณเป็นนักพัฒนาเกมที่ต้องการแสดงคำแนะนำการซื้อในแอป (IAP) ที่ปรับตามโปรไฟล์ของผู้ใช้เมื่อสิ้นสุดแต่ละด่าน คุณแสดงตัวเลือก IAP ได้เพียงไม่กี่รายการในแต่ละครั้ง และคุณไม่รู้ว่าตัวเลือกใดจะให้ Conversion ดีที่สุด เมื่อผู้ใช้แต่ละรายและแต่ละเซสชันแตกต่างกัน เราจะค้นหาข้อเสนอ IAP ที่ให้รางวัลสูงสุดที่คาดไว้ได้อย่างไร
3. รับโค้ดตัวอย่าง
โคลนที่เก็บ GitHub จากบรรทัดคำสั่ง
git clone https://github.com/googlecodelabs/firebase-iap-optimization.git
รีโปนี้ประกอบด้วย
- สมุดบันทึก Jupyter (.ipynb) ที่ฝึกโมเดลการปรับตามโปรไฟล์ของผู้ใช้และแพ็กเกจเป็นโมเดล TFLite
- ตัวอย่างแอป Kotlin ที่ใช้โมเดล TFLite เพื่อทำนายในอุปกรณ์
4. เรียกใช้แอปด้วย Firebase
ใน Codelab นี้ เราจะเพิ่มประสิทธิภาพ IAP ของแอปเกมสมมติชื่อ Flappy Sparky เกมนี้เป็นเกมแนวเลื่อนไปด้านข้างที่ผู้เล่นควบคุม Sparky เพื่อพยายามบินผ่านเสากำแพงโดยไม่ชน ในช่วงเริ่มต้นของด่าน ผู้ใช้จะเห็นข้อเสนอ IAP ที่จะให้ไอเทมเสริม เราจะติดตั้งใช้งานเฉพาะส่วนการเพิ่มประสิทธิภาพ IAP ของแอปใน Codelab นี้
คุณสามารถนำสิ่งที่ได้เรียนรู้ที่นี่ไปใช้กับแอปของคุณเองที่เชื่อมต่อกับโปรเจ็กต์ Firebase หรือจะสร้างโปรเจ็กต์ Firebase ใหม่สําหรับโค้ดแล็บนี้ก็ได้ หากต้องการความช่วยเหลือในการเริ่มต้นใช้งาน Firebase โปรดดูบทแนะนําในหัวข้อนี้ ( Android และ iOS)
5. รวบรวมเหตุการณ์การวิเคราะห์ในแอป
เหตุการณ์ Analytics ให้ข้อมูลเชิงลึกเกี่ยวกับพฤติกรรมของผู้ใช้ และใช้ในการฝึกโมเดล ML เช่น โมเดลอาจเรียนรู้ว่าผู้ใช้ที่เล่นนานขึ้นมีแนวโน้มที่จะซื้อ IAP เพื่อรับชีวิตเพิ่ม โมเดล ML ต้องใช้เหตุการณ์การวิเคราะห์เป็นอินพุตเพื่อเรียนรู้ข้อมูลนี้
เหตุการณ์การวิเคราะห์บางอย่างที่เราอาจต้องการบันทึก ได้แก่
- ระยะเวลาที่ผู้ใช้เล่นเกม
- ระดับที่ผู้ใช้เข้าถึง
- จำนวนเหรียญที่ผู้ใช้ใช้จ่าย
- สินค้าที่ผู้ใช้ซื้อ
ดาวน์โหลดข้อมูลตัวอย่าง (ไม่บังคับ)
ในขั้นตอนต่อไปนี้ เราจะใช้ Firebase Analytics เพื่อบันทึกเหตุการณ์การวิเคราะห์เพื่อใช้ในโมเดล หากมีข้อมูลวิเคราะห์ที่ต้องการใช้อยู่แล้ว ให้ข้ามไปที่ส่วน "ฝึกโมเดลการเพิ่มประสิทธิภาพ" ของโค้ดแล็บนี้ แล้วทําตามตัวอย่างข้อมูลของเรา
รวบรวมข้อมูลด้วย Firebase Analytics SDK
เราจะใช้ Firebase Analytics เพื่อช่วยรวบรวมเหตุการณ์การวิเคราะห์เหล่านี้ Firebase Analytics SDK จะบันทึกเหตุการณ์และพร็อพเพอร์ตี้ผู้ใช้จํานวนหนึ่งโดยอัตโนมัติ นอกจากนี้ คุณยังกําหนดเหตุการณ์ที่กําหนดเองเพื่อวัดเหตุการณ์ที่ไม่ซ้ำกันสําหรับแอปของคุณได้ด้วย
การติดตั้ง Firebase Analytics SDK
คุณเริ่มต้นใช้งาน Firebase Analytics ในแอปได้โดยทําตามเอกสารประกอบเกี่ยวกับการเริ่มต้นใช้งาน Google Analytics ที่เก็บข้อมูล firebase-iap-optimization
ที่โคลนไว้ตอนต้นของโค้ดแล็บนี้มี SDK ของ Firebase Analytics อยู่แล้ว
บันทึกเหตุการณ์ที่กําหนดเอง
หลังจากตั้งค่า Firebase Analytics SDK แล้ว เราจะเริ่มบันทึกเหตุการณ์ที่จําเป็นสําหรับการฝึกโมเดลได้
ก่อนที่จะทําเช่นนั้น คุณต้องตั้งค่ารหัสผู้ใช้ในเหตุการณ์ Analytics เพื่อให้เราเชื่อมโยงข้อมูลวิเคราะห์ของผู้ใช้รายนั้นกับข้อมูลที่มีอยู่ในแอปได้
MainActivity.kt
firebaseAnalytics.setUserId("player1")
ต่อไปเราจะบันทึกเหตุการณ์ของผู้เล่นได้ สําหรับการเพิ่มประสิทธิภาพ IAP เราต้องการบันทึกข้อเสนอ IAP แต่ละรายการที่แสดงต่อผู้ใช้ และบันทึกว่าผู้ใช้คลิกข้อเสนอนั้นหรือไม่ ซึ่งจะให้เหตุการณ์ Analytics 2 รายการ ได้แก่ offer_iap
และ offer_accepted
นอกจากนี้ เราจะติดตาม offer_id ที่ไม่ซ้ำกันด้วยเพื่อใช้รวมข้อมูลเหล่านี้ในภายหลังเพื่อดูว่าข้อเสนอได้รับการยอมรับหรือไม่
MainActivity.kt
predictButton?.setOnClickListener {
predictionResult = iapOptimizer.predict()
firebaseAnalytics.logEvent("offer_iap"){
param("offer_type", predictionResult)
param("offer_id", sessionId)
}
}
acceptButton?.setOnClickListener {
firebaseAnalytics.logEvent("offer_accepted") {
param("offer_type", predictionResult)
param("offer_id", sessionId)
}
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับการบันทึกเหตุการณ์ที่กําหนดเองได้ที่เอกสารประกอบเกี่ยวกับเหตุการณ์ในบันทึกของ Firebase Analytics
6. ประมวลผลข้อมูลล่วงหน้าใน BigQuery
ในขั้นตอนสุดท้ายนี้ เรารวบรวมเหตุการณ์เกี่ยวกับข้อเสนอ IAP ที่แสดงต่อผู้ใช้และข้อเสนอ IAP ที่ผู้ใช้คลิก ในขั้นตอนนี้ เราจะรวมข้อมูลเหตุการณ์นี้เข้ากับข้อมูลผู้ใช้เพื่อให้โมเดลเรียนรู้จากภาพรวมที่สมบูรณ์
ในการดําเนินการนี้ เราจะต้องเริ่มด้วยการส่งออกเหตุการณ์การวิเคราะห์ไปยัง BigQuery
ลิงก์โปรเจ็กต์ Firebase กับ BigQuery
วิธีลิงก์โปรเจ็กต์ Firebase และแอปกับ BigQuery
- ลงชื่อเข้าใช้ Firebase
- คลิก
แล้วเลือกการตั้งค่าโปรเจ็กต์
- คลิกแท็บการผสานรวมในหน้าการตั้งค่าโปรเจ็กต์
- คลิกลิงก์ในการ์ด BigQuery
(ไม่บังคับ) ส่งออกคอลเล็กชัน Firestore ไปยัง BigQuery
ในขั้นตอนนี้ คุณจะมีตัวเลือกในการส่งออกข้อมูลผู้ใช้เพิ่มเติมจาก Firestore ไปยัง BigQuery เพื่อใช้ช่วยฝึกโมเดล หากต้องการข้ามขั้นตอนนี้ในตอนนี้ ให้ข้ามไปที่ส่วน "การเตรียมข้อมูลใน BigQuery" ของโค้ดแล็บนี้ แล้วทําตามขั้นตอนต่างๆ กับเหตุการณ์ Firebase Analytics ที่บันทึกไว้ในขั้นตอนสุดท้าย
Firestore อาจเป็นที่ที่คุณจัดเก็บวันที่ลงชื่อสมัครใช้ของผู้ใช้ การซื้อในแอป ระดับในเกม ยอดคงเหลือของเหรียญ หรือแอตทริบิวต์อื่นๆ ที่อาจมีประโยชน์ในการฝึกโมเดล
หากต้องการส่งออกคอลเล็กชัน Firestore ไปยัง BigQuery ให้ติดตั้งส่วนขยาย BigQuery Export ของ Firestore จากนั้นรวมตารางใน BigQuery เพื่อรวมข้อมูลนี้เข้ากับข้อมูลจาก Google Analytics เพื่อใช้ในโมเดลการปรับเปลี่ยนในแบบของคุณและตลอดทั้งโค้ดแล็บนี้
การเตรียมข้อมูลใน BigQuery
ในอีก 2-3 ขั้นตอนข้างหน้า เราจะใช้ BigQuery เพื่อเปลี่ยนรูปแบบข้อมูลวิเคราะห์ดิบให้เป็นข้อมูลที่นําไปใช้ฝึกโมเดลได้
เราต้องจัดระเบียบข้อมูลต่อไปนี้เพื่อให้โมเดลเรียนรู้ว่าควรแสดงข้อเสนอ IAP รายการใดตามผู้ใช้และสถานะเกม
- ผู้ใช้
- สถานะในเกม
- ข้อเสนอที่นำเสนอ
- มีการคลิกข้อเสนอที่แสดงหรือไม่
ข้อมูลทั้งหมดนี้จะต้องจัดระเบียบเป็นแถวเดียวในตารางเพื่อให้โมเดลของเราประมวลผลได้ แต่โชคดีที่ BigQuery ตั้งค่ามาให้ทำสิ่งนั้น
BigQuery อนุญาตให้สร้าง "มุมมอง" เพื่อจัดระเบียบการค้นหา มุมมองคือตารางเสมือนจริงที่กําหนดโดยการค้นหา SQL เมื่อสร้างมุมมอง คุณจะค้นหามุมมองในลักษณะเดียวกับการค้นหาตาราง การใช้วิธีนี้จะช่วยให้เราล้างข้อมูลวิเคราะห์ได้ก่อน
หากต้องการดูว่ามีการคลิกข้อเสนอการซื้อในแอปแต่ละรายการหรือไม่ เราจะต้องรวมเหตุการณ์ offer_iap
และ offer_accepted
ที่เราบันทึกไว้ในขั้นตอนก่อนหน้า
all_offers_joined - มุมมอง BigQuery
SELECT
iap_offers.*,
CASE
WHEN accepted_offers.accepted IS NULL THEN FALSE ELSE TRUE
END
is_clicked,
FROM
`iap-optimization.ml_sample.accepted_offers` AS accepted_offers
RIGHT JOIN
`iap-optimization.ml_sample.iap_offers` AS iap_offers
ON
accepted_offers.offer_id =iap_offers.offer_id;
all_offers_with_user_data - มุมมอง BigQuery
SELECT
offers.is_clicked,
offers.presented_powerup,
offers.last_run_end_reason,
offers.event_timestamp,
users.*
FROM
`iap-optimization.ml_sample.all_offers_joined` AS offers
LEFT JOIN
`iap-optimization.ml_sample.all_users` AS users
ON
users.user_id = offers.user_id;
ส่งออกชุดข้อมูล BigQuery ไปยัง Google Cloud Storage
สุดท้าย เราสามารถส่งออกชุดข้อมูล BigQuery ไปยัง GCS เพื่อให้ใช้ชุดข้อมูลดังกล่าวในการฝึกโมเดลได้
7. ฝึกโมเดลการเพิ่มประสิทธิภาพ
ข้อมูลตัวอย่าง
ใช้ข้อมูลจากขั้นตอนก่อนหน้า "เตรียมข้อมูลใน BigQuery ล่วงหน้า" หรือข้อมูลตัวอย่างที่ดาวน์โหลดได้ที่นี่เพื่อทําตามขั้นตอนที่เหลือในโค้ดแล็บนี้
คําจํากัดความของปัญหา
ก่อนที่จะเริ่มฝึกโมเดล เรามาใช้เวลาสักครู่เพื่อกําหนดปัญหาโจรขโมยตามบริบทกัน
คําอธิบายโจรตามบริบท
ในช่วงเริ่มต้นของแต่ละด่านใน Flappy Sparky ระบบจะแสดงข้อเสนอ IAP ที่จะช่วยให้ผู้ใช้มีไอเทมเพิ่มพลัง เราแสดงตัวเลือก IAP ได้เพียงครั้งละ 1 รายการเท่านั้น และไม่ทราบว่าจะเลือกตัวเลือกใดเพื่อให้ได้ Conversion ที่ดีที่สุด เมื่อผู้ใช้แต่ละรายและแต่ละเซสชันแตกต่างกัน เราจะค้นหาข้อเสนอ IAP ที่ให้รางวัลสูงสุดที่คาดไว้ได้อย่างไร
ในกรณีนี้ ให้กำหนดรางวัลเป็น 0 หากผู้ใช้ไม่ยอมรับข้อเสนอ IAP และกำหนดเป็นมูลค่า IAP หากผู้ใช้ยอมรับข้อเสนอดังกล่าว เราจะใช้ข้อมูลย้อนหลังเพื่อฝึกโมเดลที่คาดการณ์รางวัลที่คาดไว้สำหรับการกระทำแต่ละรายการของผู้ใช้ และค้นหาการกระทำที่ให้รางวัลสูงสุดเพื่อพยายามเพิ่มรางวัลให้สูงสุด
ต่อไปนี้คือสิ่งที่เราจะใช้ในการคาดการณ์
- สถานะ: ข้อมูลเกี่ยวกับผู้ใช้และเซสชันปัจจุบันของผู้ใช้
- การดำเนินการ: ข้อเสนอ IAP ที่เราเลือกแสดงได้
- รางวัล: มูลค่าของข้อเสนอ IAP
การแสวงหาประโยชน์กับการสํารวจ
สําหรับปัญหาโจรหลายแขนทั้งหมด อัลกอริทึมต้องรักษาสมดุลระหว่างการสํารวจ (การรวบรวมข้อมูลเพิ่มเติมเพื่อดูว่าการดำเนินการใดให้ผลลัพธ์ที่ดีที่สุด) กับการใช้ (การใช้ผลลัพธ์ที่ดีที่สุดเพื่อให้ได้รางวัลสูงสุด)
ในเวอร์ชันของปัญหานี้ เราจะลดความซับซ้อนให้เหลือเพียงการฝึกโมเดลเป็นระยะๆ ในระบบคลาวด์และทำการคาดการณ์เฉพาะเมื่อใช้โมเดลในอุปกรณ์ของผู้ใช้เท่านั้น (ไม่ใช่การฝึกในอุปกรณ์ของผู้ใช้ด้วย) เราจะแสดงผลการค้นหาแบบสุ่มต่อผู้ใช้แอปในบางครั้ง (เช่น 30%) เพื่อให้แน่ใจว่าเรามีข้อมูลการฝึกอบรมเพียงพอหลังจากใช้โมเดล กลยุทธ์ในการหาจุดสมดุลระหว่างการสํารวจกับการใช้เรียกว่า Epsilon-greedy
การฝึกโมเดล
คุณสามารถใช้สคริปต์การฝึกอบรม (training.ipynb
) ที่มาพร้อมกับ Codelab เพื่อเริ่มต้นใช้งาน เป้าหมายของเราคือการฝึกโมเดลที่จะคาดการณ์รางวัลที่คาดไว้สําหรับการดําเนินการแต่ละรายการโดยพิจารณาจากสถานะ จากนั้นเราจะค้นหาการดําเนินการที่ให้รางวัลที่คาดไว้สูงสุด
การฝึกอบรมในพื้นที่
วิธีที่ง่ายที่สุดในการเริ่มต้นฝึกโมเดลของคุณเองคือทำสำเนาของโน้ตบุ๊กในตัวอย่างโค้ดสําหรับ Codelab นี้
คุณไม่จำเป็นต้องใช้ GPU สําหรับโค้ดแล็บนี้ แต่หากต้องการใช้เครื่องที่มีประสิทธิภาพมากขึ้นเพื่อสํารวจข้อมูลของคุณเองและฝึกโมเดลของคุณเอง คุณก็ขออินสแตนซ์ AI Platform Notebook เพื่อเร่งความเร็วในการฝึกได้
ในสคริปต์การฝึกที่เราให้ไว้ เราได้สร้างตัวดำเนินการวนซ้ำที่สร้างข้อมูลการฝึกจากไฟล์ CSV ที่เราส่งออกจาก BigQuery จากนั้นเราใช้ข้อมูลดังกล่าวเพื่อเริ่มฝึกโมเดลด้วย Keras ดูรายละเอียดเกี่ยวกับวิธีฝึกโมเดลได้ในความคิดเห็นของโน้ตบุ๊ค Python
วัดประสิทธิภาพของโมเดล
ขณะฝึกโมเดล เราจะเปรียบเทียบกับตัวแทนแบบสุ่มที่เลือกข้อเสนอ IAP แบบสุ่มเพื่อดูว่าโมเดลของเราเรียนรู้จริงหรือไม่ ตรรกะนี้จะอยู่ใน ValidationCallback
.
เมื่อสิ้นสุดการฝึก เราจะใช้ข้อมูลใน test.csv
เพื่อทดสอบโมเดลอีกครั้ง โมเดลไม่เคยเห็นข้อมูลเหล่านี้มาก่อน เราจึงมั่นใจได้ว่าผลลัพธ์ไม่ได้เกิดจากการประมาณมากเกินไป ในกรณีนี้ โมเดลมีประสิทธิภาพดีกว่าตัวแทนแบบสุ่ม 28%
ส่งออกโมเดล TFLite
ตอนนี้เรามีโมเดลที่ผ่านการฝึกแล้วพร้อมใช้งาน ยกเว้นว่าตอนนี้โมเดลอยู่ในรูปแบบ TensorFlow เราจะต้องส่งออกโมเดลเป็นรูปแบบ TFLite เพื่อให้เรียกใช้ในอุปกรณ์เคลื่อนที่ได้
train.ipynb
converter = tflite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with tf.io.gfile.GFile('iap-optimizer.tflite', 'wb') as f:
f.write(tflite_model)
จากที่นี่ คุณสามารถดาวน์โหลดโมเดลและรวมโมเดลกับแอปของคุณได้
สําหรับแอปเวอร์ชันที่ใช้งานจริง เราขอแนะนําให้ทําให้โมเดลใช้งานได้ใน Firebase ML และขอให้ Firebase โฮสต์โมเดลของคุณ (ไม่บังคับ) ซึ่งมีประโยชน์ใน 2 ประการหลักๆ ดังนี้
- เราทำให้ขนาดการติดตั้งแอปมีขนาดเล็กและดาวน์โหลดโมเดลเฉพาะเมื่อจำเป็นได้
- โมเดลสามารถอัปเดตเป็นประจำและตามรอบการเผยแพร่ที่แตกต่างจากทั้งแอป
หากต้องการดูวิธีทำให้โมเดลใช้งานได้ใน Firebase ML ให้ทําตามโค้ดแล็บเพิ่ม Firebase ลงในแอป Android ที่ทำงานด้วย TFLite คุณมีตัวเลือกในการติดตั้งใช้งานโดยใช้คอนโซล Firebase หรือ Python API
8. การทำนายในอุปกรณ์
ขั้นตอนถัดไปคือการคาดการณ์โดยใช้โมเดลในอุปกรณ์ คุณดูแอปตัวอย่างที่ดาวน์โหลดโมเดลจาก Firebase ML ได้ในโฟลเดอร์ app
ของโค้ดตัวอย่างที่คุณดาวน์โหลดมา และใช้แอปดังกล่าวเพื่อทำการอนุมานกับข้อมูลฝั่งไคลเอ็นต์บางส่วน
เนื่องจากเราใช้การประมวลผลข้อมูลล่วงหน้าบางอย่างระหว่างการฝึกโมเดล เราจึงต้องใช้การประมวลผลข้อมูลล่วงหน้าเดียวกันกับอินพุตของโมเดลเมื่อใช้งานในอุปกรณ์ วิธีง่ายๆ ในการทำเช่นนี้คือการใช้รูปแบบที่ไม่ขึ้นอยู่กับแพลตฟอร์มและภาษา เช่น ไฟล์ JSON ที่มีแผนที่ของฟีเจอร์ทั้งหมดไปยังข้อมูลเมตาเกี่ยวกับวิธีดำเนินการประมวลผลข้อมูลล่วงหน้า ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีดำเนินการได้ในแอปตัวอย่าง
ถัดไป เราจะป้อนข้อมูลทดสอบต่อไปนี้ให้กับโมเดล
IapOptimzer.kt
val testInput = mapOf(
"coins_spent" to 2048f,
"distance_avg" to 1234f,
"device_os" to "ANDROID",
"game_day" to 10f,
"geo_country" to "Canada",
"last_run_end_reason" to "laser"
)
โมเดลนี้แนะนำว่า sparky_armor
เป็นไอเทมเสริม IAP ที่ดีที่สุดสำหรับผู้ใช้รายนี้
วัดความแม่นยำของโมเดล
หากต้องการวัดความแม่นยําของโมเดล เราเพียงต้องติดตามข้อเสนอ IAP ที่โมเดลคาดการณ์ไว้และดูว่ามีการคลิกข้อเสนอเหล่านั้นหรือไม่โดยใช้ Firebase Analytics คุณสามารถใช้ข้อมูลนี้ร่วมกับ Firebase A/B Testing เพื่อวัดประสิทธิภาพจริงของโมเดลได้ นอกจากนี้ คุณยังทำการทดสอบ A/B กับโมเดลเวอร์ชันต่างๆ ได้ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบ A/B ด้วย Firebase ได้ในเอกสารประกอบสร้างการทดสอบการกําหนดค่าระยะไกลของ Firebase พร้อมการทดสอบ A/B
9. (ไม่บังคับ): การอัปเดตรูปแบบด้วยข้อมูลใหม่เป็นประจำ
หากต้องการอัปเดตรูปแบบเมื่อมีข้อมูลใหม่เข้ามา คุณสามารถตั้งค่าไปป์ไลน์เพื่อฝึกรูปแบบใหม่เป็นระยะๆ ได้ โดยก่อนอื่นคุณต้องตรวจสอบว่าคุณมีข้อมูลใหม่ที่จะใช้ฝึกโดยใช้กลยุทธ์ epsilon-greedy ที่เราพูดถึงข้างต้น (เช่น ใช้ผลการคาดการณ์ของโมเดล 70% ของเวลา และใช้ผลการสุ่ม 30% ของเวลา)
การกำหนดค่าไปป์ไลน์สำหรับการฝึกและการนำไปใช้กับข้อมูลใหม่อยู่นอกขอบเขตของโค้ดแล็บนี้ คุณสามารถดูแพลตฟอร์ม AI ของ Google Cloud และ TFX เพื่อเริ่มต้นใช้งาน
10. ยินดีด้วย
ในโค้ดแล็บนี้ คุณได้เรียนรู้วิธีฝึกและทำให้โมเดล TFLite ในอุปกรณ์ใช้งานได้เพื่อเพิ่มประสิทธิภาพการซื้อในแอปโดยใช้ Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับ TFLite และ Firebase ได้ที่ตัวอย่าง TFLite อื่นๆ และคู่มือการเริ่มต้นใช้งาน Firebase
หากมีข้อสงสัย โปรดโพสต์ถามที่ Stack Overflow #firebase-machine-learning
สิ่งที่เราได้พูดถึงไปแล้ว
- TensorFlow Lite
- Firebase ML
- Firebase Analytics
- BigQuery
ขั้นตอนถัดไป
- ฝึกและติดตั้งใช้งานโมเดลการเพิ่มประสิทธิภาพสําหรับแอป