1. ภาพรวม
ยินดีต้อนรับสู่ Codelab การเพิ่มประสิทธิภาพสำหรับการซื้อในแอปแบบเรียลไทม์ ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ TensorFlow Lite และ Firebase เพื่อฝึกและใช้งานโมเดลการปรับเปลี่ยนในแบบของคุณที่กำหนดเองกับแอปของคุณ
บทแนะนำนี้จะแสดงวิธีสร้างโมเดลแมชชีนเลิร์นนิงสำหรับการปรับเปลี่ยนในแบบของผู้ใช้ โดยเฉพาะโมเดลคาดการณ์ข้อเสนอการซื้อในแอป (IAP) ที่เหมาะสมที่สุดโดยพิจารณาจากสถานะของผู้ใช้ปัจจุบัน นี่คือตัวอย่างของปัญหาการทดสอบแบบสล็อตแมชชีน ซึ่งเป็นปัญหาที่สำคัญและเกี่ยวข้องในวงกว้างของปัญหาแมชชีนเลิร์นนิง ซึ่งคุณจะได้เรียนรู้เพิ่มเติมใน 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 ใหม่สำหรับ Codelab นี้ก็ได้ หากต้องการความช่วยเหลือในการเริ่มต้นใช้งาน Firebase โปรดดูบทแนะนำของเราในหัวข้อนี้ ( Android และ iOS)
5. รวบรวมเหตุการณ์การวิเคราะห์ในแอป
เหตุการณ์ใน Analytics ให้ข้อมูลเชิงลึกเกี่ยวกับพฤติกรรมของผู้ใช้ และใช้ในการฝึกโมเดล ML ตัวอย่างเช่น โมเดลอาจเรียนรู้ว่าผู้ใช้ที่เล่นนานๆ มีแนวโน้มที่จะซื้อ IAP เพื่อให้มีชีวิตมากขึ้น โมเดล ML ต้องใช้เหตุการณ์การวิเคราะห์เป็นอินพุตเพื่อเรียนรู้ข้อมูลนี้
เหตุการณ์ข้อมูลวิเคราะห์บางอย่างที่เราอาจต้องการบันทึกไว้มีดังนี้
- ระยะเวลาที่ผู้ใช้เล่นเกม
- ผู้ใช้อยู่ในระดับใด
- จำนวนเหรียญที่ผู้ใช้ใช้
- สินค้าที่ผู้ใช้ซื้อ
ดาวน์โหลดข้อมูลตัวอย่าง (ไม่บังคับ)
ในขั้นตอนต่อไปนี้ เราจะใช้ Firebase Analytics ในการบันทึกเหตุการณ์การวิเคราะห์เพื่อใช้ในโมเดลของเรา หากคุณมีข้อมูลวิเคราะห์ที่ต้องการใช้อยู่แล้ว ให้ข้ามไปที่ "ฝึกรูปแบบการเพิ่มประสิทธิภาพ" ของ Codelab นี้ และคุณสามารถติดตามไปพร้อมกับข้อมูลตัวอย่างของเราได้
รวบรวมข้อมูลด้วย Firebase Analytics SDK
เราจะใช้ Firebase Analytics เพื่อช่วยรวบรวมเหตุการณ์ Analytics เหล่านี้ Firebase Analytics SDK จะบันทึกเหตุการณ์และพร็อพเพอร์ตี้ผู้ใช้จำนวนหนึ่งโดยอัตโนมัติ และยังช่วยให้คุณกําหนดเหตุการณ์ที่กําหนดเองของตัวเองเพื่อวัดเหตุการณ์ซึ่งเป็นเหตุการณ์เฉพาะของแอปได้อีกด้วย
การติดตั้ง Firebase Analytics SDK
คุณสามารถเริ่มต้นใช้งาน Firebase Analytics ในแอปได้โดยทำตามเอกสารเริ่มต้นใช้งาน Google Analytics ที่เก็บ firebase-iap-optimization
ที่โคลนตอนเริ่มต้นของ Codelab นี้มี Firebase Analytics SDK อยู่แล้ว
บันทึกเหตุการณ์ที่กำหนดเอง
หลังจากตั้งค่า Firebase Analytics SDK แล้ว เราจะเริ่มบันทึกเหตุการณ์ที่จำเป็นต่อการฝึกโมเดลของเรา
แต่ก่อนที่จะดำเนินการดังกล่าว คุณควรตั้งค่า User-ID ในเหตุการณ์ Analytics เพื่อที่เราจะได้เชื่อมโยงข้อมูลวิเคราะห์ของผู้ใช้รายนั้นกับข้อมูลที่มีอยู่ในแอปได้
MainActivity.kt
firebaseAnalytics.setUserId("player1")
ถัดไป เราสามารถบันทึกเหตุการณ์ของผู้เล่น สำหรับการเพิ่มประสิทธิภาพ IAP เราต้องการบันทึกแต่ละข้อเสนอ IAP ที่แสดงให้ผู้ใช้เห็นและผู้ใช้คลิกข้อเสนอนั้นหรือไม่ วิธีนี้จะแสดงเหตุการณ์ Analytics 2 รายการ คือ offer_iap
และ offer_accepted
นอกจากนี้ เราจะติดตาม Offerwall ที่ไม่ซ้ำกันเพื่อที่เราจะได้ใช้ในภายหลังในการรวมข้อมูลเหล่านี้เข้าด้วยกันเพื่อดูว่ามีการยอมรับข้อเสนอหรือไม่
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 ที่ผู้ใช้คลิก ในขั้นตอนนี้ เราจะรวมข้อมูลเหตุการณ์นี้เข้ากับข้อมูลผู้ใช้ เพื่อให้โมเดลของเราเรียนรู้จากภาพรวมที่สมบูรณ์ได้
ในการดำเนินการดังกล่าว เราจะต้องเริ่มต้นด้วยการส่งออกเหตุการณ์ Analytics ไปยัง BigQuery
ลิงก์โปรเจ็กต์ Firebase กับ BigQuery
วิธีลิงก์โปรเจ็กต์ Firebase และแอปกับ BigQuery
- ลงชื่อเข้าใช้ Firebase
- คลิก จากนั้นเลือก "การตั้งค่าโปรเจ็กต์"
- คลิกแท็บการผสานรวมในหน้าการตั้งค่าโปรเจ็กต์
- คลิกลิงก์ในการ์ด BigQuery
(ไม่บังคับ) ส่งออกคอลเล็กชัน Firestore ไปยัง BigQuery
ในขั้นตอนนี้ คุณจะมีตัวเลือกในการส่งออกข้อมูลผู้ใช้เพิ่มเติมจาก Firestore ไปยัง BigQuery เพื่อช่วยฝึกโมเดล หากต้องการข้ามขั้นตอนนี้ไปก่อน ให้ข้ามไปที่ "การเตรียมข้อมูลใน BigQuery" ของ Codelab นี้และคุณติดตามเหตุการณ์ Firebase Analytics ที่บันทึกไว้ในขั้นตอนสุดท้ายได้
Firestore อาจเป็นที่ที่คุณเก็บข้อมูลผู้ใช้ไว้ วันที่ลงชื่อสมัครใช้ การซื้อในแอป ระดับในเกม เหรียญคงเหลือ หรือแอตทริบิวต์อื่นๆ ที่อาจเป็นประโยชน์ในการฝึกโมเดล
หากต้องการส่งออกคอลเล็กชัน Firestore ไปยัง BigQuery คุณติดตั้งส่วนขยาย BigQuery Export ของ Firestore ได้ จากนั้นเข้าร่วมตารางใน BigQuery เพื่อรวมข้อมูลนี้กับข้อมูลจาก Google Analytics เพื่อใช้ในโมเดลการปรับเปลี่ยนในแบบของคุณและส่วนที่เหลือของ Codelab นี้
การเตรียมข้อมูลใน 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" หรือข้อมูลตัวอย่างที่ดาวน์โหลดได้ที่ระบุไว้ที่นี่ เพื่อติดตามข้อมูลที่เหลือของ Codelab นี้
คำจำกัดความของปัญหา
ก่อนที่เราจะเริ่มต้นการฝึกโมเดล เรามาใช้เวลากำหนดปัญหาแบบสล็อตแมชชีนกันก่อน
คำอธิบายการทดสอบแบบสล็อตแมชชีน
ในช่วงเริ่มต้นของแต่ละเลเวลใน Flappy Sparky ผู้ใช้จะได้รับข้อเสนอ IAP ที่จะเพิ่มพลังให้ เราแสดงตัวเลือก IAP ได้ 1 ตัวเลือกในแต่ละครั้งเท่านั้น และไม่ทราบว่าตัวเลือกใดจะมี Conversion ที่ดีที่สุด เนื่องจากผู้ใช้แต่ละคนและแต่ละเซสชันมีความแตกต่างกัน เราจะหาข้อเสนอ IAP ที่ให้รางวัลสูงสุดที่คาดไว้ได้อย่างไร
ในกรณีนี้ ลองให้รางวัลเป็น 0 หากผู้ใช้ไม่ยอมรับข้อเสนอ IAP และกำหนดมูลค่า IAP หากผู้ใช้ยอมรับ เราสามารถใช้ข้อมูลย้อนหลังของเราเพื่อฝึกรูปแบบที่คาดการณ์รางวัลที่คาดว่าจะได้รับจากการกระทำของผู้ใช้แต่ละรายการ และหาการดำเนินการที่มีรางวัลสูงสุด เพื่อพยายามเพิ่มรางวัลของคุณให้ได้สูงสุด
ต่อไปนี้เป็นสิ่งที่เราจะใช้ในการคาดการณ์
- สถานะ: ข้อมูลเกี่ยวกับผู้ใช้และเซสชันปัจจุบัน
- การดำเนินการ: ข้อเสนอ IAP ที่เราเลือกให้แสดงได้
- รางวัล: มูลค่าของข้อเสนอ IAP
การแสวงหาประโยชน์เทียบกับการสำรวจ
สำหรับปัญหาการทดสอบแบบสล็อตแมชชีนทั้งหมด อัลกอริทึมจะต้องสร้างความสมดุลระหว่างการสำรวจ (การรับข้อมูลเพิ่มเติมเพื่อดูว่าการกระทำใดให้ผลลัพธ์ที่ดีที่สุด) กับการแสวงหาประโยชน์ (การใช้ผลลัพธ์ที่ดีที่สุดเพื่อให้ได้รับรางวัลสูงสุด)
ในปัญหาเวอร์ชันของเรา เราจะลดความซับซ้อนในการฝึกโมเดลเป็นระยะๆ ในระบบคลาวด์และทำการคาดการณ์เฉพาะเมื่อใช้โมเดลในอุปกรณ์ของผู้ใช้เท่านั้น (ตรงข้ามกับการฝึกในอุปกรณ์ของผู้ใช้ด้วย) เพื่อให้แน่ใจว่าเรามีข้อมูลการฝึกเพียงพอหลังจากที่ใช้โมเดลนี้ เราจะต้องแสดงผลลัพธ์แบบสุ่มแก่ผู้ใช้แอปเป็นบางครั้ง (เช่น 30%) กลยุทธ์การสร้างสมดุลระหว่างการสำรวจและการแสวงหาประโยชน์นี้เรียกว่า Epsilon-greedy
การฝึกโมเดล
คุณใช้สคริปต์การฝึก (training.ipynb
) ที่มาพร้อมกับ Codelab เพื่อเริ่มต้นใช้งานได้ เป้าหมายของเราคือการฝึกโมเดลที่จะคาดการณ์รางวัลที่คาดไว้สำหรับแต่ละการดำเนินการในสถานะหนึ่งๆ จากนั้นเราก็พบการดำเนินการที่มอบรางวัลที่คาดไว้สูงสุดให้กับเรา
การฝึกอบรมในเครื่อง
วิธีที่ง่ายที่สุดในการเริ่มต้นการฝึกโมเดลของคุณเองคือการทำสำเนาสมุดบันทึกในตัวอย่างโค้ดสำหรับ Codelab นี้
คุณไม่จำเป็นต้องใช้ GPU สำหรับ Codelab นี้ แต่หากต้องการเครื่องที่มีประสิทธิภาพกว่าเดิมเพื่อสำรวจข้อมูลของตนเองและฝึกโมเดลของคุณเอง คุณอาจรับอินสแตนซ์ AI Platform Notebook เพื่อเร่งการฝึกให้เร็วขึ้น
ในสคริปต์การฝึกที่มีให้ เราได้สร้างตัวทำซ้ำที่สร้างข้อมูลการฝึกจากไฟล์ CSV ที่เราส่งออกมาจาก BigQuery จากนั้นจึงใช้ข้อมูลนั้นเริ่มฝึกโมเดลด้วย Keras ดูรายละเอียดวิธีฝึกโมเดลได้ในความคิดเห็นของสมุดบันทึก Python
วัดประสิทธิภาพโมเดล
ขณะฝึกโมเดล เราจะเปรียบเทียบโมเดลกับเอเจนต์แบบสุ่มที่เลือกข้อเสนอ IAP แบบสุ่มเพื่อดูว่าโมเดลของเรากำลังเรียนรู้อยู่หรือไม่ ตรรกะนี้อยู่ภายใต้ ValidationCallback
.
เมื่อสิ้นสุดการฝึก เราใช้ข้อมูลใน test.csv
เพื่อทดสอบโมเดลอีกครั้ง โมเดลนี้ไม่เคยเห็นข้อมูลเหล่านี้มาก่อน เราจึงมั่นใจได้ว่าผลลัพธ์ไม่ได้เกิดจากการปรับมากเกินไป ในกรณีนี้ โมเดลจะมีประสิทธิภาพดีกว่า Agent แบบสุ่ม 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 คุณสามารถทำตาม Codelab ของเพิ่ม 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% จากทั้งหมด)
การกำหนดค่าไปป์ไลน์สำหรับการฝึกและการทำให้ใช้งานได้ด้วยข้อมูลใหม่อยู่นอกเหนือขอบเขตของ Codelab นี้ โปรดดูที่ Google Cloud AI Platform และ TFX เพื่อเริ่มต้นใช้งาน
10. ยินดีด้วย
ใน Codelab คุณได้เรียนรู้วิธีฝึกและทำให้โมเดล TFLite ในอุปกรณ์ใช้งานได้สำหรับการเพิ่มประสิทธิภาพการซื้อในแอปโดยใช้ Firebase หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับ TFLite และ Firebase โปรดดูตัวอย่าง TFLite อื่นๆ และคู่มือเริ่มต้นใช้งาน Firebase
หากมีข้อสงสัย โปรดฝากคำถามไว้ที่ Stack Overflow #firebase-machine-learning
สรุปประเด็นที่ได้พูดถึง
- TensorFlow Lite
- Firebase ML
- Firebase Analytics
- BigQuery
ขั้นตอนถัดไป
- ฝึกและทำให้โมเดลเครื่องมือเพิ่มประสิทธิภาพใช้งานได้สำหรับแอปของคุณ