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