Ads Data Hub में रिग्रेशन मॉडलिंग

लीनियर और लॉजिस्टिक रिग्रेशन मशीन लर्निंग मॉडल हैं. इनकी मदद से, विज्ञापन के डेटा से सही अनुमान जनरेट किए जा सकते हैं.

  • लीनियर रिग्रेशन, डेटा की लाइन को इस तरह फ़िट करने के लिए फ़ंक्शन बनाता है कि डेटा पॉइंट और लाइन के बीच की दूरी कम हो जाए. इस मॉडल का इस्तेमाल, इनपुट के आधार पर अंकों वाली वैल्यू का अनुमान लगाने के लिए किया जा सकता है. जैसे, खरीदारी, पिछले इंटरैक्शन वगैरह के आधार पर, किसी उपयोगकर्ता की लाइफ़टाइम वैल्यू का अनुमान लगाना.
  • लॉजिस्टिक रिग्रेशन का इस्तेमाल, कैटगरी तय करने में आने वाली समस्याओं के लिए किया जाता है. आपके दिए गए वैरिएबल के आधार पर, यह मॉडल दो तरह में से एक हो सकता है:
    • बाइनरी लॉजिस्टिक रिग्रेशन का जवाब "हां/नहीं" में दिया जाता है सवाल, जैसे कि कन्वर्ज़न इवेंट होने की कितनी संभावना है.
    • मल्टीक्लास लॉजिस्टिक रिग्रेशन का इस्तेमाल कई संभावित वैल्यू का अनुमान लगाने के लिए किया जाता है. जैसे, यह तय करना कि कोई ग्राहक "कम कीमत", "मीडियम वैल्यू" या "ज़्यादा वैल्यू" है.

लीनियर और लॉजिस्टिक रिग्रेशन, दोनों ही ट्रेनिंग डेटा (इस मामले में, आपके विज्ञापन डेटा) से सीखते हैं. इससे आपको विज्ञापन से जुड़े फ़ैसले लेने के लिए अनुमान लगाने वाला मॉडल मिलता है. आम तौर पर, ज़्यादा डेटा देने और यह पक्का करने से कि आपका डेटा अच्छी क्वालिटी का है, मॉडल को ज़्यादा सटीक बनाने में मदद मिलेगी. ज़्यादा क्लस्टर वाला ट्रेनिंग डेटा देने पर, दोनों मॉडल बेहतर परफ़ॉर्म करते हैं.

डिफ़रेंशियल प्राइवसी

लीनियर और लॉजिस्टिक रिग्रेशन, दोनों में डिफ़रेंशियल प्राइवसी का इस्तेमाल होता है. यह, Ads Data Hub में अन्य कार्रवाइयों की तुलना में, निजता की जांच करने का एक अलग सिस्टम है. डिफ़रेंशियल प्राइवसी, असली उपयोगकर्ता की निजता को पक्का करती है. इसके लिए, ट्रेनिंग की प्रोसेस के दौरान नतीजों में ग़ैर-ज़रूरी आवाज़ें शामिल की जाती हैं. शोर का यह स्तर इतना कम रहता है कि आखिरी नतीजे अब भी काम के हों, लेकिन इतने ज़्यादा कि असली उपयोगकर्ताओं की पहचान न की जा सके. इसके अलावा, यह भी तय नहीं किया जा सकता कि किस तरह के शोर का इस्तेमाल करने पर नतीजों में कोई अंतर नहीं होगा. इससे असली उपयोगकर्ता की निजता को सुरक्षित रखा जा सकेगा.

क्वेरी को सीमित करना

डिफ़ॉल्ट EPSILON_PER_MODEL का इस्तेमाल करने पर, हर "डेटा डे" में 100 लीनियर और लॉजिस्टिक रिग्रेशन मॉडलिंग क्वेरी की जा सकती हैं. डेटा वाले दिन का मतलब, किसी खास दिन जनरेट होने वाले इवेंट से है. ये इवेंट, क्वेरी को चलाने के लिए आपकी दी गई शुरू और खत्म होने की तारीख से जुड़े होते हैं. साथ ही, इन इवेंट में शुरू और खत्म होने की वे तारीखें भी शामिल होती हैं जिनका इस्तेमाल आपकी क्वेरी की टेबल बनाते समय किया जाता है. जैसे, ट्रेनिंग के लिए इस्तेमाल की जाने वाली अस्थायी टेबल. इसका मतलब है कि 1 दिन के डेटा का इस्तेमाल, 100 से ज़्यादा मॉडल में नहीं किया जा सकता. यदि आप EPSILON_PER_MODEL का डिफ़ॉल्ट मान से अधिक मान निर्दिष्ट करना चुनते हैं, तो आप कम मॉडल बना सकेंगे, लेकिन उनकी गुणवत्ता उच्च होगी. और यदि आप EPSILON_PER_MODEL के छोटे मान चुनते हैं, तो आप और मॉडलों को प्रशिक्षित कर सकते हैं, लेकिन उनकी गुणवत्ता कम होगी.

यह कैसे काम करता है

वर्कफ़्लो में इन ज़रूरी चरणों को पूरा किया जाता है:

  1. ट्रेनिंग का डेटा तैयार करें.
  2. मॉडल बनाएं.
  3. मॉडल से अहम जानकारी इकट्ठा करें.

ट्रेनिंग का डेटा तैयार करना

जैसा कि ऊपर बताया गया है, बड़े और अच्छी क्वालिटी के डेटासेट का इस्तेमाल करने से आम तौर पर बेहतर नतीजे मिलते हैं. इसके अलावा, इनपुट डेटा को सबसे कम वैल्यू वाली स्केलिंग का इस्तेमाल करके स्केल किया जाता है. इसलिए, कम क्लस्टर में इकट्ठा किया गया डेटा या बहुत ज़्यादा आउटलायर वाला डेटा, मीन को मूव करके मॉडल पर बुरा असर डाल सकता है.

डिफ़ॉल्ट रूप से, Ads Data Hub आपके ट्रेनिंग डेटा का 18% हिस्सा चुनता है और पुष्टि के लिए इस्तेमाल किया जाता है. पुष्टि करने के लिए इस्तेमाल किए जाने वाले डेटा के प्रतिशत को data_split_eval_fraction विकल्प से कंट्रोल किया जा सकता है.

मॉडल बनाना

अपने मॉडल की ट्रेनिंग के लिए, पैरामीटर और इनपुट डेटा डालें.

सबसे सही तरीके

किसी मॉडल की क्वालिटी पर, सबसे ज़्यादा ध्यान दिया जाता है. इसमें ट्रेनिंग सेट का साइज़ होना चाहिए. हालांकि, समस्या और नीचे दी गई वजहों के आधार पर, प्रॉडक्ट की साइज़/क्वालिटी के बीच का फ़र्क़ अलग-अलग होगा. कृपया हमें अपना अनुभव बताएं.

  • हमने सटीक देखा है > कम से कम 1,00,000 उपयोगकर्ताओं वाले ट्रेनिंग सेट से बनाए गए लॉजिस्टिक रिग्रेशन मॉडल के लिए 0.70.
  • हमने आर-स्क्वेयर देखे हैं > कम से कम 8,00,000 उपयोगकर्ताओं वाले ट्रेनिंग सेट से बनाए गए लीनियर रिग्रेशन मॉडल के लिए 0.70.

ऐसे कई कारण हैं जो किसी मॉडल की गुणवत्ता को कम कर सकते हैं.

  • लॉजिस्टिक मॉडल, जिनमें एक क्लास अन्य की तुलना में ज़्यादा बेहतर तरीके से दिखाई जाती है. खास तौर पर, जब किसी लेबल में ट्रेनिंग सेट के कम उपयोगकर्ता हों, तो दूसरे लेबल वाले कई ट्रेनिंग सेट उपयोगकर्ताओं के होने से शायद छोटे लेबल पर मॉडल को सटीक बनाने में मदद न मिले. उदाहरण के लिए, 20,000 और दो लेबल के लिए 1,000 ट्रेनिंग सेट इस्तेमाल करने वाले लोगों की संख्या 10,000 और 2,000 रुपये तक की होती है.
  • ऐसा सुविधा डेटा जो लेबल के लिए अच्छा सिग्नल नहीं देता.
  • ऐसा रॉ डेटा जिसे सुविधा देने वाली इंजीनियरिंग सुविधाओं के लिए, ज़्यादा जानकारी की ज़रूरत होती है. उदाहरण के लिए, कुछ फ़ील्ड में संभावित वैल्यू बहुत ज़्यादा हो सकती हैं. इस तरह के डेटा को बेहतर बनाने का एक तरीका यह है कि आप वैल्यू को कम कैटगरी या बकेट वाली सुविधा में बदलें.

अहम जानकारी इकट्ठा करें

फ़ंक्शन को कॉल किया जा सकता है. इसकी मदद से, पुष्टि करने वाले डेटा पर अपने मॉडल की परफ़ॉर्मेंस का आकलन किया जा सकता है. साथ ही, ट्रेनिंग के बार-बार दिए जाने वाले बदलावों की सुविधाओं और जानकारी (जैसे, अनुमान के दौरान मॉडल के इस्तेमाल किए गए महत्व) की जांच की जा सकती है, और अनदेखे डेटा के बारे में अनुमान लगाया जा सकता है.

मॉडल स्टेटमेंट बनाएं

CREATE MODEL स्टेटमेंट, आपके बताए गए नाम और डेटासेट के साथ एक मॉडल बनाता है. अगर मॉडल का नाम पहले से मौजूद है, तो CREATE MODEL मौजूदा मॉडल की जगह ले लेता है.

मॉडल सिंटैक्स बनाएं

CREATE MODEL
model_name
OPTIONS
(
  // model_option_list:
  // Required parameter.
  MODEL_TYPE = { 'ADH_LINEAR_REGRESSION' | 'ADH_LOGISTIC_REGRESSION'}

  // Optional tuning parameters.
  [, L1_REG = float64_value ]
  [, L2_REG = float64_value ]
  [, DATA_SPLIT_EVAL_FRACTION = float64_value ]
  [, OPTIMIZE_STRATEGY = { 'AUTO_STRATEGY' | 'BATCH_GRADIENT_DESCENT' |
                           'NORMAL_EQUATION' } ]
  [, MAX_ITERATIONS = int64_value ]
  [, LEARN_RATE_STRATEGY = { 'LINE_SEARCH' | 'CONSTANT' } ]
  [, LEARN_RATE = float64_value ]
  [, EARLY_STOP = { TRUE | FALSE } ]
  [, MIN_REL_PROGRESS = float64_value ]
  [, LS_INIT_LEARN_RATE = float64_value ]
  [, EPSILON_PER_MODEL = float64_value ]
  [, AUTOMATIC_IMPUT_SCALING = bool_value ]
  [, MIN_MAX_SCALED_COLS = [string_value, string_value... ] ]
  [, STANDARD_SCALED_COLS = [string_value, string_value... ] ]
  [, QUANTILE_BUCKETIZED_COLS = [
        STRUCT(string_value AS col_name, int64_value AS num_buckets), 
       STRUCT(string_value AS col_name, int64_value AS num_buckets)... ] ]
)
AS query_statement

model_name

अक्षर और अंक वाला नाम, जिसमें अंडरस्कोर और डैश शामिल होते हैं. इसमें बिंदु शामिल नहीं किए जा सकते. अगर आपके दिए गए मॉडल का नाम पहले से मौजूद है, तो पुराने मॉडल को ओवरराइट कर दिया जाएगा.

query_statement

यह स्टैंडर्ड एसक्यूएल क्वेरी के बारे में बताती है, जिसका इस्तेमाल ट्रेनिंग डेटा जनरेट करने के लिए किया जाता है. अगर एक ही ट्रेनिंग डेटा का इस्तेमाल करके कई मॉडल बनाए जा रहे हैं, तो ट्रेनिंग डेटा के साथ एक अस्थायी टेबल बनाएं और उसका रेफ़रंस यहां दें. इस रणनीति का इस्तेमाल करके, डेटा मिटाने या स्पैम के अनुरोध में देरी होने की वजह से, अंतर का पता लगाने में होने वाली संभावित गड़बड़ियों से बचा जा सकता है.

model_option_list

model_type

(ज़रूरी है) सिर्फ़ ज़रूरी विकल्प. 'adh_linear_regression' या 'adh_logistic_regression' हो सकता है

l1_reg

(ज़रूरी नहीं) L1 रेगुलराइज़ेशन की संख्या लागू की गई. L1 रेगुलराइज़ेशन, वेट की कुल वैल्यू के योग के अनुपात में वेट को कम करता है. यह कोई भी ऐसा नंबर हो सकता है जो निगेटिव न हो. डिफ़ॉल्ट रूप से, यह संख्या शून्य होती है.

l2_reg

(ज़रूरी नहीं) लागू किए गए L2 रेगुलराइज़ेशन की संख्या. L2 रेगुलराइज़ेशन, वज़न के स्क्वेयर रूट के योग के वर्गमूल के अनुपात में वज़न को कम करता है. यह कोई भी ऐसा नंबर हो सकता है जो निगेटिव न हो. डिफ़ॉल्ट रूप से, यह संख्या शून्य होती है.

data_split_eval_fraction

(ज़रूरी नहीं) यह .01 और .99 के बीच होना चाहिए और डिफ़ॉल्ट रूप से .18 होना चाहिए. इससे इवैलुएशन सेट में मिलने वाले डेटा के अंश को तय किया जाता है. इससे मॉडल में दिखने वाली लाइनों की संख्या कम हो जाती है. इससे मॉडल ज़्यादा सटीक होता है. साथ ही, उपयोगकर्ता के चलाए जा सकने वाले मॉडल की संख्या भी बढ़ जाती है. यह मानते हुए कि दिए गए डेटासेट पर हर मॉडल का फ़्रैक्शन एक जैसा है, यहां उस संबंध का चार्ट दिया गया है:

पुष्टि का हिस्सा अनुमति वाली क्वेरी
0.01 7
0.1 8
0.15 8
0.18 9
0.2 9
0.3 10
0.5 14
0.9 50

optimize_strategy

(ज़रूरी नहीं) लीनियर रिग्रेशन मॉडल को ट्रेनिंग देने की रणनीति.

आर्ग्युमेंट

'AUTO_STRATEGY' ट्रेनिंग की रणनीति इस तरह तय करती है:

  • अगर l1_reg या warm_start दी गई है, तो batch_gradient_descent रणनीति का इस्तेमाल किया जाता है.
  • अगर ट्रेनिंग सुविधाओं की कुल संख्या 10,000 से ज़्यादा है, तो batch_gradient_descent रणनीति का इस्तेमाल किया जाता है.
  • अगर ज़्यादा फ़िटिंग होने की समस्या है (ट्रेनिंग के उदाहरणों की संख्या 10 से कम है • एलिमेंट की कुल संख्या), तो batch_gradient_descent रणनीति का इस्तेमाल किया जाता है.
  • अन्य सभी मामलों में, NORMAL_EQUATION रणनीति का इस्तेमाल किया जाता है.

'BATCH_GRADIENT_DESCENT' (सिर्फ़ लॉजिस्टिक के लिए) बैच ग्रेडिएंट डिसेंट तरीके का इस्तेमाल करके मॉडल को ट्रेनिंग देता है, जो ग्रेडिएंट फ़ंक्शन का इस्तेमाल करके लॉस फ़ंक्शन को ऑप्टिमाइज़ करता है.

'NORMAL_EQUATION' (सिर्फ़ लीनियर) ऐनलिटिकल फ़ॉर्मूला की मदद से, लीनियर रिग्रेशन की समस्या के सबसे कम वर्ग समाधान को सीधे तौर पर कैलकुलेट करता है. सामान्य समीकरण का इस्तेमाल नीचे दिए गए मामलों में नहीं किया जा सकता है:

  • l1_reg बताया गया है.
  • warm_start बताया गया है.
  • ट्रेनिंग के लिए उपलब्ध सुविधाओं की कुल संख्या 10,000 से ज़्यादा है.
  • डिफ़ॉल्ट वैल्यू 'AUTO_STRATEGY' है.

max_iterations

(ज़रूरी नहीं) ट्रेनिंग के दोहराए जाने की संख्या या चरणों की संख्या. यह क्वेरी हर इटरेशन के लिए एक ट्री बनाती है, इसलिए यह ट्री की संख्या भी है. 1 से बड़ा कोई पूर्णांक होना चाहिए. डिफ़ॉल्ट संख्या 20 होती है.

learn_rate_strategy

(सिर्फ़ लॉजिस्टिक के लिए ज़रूरी नहीं) ट्रेनिंग के दौरान लर्निंग रेट तय करने की रणनीति.

आर्ग्युमेंट

'LINE_SEARCH' लर्निंग रेट का हिसाब लगाने के लिए, लाइन सर्च वाले तरीके का इस्तेमाल करता है. लाइन सर्च के शुरुआती सीखने की दर LS_INIT_LEARN_RATE के लिए तय की गई वैल्यू है .

  • 'लाइन सर्च', ट्रेनिंग को धीमा कर देता है और प्रोसेस की गई बाइट की संख्या को बढ़ा देता है. हालांकि, आम तौर पर इसमें बहुत ज़्यादा शुरुआती लर्निंग रेट के साथ भी कन्वर्ज़न शामिल होते हैं.

'CONSTANT' लर्निंग रेट को LEARN_RATE के लिए तय की गई वैल्यू पर सेट करता है.

डिफ़ॉल्ट वैल्यू 'LINE_SEARCH' है.

learn_rate

(सिर्फ़ लॉजिस्टिक का इस्तेमाल करना ज़रूरी नहीं है) जब LEARN_RATE_STRATEGY को CONSTANT पर सेट किया जाता है, तो ग्रेडिएंट ढलान के लिए सीखने की दर. अगर LEARN_RATE_STRATEGY को 'LINE_SEARCH' पर सेट किया गया है, तो गड़बड़ी का मैसेज दिखता है.

आर्ग्युमेंट

float64_value में कोई भी 64-बिट फ़्लोटिंग पॉइंट नंबर हो सकता है. डिफ़ॉल्ट रूप से 0.1 (10%) होता है.

early_stop

(ज़रूरी नहीं) क्या ट्रेनिंग को पहली बार दोहराने के बाद बंद किया जाना चाहिए, जिसमें तुलनात्मक नुकसान में सुधार MIN_REL_PROGRESS के लिए तय की गई वैल्यू से कम हो.

आर्ग्युमेंट

"हां" के लिए TRUE, "नहीं" के लिए FALSE. डिफ़ॉल्ट तौर पर, यह TRUE पर सेट होता है.

min_rel_progress

(ज़रूरी नहीं) EARLY_STOP के 'सही' पर सेट होने पर, ट्रेनिंग जारी रखने के लिए ज़रूरी है कि कम से कम नुकसान हुआ है. उदाहरण के लिए, 0.01 वैल्यू से पता चलता है कि हर बार किए जाने वाले बदलाव से होने वाले नुकसान को 1% तक कम करना होगा, ताकि ट्रेनिंग जारी रखी जा सके.

आर्ग्युमेंट

float64_value में कोई भी 64-बिट फ़्लोटिंग पॉइंट नंबर हो सकता है. डिफ़ॉल्ट रूप से 0.1 (10%) होता है.

ls_init_learn_rate

(ज़रूरी नहीं) LEARN_RATE_STRATEGY='LINE_SEARCH' के मुताबिक, लर्निंग रेट को शुरुआती सेट करता है. इस विकल्प का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब LINE_SEARCH बताया गया हो.

अगर ML.TRAINING_INFO के बताए गए मॉडल के हिसाब से, मॉडल का LEARN_RATE, हर बार दोगुने साबित होता है, तो LS_INIT_LEARN_RATE को पिछली बार दो बार सीखने की दर पर सेट करें. हर मॉडल के लिए, शुरुआती लर्निंग रेट अलग-अलग होता है. यह ज़रूरी नहीं है कि किसी मॉडल के लिए शुरुआती 'सीखने की दर' अच्छी हो.

आर्ग्युमेंट

float64_value में कोई भी 64-बिट फ़्लोटिंग पॉइंट नंबर हो सकता है.

epsilon_per_model

(ज़रूरी नहीं) इससे इस मॉडल को ट्रेनिंग देने के लिए, निजता बजट की रकम का पता चलता है. विज्ञापन के हर डेटा का इस्तेमाल करने वाले ग्राहकों को, हर दिन के लिए 10.0 का निजता बजट दिया जाता है. सफलतापूर्वक प्रशिक्षित मॉडल, क्वेरी को रन करते समय बताई गई तारीख की सीमा में हर डेटा दिन के लिए बजट का EPSILON_PER_MODEL खर्च करेगा. AdSense(3)/10 की डिफ़ॉल्ट वैल्यू का इस्तेमाल करके, करीब 100 मॉडल बनाए जा सकते हैं. ज़्यादा वैल्यू का इस्तेमाल करने पर, कम मॉडल बनाए जा सकेंगे, लेकिन उनकी क्वालिटी अच्छी होगी. अगर कम वैल्यू का इस्तेमाल किया जाता है, तो कम क्वालिटी वाले ज़्यादा मॉडल बनाए जा सकेंगे.

आर्ग्युमेंट

float64_value, ext(3) से कम का कोई भी पॉज़िटिव 64-बिट फ़्लोटिंग पॉइंट नंबर हो सकता है, जो करीब 1.0986 होता है. डिफ़ॉल्ट रूप से, IN(3)/10 होता है.

automatic_input_scaling

(ज़रूरी नहीं) TRUE होने पर, संख्या वाली सभी सुविधा वाले कॉलम में min_max_scaling अपने-आप लागू हो जाएगा. ऐसा इस तरह से होता है, मान लीजिए कि min_max_scaled_cols विकल्प में कॉलम के नामों को साफ़ तौर पर बताया गया हो. हालांकि, standard_scaled_cols या quantile_bucketized_cols विकल्प में साफ़ तौर पर जानकारी देने वाले कॉलम को छोड़कर.

आर्ग्युमेंट

bool_value एक BOOL है और डिफ़ॉल्ट वैल्यू TRUE है.

min_max_scaled_cols

(ज़रूरी नहीं) यह किसी खास number_expression सुविधा के कॉलम को 0 से 1 की रेंज में स्केल करता है. इसके लिए, सभी पंक्तियों में MIN और MAX का इस्तेमाल किया जाता है. अनुमान लगाने के लिए, वही MIN और MAX अपने-आप इस्तेमाल किए जाते हैं. अगर अनुमान का डेटा, MIN, MAX रेंज से बाहर है, तो उसे 0 या 1 पर सीमित कर दिया जाता है.

आर्ग्युमेंट

string_value की कैटगरी, जहां हर string_value एक स्ट्रिंग है. यह स्ट्रिंग बदलने के लिए इस्तेमाल होने वाले कॉलम के नाम को दिखाती है.

standard_scaled_cols

(ज़रूरी नहीं) सभी पंक्तियों में, दिए गए numerical_expression सुविधा कॉलम को स्टैंडर्ड के तौर पर बनाता है. एक्सप्रेशन के मानक तय करने के लिए कैलकुलेट की गई वैल्यू STDDEV और MEAN, अनुमान लगाने के लिए अपने-आप इस्तेमाल हो जाती है.

आर्ग्युमेंट

string_value की कैटगरी, जहां हर string_value एक STRING है, जो बदले जाने वाले कॉलम के नाम को दिखाता है.

quantile_bucketized_cols

क्वांटाइल के आधार पर वैल्यू के रूप में बकेट के नाम के साथ खास लगातार संख्यात्मक सुविधा कॉलम को STRING में बकेट करता है. सुझाव देते समय, समान मात्राओं का इस्तेमाल अपने-आप किया जाता है.

आर्ग्युमेंट

STRUCT(string_value AS col_name, int64_value AS num_buckets) की श्रेणी, जहां हर string_value एक STRING है, जो बदले जाने वाले लगातार संख्यात्मक कॉलम का नाम दिखाता है और हर int64_value बकेट की संख्या है जिसमें संख्या वाली वैल्यू को बांटना है.

पुष्टि

  • इस क्वेरी के लिए बताई गई तारीख की सीमा के हर डेटा दिन में निजता के लिए काफ़ी बजट होना चाहिए, जो EPSILON_PER_MODEL से ज़्यादा होना चाहिए. ऐसा न करने पर क्वेरी काम नहीं करेगी.
  • अगर वैकल्पिक ट्यूनिंग पैरामीटर बताए गए हैं, तो ऊपर दिखाई गई श्रेणियों के लिए उनकी पुष्टि की जाएगी.
  • साफ़ तौर पर सिर्फ़ एक ज़रूरी Model_type पैरामीटर की जानकारी देना ज़रूरी है.
  • ट्रेनिंग सेट में एक कॉलम का नाम "लेबल" होना चाहिए. फ़िलहाल, एक से ज़्यादा लेबल का इस्तेमाल नहीं किया जा सकता.
  • लेबल कॉलम में शून्य मान नहीं हो सकते. अगर लेबल कॉलम में शून्य वैल्यू हैं, तो क्वेरी फ़ेल हो जाती है.
  • कोई भी सुविधा कॉलम user_id से नहीं लिया जा सकता.
  • हर लाइन में सिर्फ़ एक यूनीक उपयोगकर्ता दिखना चाहिए. एक पंक्ति में एक से ज़्यादा उपयोगकर्ता का डेटा नहीं दिखाया जा सकता. ऐसा, कुछ लोगों के जुड़ाव की वजह से हो सकता है, जैसे कि क्रॉस जॉइन.
  • कोई भी उपयोगकर्ता दो अलग-अलग पंक्तियों में नहीं हो सकता.
  • निजता की वजहों से, सिर्फ़ सिंटैक्स सेक्शन में बताए गए विकल्पों का इस्तेमाल किया जा सकता है. फ़िलहाल, BQML CREATE MODEL क्वेरी के दस्तावेज़ में मौजूद अन्य विकल्प काम नहीं करते हैं.

इवैलुएशन के फ़ंक्शन

ML.EVALUATE

मॉडल मेट्रिक का आकलन करने के लिए, ML.EVALUATE फ़ंक्शन का इस्तेमाल करें. ML.EVALUATE फ़ंक्शन का इस्तेमाल लीनियर रिग्रेशन या लॉजिस्टिक रिग्रेशन मॉडल के साथ किया जा सकता है.

SELECT
  *
FROM ML.EVALUATE(MODEL `linear_model_test`);

ML.ROC_CURVE

लॉजिस्टिक रिग्रेशन से जुड़ी मेट्रिक का आकलन करने के लिए, ML.ROC_CURVE फ़ंक्शन का इस्तेमाल करें. ML.ROC_CURVE सिर्फ़ लॉजिस्टिक रिग्रेशन मॉडल की जांच करता है.

SELECT
  *
FROM ML.ROC_CURVE(MODEL `logistic_model_test`);

अनुमान के फ़ंक्शन

ML.PREDICT

मॉडल का इस्तेमाल करके, नतीजों का अनुमान लगाने के लिए, ML.PREDICT फ़ंक्शन का इस्तेमाल किया जा सकता है. ML.PREDICT का इस्तेमाल करके मिलने वाले नतीजों की निजता जांच, Ads Data Hub में अन्य नतीजों की तरह ही होती है. निजता जांच के बारे में ज़्यादा जानें

लीनियर रिग्रेशन

/* This example outputs the average value for labels that the model predicted */
SELECT
  AVG(predicted_label) AS average_predicted_label
FROM
  ML.PREDICT(MODEL `linear_model_test`, TABLE tmp.linear_training_set);

लॉजिस्टिक रिग्रेशन

/* This example outputs the model's prediction and probabilities for said prediction over individual users. It groups by label and prediction, counting the number of users in each prediction */
SELECT
  label,
  predicted_label, /* one of the two input labels, depending on which label has the higher predicted probability */
  COUNT(*) AS num /* a tally of users */
FROM
  ML.PREDICT(MODEL `logistic_model_test`, TABLE tmp.logistic_training_set)
GROUP BY 1, 2;

मॉडल और सुविधा की जांच करने के फ़ंक्शन

ML.TRAINING_INFO

ML.TRAINING_INFO फ़ंक्शन की मदद से, किसी मॉडल की ट्रेनिंग की प्रोसेस के बारे में जानकारी देखी जा सकती है.

SELECT
  *
FROM ML.TRAINING_INFO(MODEL `logistic_model_test`);

ML.FEATURE_INFO

ML.FEATURE_INFO फ़ंक्शन की मदद से, किसी मॉडल को ट्रेनिंग देने के लिए इस्तेमाल की गई इनपुट सुविधाओं के बारे में जानकारी देखी जा सकती है

SELECT
  *
FROM ML.FEATURE_INFO(MODEL `logistic_model_test`);

ML.WEIGHTS

ML.WEIGHTS फ़ंक्शन की मदद से, अनुमान के दौरान मॉडल में इस्तेमाल किए गए महत्व को देखा जा सकता है.

SELECT
  *
FROM ML.WEIGHTS(MODEL `linear_model_test`);

उदाहरण

मॉडल बनाएं

नीचे दिए गए सभी उदाहरणों में, मॉडल बनाने का तरीका दिखाने के लिए, natality सैंपल टेबल का इस्तेमाल किया गया है.

इनर-सिलेक्ट मोड में ट्रेनिंग का डेटा (लीनियर)

नीचे दिए गए उदाहरण में, बच्चे के जन्म के वज़न का अनुमान लगाने के लिए, जन्म के समय, लिंग, गर्भधारण के हफ़्तों, मां की उम्र, और मां की नस्ल का इस्तेमाल किया गया है.

CREATE MODEL `natality_model`
OPTIONS
  (model_type='adh_linear_regression') AS
SELECT
  weight_pounds as label,
  is_male,
  gestation_weeks,
  mother_age,
  CAST(mother_race AS string) AS mother_race
FROM
  `bigquery-public-data.samples.natality`
WHERE
  weight_pounds IS NOT NULL

इनर-सिलेक्ट मोड में ट्रेनिंग का डेटा (लॉजिस्टिक)

नीचे दिए गए उदाहरण में बच्चे के लिंग का अनुमान लगाने के लिए, जन्म के वज़न, लिंग, गर्भधारण के हफ़्तों, मां की उम्र, और मां की नस्ल का इस्तेमाल किया गया है.

CREATE MODEL `natality_model`
OPTIONS
  (model_type='adh_logistic_regression') AS
SELECT
  weight_pounds,
  is_male as label,
  gestation_weeks,
  mother_age,
  CAST(mother_race AS string) AS mother_race
FROM
  `bigquery-public-data.samples.natality`
WHERE
  weight_pounds IS NOT NULL