Codelab การเพิ่มประสิทธิภาพการซื้อในแอปในอุปกรณ์แบบเรียลไทม์

1. ภาพรวม

1cbf855eda62c306.png

ยินดีต้อนรับสู่ 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

รีโปนี้ประกอบด้วย

  1. สมุดบันทึก Jupyter (.ipynb) ที่ฝึกโมเดลการปรับตามโปรไฟล์ของผู้ใช้และแพ็กเกจเป็นโมเดล TFLite
  2. ตัวอย่างแอป 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

  1. ลงชื่อเข้าใช้ Firebase
  2. คลิก ไอคอนการตั้งค่า แล้วเลือกการตั้งค่าโปรเจ็กต์
  3. คลิกแท็บการผสานรวมในหน้าการตั้งค่าโปรเจ็กต์
  4. คลิกลิงก์ในการ์ด 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 เพื่อให้ใช้ชุดข้อมูลดังกล่าวในการฝึกโมเดลได้

888daa7ba4db8e44.png

14d22bf474fae455.png

7. ฝึกโมเดลการเพิ่มประสิทธิภาพ

ข้อมูลตัวอย่าง

ใช้ข้อมูลจากขั้นตอนก่อนหน้า "เตรียมข้อมูลใน BigQuery ล่วงหน้า" หรือข้อมูลตัวอย่างที่ดาวน์โหลดได้ที่นี่เพื่อทําตามขั้นตอนที่เหลือในโค้ดแล็บนี้

คําจํากัดความของปัญหา

ก่อนที่จะเริ่มฝึกโมเดล เรามาใช้เวลาสักครู่เพื่อกําหนดปัญหาโจรขโมยตามบริบทกัน

คําอธิบายโจรตามบริบท

ในช่วงเริ่มต้นของแต่ละด่านใน Flappy Sparky ระบบจะแสดงข้อเสนอ IAP ที่จะช่วยให้ผู้ใช้มีไอเทมเพิ่มพลัง เราแสดงตัวเลือก IAP ได้เพียงครั้งละ 1 รายการเท่านั้น และไม่ทราบว่าจะเลือกตัวเลือกใดเพื่อให้ได้ Conversion ที่ดีที่สุด เมื่อผู้ใช้แต่ละรายและแต่ละเซสชันแตกต่างกัน เราจะค้นหาข้อเสนอ IAP ที่ให้รางวัลสูงสุดที่คาดไว้ได้อย่างไร

ในกรณีนี้ ให้กำหนดรางวัลเป็น 0 หากผู้ใช้ไม่ยอมรับข้อเสนอ IAP และกำหนดเป็นมูลค่า IAP หากผู้ใช้ยอมรับข้อเสนอดังกล่าว เราจะใช้ข้อมูลย้อนหลังเพื่อฝึกโมเดลที่คาดการณ์รางวัลที่คาดไว้สำหรับการกระทำแต่ละรายการของผู้ใช้ และค้นหาการกระทำที่ให้รางวัลสูงสุดเพื่อพยายามเพิ่มรางวัลให้สูงสุด

e7d3264141498bff.jpeg

ต่อไปนี้คือสิ่งที่เราจะใช้ในการคาดการณ์

  • สถานะ: ข้อมูลเกี่ยวกับผู้ใช้และเซสชันปัจจุบันของผู้ใช้
  • การดำเนินการ: ข้อเสนอ 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 ประการหลักๆ ดังนี้

  1. เราทำให้ขนาดการติดตั้งแอปมีขนาดเล็กและดาวน์โหลดโมเดลเฉพาะเมื่อจำเป็นได้
  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 ที่ดีที่สุดสำหรับผู้ใช้รายนี้

a3381dbcdbdf811e.png

วัดความแม่นยำของโมเดล

หากต้องการวัดความแม่นยําของโมเดล เราเพียงต้องติดตามข้อเสนอ 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

ขั้นตอนถัดไป

  • ฝึกและติดตั้งใช้งานโมเดลการเพิ่มประสิทธิภาพสําหรับแอป

ดูข้อมูลเพิ่มเติม