1. खास जानकारी
डिवाइस पर रीयल-टाइम में इन-ऐप्लिकेशन खरीदारी को ऑप्टिमाइज़ करने वाले कोडलैब में आपका स्वागत है. इस कोडलैब में, आपको अपने ऐप्लिकेशन में उपयोगकर्ताओं के हिसाब से कॉन्टेंट दिखाने वाले कस्टम मॉडल को ट्रेन करने और उसे डिप्लॉय करने के लिए, TensorFlow Lite और Firebase का इस्तेमाल करने का तरीका पता चलेगा.
इस ट्यूटोरियल में, उपयोगकर्ताओं के हिसाब से कॉन्टेंट बनाने के लिए मशीन लर्निंग मॉडल बनाने का तरीका बताया गया है. खास तौर पर, ऐसा मॉडल जो मौजूदा उपयोगकर्ता की स्थिति के हिसाब से, इन-ऐप्लिकेशन खरीदारी (IAP) के लिए सबसे सही ऑफ़र का अनुमान लगाता है. यह कॉन्टेक्स्टुअल बैंडिट समस्या का एक उदाहरण है. यह मशीन लर्निंग की एक अहम और ज़्यादातर मामलों में लागू होने वाली समस्या है. इस बारे में ज़्यादा जानने के लिए, इस कोडलैब को देखें
आपको क्या सीखने को मिलेगा
- Firebase Analytics की मदद से आंकड़ों का डेटा इकट्ठा करना
- BigQuery का इस्तेमाल करके, आंकड़ों के डेटा को पहले से प्रोसेस करना
- इन-ऐप्लिकेशन खरीदारी (IAPs) को डिवाइस पर ऑप्टिमाइज़ करने के लिए, एक आसान एमएल मॉडल को ट्रेन करना
- Firebase ML में TFLite मॉडल डिप्लॉय करना और उन्हें अपने ऐप्लिकेशन से ऐक्सेस करना
- Firebase A/B टेस्टिंग की मदद से, अलग-अलग मॉडल को मेज़र करना और उन पर एक्सपेरिमेंट करना
- नए डेटा का इस्तेमाल करके, समय-समय पर नए मॉडल को ट्रेन करना और उन्हें डिप्लॉय करना
आपको इन चीज़ों की ज़रूरत होगी
- Android Studio का 3.4 या इसके बाद का वर्शन
- Android 2.3 और Google Play services 9.8 या उसके बाद के वर्शन वाला टेस्ट डिवाइस या Google Play services 9.8 या उसके बाद के वर्शन वाला एमुलेटर
- अगर टेस्टिंग के लिए किसी फ़िज़िकल डिवाइस का इस्तेमाल किया जा रहा है, तो कनेक्शन केबल
- एमएल के बारे में कम जानकारी
इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?
Android ऐप्लिकेशन बनाने के अपने अनुभव को क्या रेटिंग देंगे?
2. समस्या का ब्यौरा
मान लें कि आप एक गेम डेवलपर हैं और आपको हर लेवल के आखिर में, उपयोगकर्ताओं के हिसाब से इन-ऐप्लिकेशन खरीदारी (IAP) के सुझाव दिखाने हैं. हर बार सिर्फ़ सीमित संख्या में आईएपी विकल्प दिखाए जा सकते हैं. साथ ही, यह पता नहीं होता कि किन विकल्पों से सबसे अच्छा कन्वर्ज़न मिलेगा. हर उपयोगकर्ता और हर सेशन अलग-अलग होता है. ऐसे में, हम सबसे ज़्यादा इनाम देने वाला आईएपी ऑफ़र कैसे ढूंढें?
3. सैंपल कोड पाना
कमांड लाइन से GitHub रिपॉज़िटरी को क्लोन करें.
git clone https://github.com/googlecodelabs/firebase-iap-optimization.git
इस repo में ये चीज़ें शामिल हैं:
- Jupyter notebook (.ipynb), जो मनमुताबिक़ बनाने वाले मॉडल को ट्रेनिंग देता है और उसे TFLite मॉडल में पैकेज करता है
- Kotlin का एक सैंपल ऐप्लिकेशन, जो डिवाइस पर अनुमान लगाने के लिए TFLite मॉडल का इस्तेमाल करता है
4. Firebase की मदद से ऐप्लिकेशन चलाना
इस कोडलैब में, हम अपने काल्पनिक गेम ऐप्लिकेशन - Flappy Sparky के आईएपी को ऑप्टिमाइज़ करने पर काम करेंगे. यह एक साइड-स्क्रोलर गेम है. इसमें खिलाड़ी, स्पार्की को कंट्रोल करता है. उसे दीवारों के कॉलम के बीच से बिना किसी दीवार से टकराए उड़ना होता है. लेवल की शुरुआत में, उपयोगकर्ता को IAP का एक ऑफ़र दिया जाता है. इस ऑफ़र से उसे पावरअप मिलता है. इस कोडलैब में, हम ऐप्लिकेशन के सिर्फ़ IAP ऑप्टिमाइज़ेशन वाले हिस्से को लागू करेंगे.
यहां आपको जो जानकारी मिलेगी उसे Firebase प्रोजेक्ट से कनेक्ट किए गए अपने ऐप्लिकेशन पर लागू किया जा सकता है. इसके अलावा, इस कोडलैब के लिए नया Firebase प्रोजेक्ट भी बनाया जा सकता है. अगर आपको Firebase का इस्तेमाल शुरू करने में मदद चाहिए, तो कृपया इस विषय पर हमारे ट्यूटोरियल देखें ( Android और iOS).
5. अपने ऐप्लिकेशन में आंकड़ों से जुड़े इवेंट इकट्ठा करना
Analytics इवेंट, उपयोगकर्ता के व्यवहार के बारे में अहम जानकारी देते हैं. साथ ही, इनका इस्तेमाल एमएल मॉडल को ट्रेन करने के लिए किया जाता है. उदाहरण के लिए, मॉडल को पता चल सकता है कि ज़्यादा देर तक खेलने वाले उपयोगकर्ता, अतिरिक्त लाइफ़ पाने के लिए IAP करने की संभावना ज़्यादा रखते हैं. इस जानकारी को जानने के लिए, एमएल मॉडल को इनपुट के तौर पर आंकड़ों के इवेंट की ज़रूरत होती है.
हम कुछ ऐसे आंकड़ों के इवेंट को लॉग करना चाह सकते हैं जिनमें ये शामिल हैं:
- उपयोगकर्ता गेम को कितनी देर तक खेलता है
- उपयोगकर्ता किस लेवल तक पहुंचता है
- उपयोगकर्ता ने कितने सिक्के खर्च किए
- उपयोगकर्ता कौनसे आइटम खरीदता है
सैंपल डेटा डाउनलोड करें (ज़रूरी नहीं)
नीचे दिए गए चरणों में, हम अपने मॉडल में इस्तेमाल करने के लिए, Analytics इवेंट को लॉग करने के लिए Firebase Analytics का इस्तेमाल करेंगे. अगर आपके पास पहले से ही ऐसा आंकड़ों का डेटा है जिसका इस्तेमाल करना है, तो इस कोडलैब के "ऑप्टिमाइज़ेशन मॉडल को ट्रेन करें" सेक्शन पर जाएं. इसके बाद, हमारे सैंपल डेटा का इस्तेमाल करके आगे की प्रोसेस को पूरा करें.
Firebase Analytics SDK टूल की मदद से डेटा इकट्ठा करना
हम इन आंकड़ों से जुड़े इवेंट इकट्ठा करने के लिए, Firebase Analytics का इस्तेमाल करेंगे. Firebase Analytics SDK टूल, कई इवेंट और उपयोगकर्ता प्रॉपर्टी को अपने-आप कैप्चर करता है. इसकी मदद से, अपने ऐप्लिकेशन के लिए खास इवेंट मेज़र करने के लिए, कस्टम इवेंट भी बनाए जा सकते हैं.
Firebase Analytics SDK टूल इंस्टॉल करना
अपने ऐप्लिकेशन में Firebase Analytics का इस्तेमाल शुरू करने के लिए, Google Analytics का इस्तेमाल शुरू करने से जुड़े दस्तावेज़ में दिया गया तरीका अपनाएं. इस कोडलैब की शुरुआत में क्लोन किए गए firebase-iap-optimization
रिपॉज़िटरी में, Firebase Analytics SDK टूल पहले से ही शामिल है.
कस्टम इवेंट लॉग करना
Firebase Analytics SDK टूल सेट अप करने के बाद, हम अपने मॉडल को ट्रेन करने के लिए ज़रूरी इवेंट लॉग करना शुरू कर सकते हैं.
ऐसा करने से पहले, Analytics इवेंट में User-ID सेट करना ज़रूरी है, ताकि हम उस उपयोगकर्ता के Analytics डेटा को ऐप्लिकेशन में मौजूद उसके मौजूदा डेटा से जोड़ सकें.
MainActivity.kt
firebaseAnalytics.setUserId("player1")
इसके बाद, हम खिलाड़ी के इवेंट लॉग कर सकते हैं. आईएपी को ऑप्टिमाइज़ करने के लिए, हम उपयोगकर्ता को दिखाए गए हर आईएपी ऑफ़र को लॉग करना चाहते हैं. साथ ही, यह भी देखना चाहते हैं कि उपयोगकर्ता ने उस ऑफ़र पर क्लिक किया है या नहीं. इससे हमें दो आंकड़े वाले इवेंट - 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 ऑफ़र पर क्लिक किया. इस चरण में, हम इस इवेंट डेटा को उपयोगकर्ता डेटा के साथ जोड़ेंगे, ताकि हमारा मॉडल पूरी जानकारी से सीख सके.
इसके लिए, हमें Analytics इवेंट को BigQuery में एक्सपोर्ट करना होगा.
अपने Firebase प्रोजेक्ट को BigQuery से लिंक करना
अपने Firebase प्रोजेक्ट और उसके ऐप्लिकेशन को BigQuery से लिंक करने के लिए:
- Firebase में साइन इन करें.
पर क्लिक करें. इसके बाद, प्रोजेक्ट सेटिंग चुनें.
- प्रोजेक्ट सेटिंग पेज पर, इंटीग्रेशन टैब पर क्लिक करें.
- BigQuery कार्ड पर, जोड़ें पर क्लिक करें.
(ज़रूरी नहीं) अपने Firestore कलेक्शन को BigQuery में एक्सपोर्ट करना
इस चरण में, आपके पास Firestore से BigQuery में उपयोगकर्ता का अतिरिक्त डेटा एक्सपोर्ट करने का विकल्प होता है. इसका इस्तेमाल, मॉडल को ट्रेन करने में किया जाता है. अगर आपको फ़िलहाल यह चरण छोड़ना है, तो इस कोडलैब के "BigQuery में डेटा तैयार करना" सेक्शन पर जाएं. इसके बाद, पिछले चरण में लॉग किए गए Firebase Analytics इवेंट को फ़ॉलो किया जा सकता है.
हो सकता है कि आपने Firestore में उपयोगकर्ताओं के साइनअप की तारीख, इन-ऐप्लिकेशन खरीदारी, गेम के लेवल, बैलेंस में मौजूद सिक्के या मॉडल को ट्रेनिंग देने में काम आने वाले अन्य एट्रिब्यूट सेव किए हों.
अपने Firestore कलेक्शन को BigQuery में एक्सपोर्ट करने के लिए, Firestore BigQuery Export एक्सटेंशन इंस्टॉल करें. इसके बाद, BigQuery में टेबल को जॉइन करें, ताकि इस डेटा को Google Analytics के डेटा के साथ जोड़ा जा सके. इस डेटा का इस्तेमाल, उपयोगकर्ताओं के हिसाब से कॉन्टेंट दिखाने वाले मॉडल और इस कोडलैब के बाकी हिस्सों में किया जाएगा.
BigQuery में डेटा तैयार करना
अगले कुछ चरणों में, हम अपने रॉ Analytics डेटा को मॉडल को ट्रेनिंग देने के लिए इस्तेमाल किए जा सकने वाले डेटा में बदलने के लिए, BigQuery का इस्तेमाल करेंगे.
हमारा मॉडल, उपयोगकर्ता और गेम की स्थिति के आधार पर यह तय कर सके कि कौनसा आईएपी ऑफ़र दिखाना है, इसके लिए हमें इनके बारे में डेटा व्यवस्थित करना होगा:
- उपयोगकर्ता
- गेम की स्थिति
- दिखाया गया ऑफ़र
- दिखाए गए ऑफ़र पर क्लिक किया गया है या नहीं
हमारे मॉडल को यह डेटा प्रोसेस करने के लिए, इसे टेबल में एक लाइन में व्यवस्थित करना होगा. सौभाग्य से, BigQuery को इस काम के लिए सेट अप किया गया है.
BigQuery में "व्यू" बनाने की सुविधा होती है, ताकि आपकी क्वेरी व्यवस्थित रह सके. व्यू, एक वर्चुअल टेबल होती है, जिसे एसक्यूएल क्वेरी के आधार पर तय किया जाता है. व्यू बनाते समय, उससे क्वेरी करने का तरीका वही होता है जिस तरह टेबल से क्वेरी की जाती है. इसका इस्तेमाल करके, हम अपने Analytics डेटा को पहले क्लीन कर सकते हैं.
यह देखने के लिए कि हर इन-ऐप्लिकेशन खरीदारी के ऑफ़र पर क्लिक किया गया है या नहीं, हमें उन 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 ऑफ़र स्वीकार नहीं करता है, तो इनाम को 0 पर सेट करें. अगर उपयोगकर्ता IAP ऑफ़र स्वीकार करता है, तो इनाम को IAP की वैल्यू पर सेट करें. इनाम को ज़्यादा से ज़्यादा करने के लिए, हम अपने पुराने डेटा का इस्तेमाल करके एक मॉडल को ट्रेन कर सकते हैं. यह मॉडल, उपयोगकर्ता की हर कार्रवाई के लिए मिलने वाले इनाम का अनुमान लगाता है और सबसे ज़्यादा इनाम वाली कार्रवाई का पता लगाता है.
हम इन चीज़ों का इस्तेमाल अनुमान लगाने के लिए करेंगे:
- स्टेटस: उपयोगकर्ता और उसके मौजूदा सेशन के बारे में जानकारी
- कार्रवाई: IAP के ऐसे ऑफ़र जिन्हें हम दिखाने का विकल्प चुन सकते हैं
- इनाम: आईएपी ऑफ़र की वैल्यू
एक्सप्लोरेशन बनाम एक्सप्लॉइटेशन
मल्टी-आर्म बैंडिट समस्याओं के लिए, एल्गोरिदम को एक्सप्लोरेशन (यह जानने के लिए ज़्यादा डेटा इकट्ठा करना कि कौनसी कार्रवाई से सबसे अच्छा नतीजा मिलता है) और एक्सप्लॉइटेशन (सबसे ज़्यादा इनाम पाने के लिए सबसे अच्छे नतीजे का इस्तेमाल करना) के बीच संतुलन बनाए रखना होता है.
हम इस समस्या को हल करने के लिए, मॉडल को समय-समय पर क्लाउड में ट्रेनिंग देंगे. साथ ही, उपयोगकर्ता के डिवाइस पर मॉडल का इस्तेमाल करने पर ही अनुमान लगाएंगे. ऐसा इसलिए, क्योंकि मॉडल को उपयोगकर्ता के डिवाइस पर भी ट्रेनिंग दी जा सकती है. मॉडल का इस्तेमाल करने के बाद, यह पक्का करने के लिए कि हमारे पास ट्रेनिंग के लिए ज़रूरत के मुताबिक डेटा है, हमें कभी-कभी अपने ऐप्लिकेशन के उपयोगकर्ताओं को रैंडमाइज़ किए गए नतीजे दिखाने होंगे. उदाहरण के लिए, 30%. एक्सप्लोरेशन और एक्सप्लॉइटेशन को संतुलित करने की इस रणनीति को एप्सिलॉन-ग्रीडी कहा जाता है.
मॉडल को ट्रेनिंग देना
शुरू करने के लिए, कोडलैब में दी गई ट्रेनिंग स्क्रिप्ट (training.ipynb
) का इस्तेमाल किया जा सकता है. हमारा लक्ष्य एक ऐसे मॉडल को ट्रेन करना है जो किसी स्थिति में की गई हर कार्रवाई के लिए, मिलने वाले इनाम का अनुमान लगा सके. इसके बाद, हम उस कार्रवाई का पता लगाते हैं जिससे हमें सबसे ज़्यादा इनाम मिलता है.
स्थानीय तौर पर ट्रेनिंग
अपने मॉडल को ट्रेनिंग देने का सबसे आसान तरीका यह है कि इस कोडलैब के लिए, कोड सैंपल में मौजूद नोटबुक की कॉपी बनाएं.
इस कोडलैब के लिए, आपको जीपीयू की ज़रूरत नहीं है. हालांकि, अगर आपको अपना डेटा एक्सप्लोर करने और अपने मॉडल को ट्रेन करने के लिए, ज़्यादा बेहतर मशीन की ज़रूरत है, तो ट्रेनिंग को तेज़ करने के लिए AI Platform Notebook इंस्टेंस का इस्तेमाल किया जा सकता है.
दी गई ट्रेनिंग स्क्रिप्ट में, हमने एक आइटरेटर बनाया है. यह BigQuery से एक्सपोर्ट की गई CSV फ़ाइलों से ट्रेनिंग डेटा जनरेट करता है. इसके बाद, हमने Keras की मदद से अपने मॉडल को ट्रेन करने के लिए, डेटा का इस्तेमाल किया. मॉडल को ट्रेन करने के तरीके की जानकारी, Python नोटबुक की टिप्पणियों में मिल सकती है.
मॉडल की परफ़ॉर्मेंस का आकलन करना
मॉडल को ट्रेनिंग देते समय, हम उसकी तुलना किसी ऐसे एजेंट से करेंगे जो आईएपी के ऑफ़र को रैंडम तरीके से चुनता है. इससे यह पता चलेगा कि हमारा मॉडल असल में सीख रहा है या नहीं. यह लॉजिक 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 को अपना मॉडल होस्ट करने दें. यह दो मुख्य वजहों से फ़ायदेमंद है:
- हम ऐप्लिकेशन के इंस्टॉल साइज़ को छोटा रख सकते हैं और ज़रूरत पड़ने पर ही मॉडल डाउनलोड कर सकते हैं
- मॉडल को नियमित तौर पर अपडेट किया जा सकता है. साथ ही, इसे पूरे ऐप्लिकेशन के रिलीज़ साइकल के बजाय, किसी दूसरे रिलीज़ साइकल के हिसाब से अपडेट किया जा सकता है
Firebase ML में मॉडल को डिप्लॉय करने का तरीका जानने के लिए, TFLite से चलने वाले अपने Android ऐप्लिकेशन में Firebase जोड़ें कोडलैब का पालन करें. आपके पास Firebase कंसोल या Python API का इस्तेमाल करके, डिप्लॉय करने का विकल्प है.
8. डिवाइस पर अनुमान लगाना
अगला चरण, डिवाइस पर मौजूद मॉडल का इस्तेमाल करके अनुमान लगाना है. डाउनलोड किए गए सैंपल कोड के app
फ़ोल्डर में, Firebase ML से मॉडल डाउनलोड करने वाले ऐप्लिकेशन का उदाहरण देखा जा सकता है. साथ ही, क्लाइंट-साइड डेटा के साथ अनुमान लगाने के लिए, इसका इस्तेमाल किया जा सकता है.
हमने मॉडल की ट्रेनिंग के दौरान, डेटा को प्री-प्रोसेस करने की कुछ कार्रवाइयां की थीं. इसलिए, डिवाइस पर मॉडल चलाते समय, हमें मॉडल इनपुट को भी प्री-प्रोसेस करना होगा. ऐसा करने का आसान तरीका है, प्लैटफ़ॉर्म और भाषा पर निर्भर न होने वाले फ़ॉर्मैट का इस्तेमाल करना. जैसे, 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 पावरअप है.
मॉडल के सटीक होने का आकलन करना
अपने मॉडल की सटीकता का आकलन करने के लिए, हम अपने मॉडल से अनुमानित आईएपी ऑफ़र का ट्रैक रख सकते हैं. साथ ही, यह भी पता लगा सकते हैं कि Firebase Analytics का इस्तेमाल करके उन पर क्लिक किया गया है या नहीं. मॉडल की असल परफ़ॉर्मेंस मेज़र करने के लिए, इसका इस्तेमाल Firebase A/B टेस्टिंग के साथ किया जा सकता है. इसके अलावा, मॉडल के अलग-अलग वर्शन पर A/B टेस्ट भी किए जा सकते हैं. A/B टेस्टिंग की मदद से, Firebase रिमोट कॉन्फ़िगरेशन के प्रयोग बनाना दस्तावेज़ में, Firebase की मदद से A/B टेस्टिंग के बारे में ज़्यादा जानें.
9. (ज़रूरी नहीं): नए डेटा के साथ मॉडल को नियमित तौर पर अपडेट करना
अगर आपको नया डेटा आने पर अपने मॉडल को अपडेट करना है, तो अपने मॉडल को बार-बार ट्रेन करने के लिए, पाइपलाइन सेट अप की जा सकती है. ऐसा करने के लिए, आपको पहले यह पक्का करना होगा कि आपके पास ऊपर बताई गई एप्सिलॉन-लालची रणनीति का इस्तेमाल करके, ट्रेनिंग के लिए नया डेटा हो. उदाहरण के लिए, 70% समय मॉडल के अनुमान के नतीजे का इस्तेमाल करना और 30% समय रैंडम नतीजों का इस्तेमाल करना.
नए डेटा के साथ ट्रेनिंग और डिप्लॉय करने के लिए, पाइपलाइन कॉन्फ़िगर करना इस कोडलैब के दायरे से बाहर है. शुरू करने के लिए, Google Cloud AI Platform और TFX देखें.
10. बधाई हो!
इस कोडलैब में, Firebase का इस्तेमाल करके इन-ऐप्लिकेशन-परचेज़ को ऑप्टिमाइज़ करने के लिए, डिवाइस पर मौजूद TFLite मॉडल को ट्रेन करने और उसे डिप्लॉय करने का तरीका बताया गया है. TFLite और Firebase के बारे में ज़्यादा जानने के लिए, TFLite के अन्य सैंपल और Firebase का इस्तेमाल शुरू करने से जुड़ी गाइड देखें.
अगर आपका कोई सवाल है, तो Stack Overflow #firebase-machine-learning पर जाएं.
हमने क्या-क्या कवर किया है
- TensorFlow लाइट
- Firebase ML
- Firebase Analytics
- BigQuery
अगले चरण
- अपने ऐप्लिकेशन के लिए ऑप्टिमाइज़र मॉडल को ट्रेनिंग दें और उसे डिप्लॉय करें.