एमएलफ़्लो के साथ ग्रिड खोज

Ema Elaflo Ke Satha Grida Khoja



मशीन लर्निंग मॉडल में हाइपरपैरामीटर को ग्रिड खोज दृष्टिकोण का उपयोग करके अनुकूलित किया जाता है। एक उपयोगकर्ता तेजी से कई हाइपरपैरामीटर सेटिंग्स की तुलना कर सकता है और पता लगा सकता है कि कौन सा सबसे अच्छा प्रदर्शन करता है क्योंकि एमएलफ्लो ग्रिड खोज प्रयोगों के परिणामों पर नज़र रखता है। एमएलफ़्लो में, ग्रिड खोज प्रयोग को टीम के अन्य सदस्यों के साथ शीघ्रता से साझा किया जा सकता है। एमएलफ़्लो का उपयोग करके, ग्रिड खोज प्रयोग से सबसे प्रभावी मॉडल तैनात किया जा सकता है।

ग्रिड खोज के लाभ

  • स्वचालित हाइपरपैरामीटर ट्यूनिंग: ग्रिड खोज हाइपरपैरामीटर ट्यूनिंग को स्वचालित करती है जो मैन्युअल परीक्षण और त्रुटि के बिना व्यवस्थित अन्वेषण की अनुमति देती है।
  • प्रतिलिपि प्रस्तुत करने योग्यता: ग्रिड खोज प्रतिलिपि प्रस्तुत करने योग्य परिणामों को पुन: उत्पन्न करके परीक्षण वैधता सुनिश्चित करती है जो संचार और विश्वसनीयता को बढ़ाती है।
  • विस्तृत भाषण: जीएस कुशलतापूर्वक संयोजनों की खोज करके एक मॉडल के लिए इष्टतम हाइपरपैरामीटर ढूंढता है।
  • मजबूती: ग्रिड खोज एक मजबूत तकनीक है जो डेटा शोर के प्रति प्रतिरोधी है जो ओवरफिटिंग को कम करती है।
  • उपयोग में सरल: ग्रिड खोज का उपयोग करना और समझना आसान है जो इसे हाइपरपैरामीटर ट्यूनिंग के लिए एक व्यवहार्य तरीका बनाता है।
  • मॉडल तुलना: ग्रिड खोज मॉडल तुलना और मूल्यांकन मेट्रिक्स चयन को सरल बनाती है।

ग्रिड खोज की कमियाँ

  • कम्प्यूटेशनल लागत: बड़ी संख्या में हाइपरपैरामीटर को ट्यून करने के लिए ग्रिड खोज कम्प्यूटेशनल रूप से महंगी है।
  • बहुत समय लगेगा: जटिल हाइपरपैरामीटर समायोजन के लिए इसमें समय लगता है।
  • हमेशा आवश्यक नहीं: अब इसकी सदैव आवश्यकता है; रैंडम सर्च इसका सबसे अच्छा विकल्प है।

उदाहरण: विश्वविद्यालय प्रवेश प्रणाली के लिए सर्वोत्तम मॉडल सेटिंग्स ढूँढना

आइए ऑनलाइन विश्वविद्यालय प्रवेश प्रणाली के ढांचे के अंदर हाइपरपैरामीटर ट्यूनिंग के लिए ग्रिड खोज उदाहरण देखें। इस उदाहरण में, हम जीपीए अंक, एसएटी स्कोर, एसीटी स्कोर और पाठ्येतर गतिविधियों जैसे कारकों के आधार पर किसी छात्र के विश्वविद्यालय में स्वीकार किए जाने की संभावना का पूर्वानुमान लगाने के लिए स्किकिट-लर्न और एक सीधा ग्रेडिएंट बूस्टिंग क्लासिफायर (जीबीसी) क्लासिफायर का उपयोग करते हैं। जीबीसी के बजाय ग्रिड खोज के लिए कई विकल्प उपलब्ध हैं जिनमें लॉजिस्टिक रिग्रेशन (एलआर), एसवीएम (सपोर्ट वेक्टर मशीन) आदि शामिल हैं।

ग्रिड खोज के लिए एमएलफ़्लो का उपयोग करके ऑनलाइन प्रवेश प्रणाली के लिए एक यादृच्छिक डेटा उत्पन्न करें

प्रवेश प्रणाली के लिए एक काल्पनिक डेटासेट बनाने के लिए पायथन के पांडा और यादृच्छिक पैकेज का उपयोग किया जा सकता है। APP_NO, GPA, SAT स्कोर, ACT स्कोर, पाठ्येतर गतिविधियों और प्रवेश स्थिति कॉलम के लिए यादृच्छिक मानों के साथ, यह कोड एक सिंथेटिक प्रवेश डेटासेट उत्पन्न करता है। num_students वैरिएबल नियंत्रित करता है कि डेटासेट में कितनी पंक्तियाँ हैं।







प्रवेश स्थिति 70% स्वीकृति दर के आधार पर यादृच्छिक रूप से निर्धारित की जाती है, और यादृच्छिक मॉड्यूल का उपयोग कई स्तंभों के लिए यादृच्छिक मान उत्पन्न करने के लिए किया जाता है। प्रदर्शन उद्देश्यों के लिए, निम्नलिखित कोड टुकड़ा यादृच्छिक मानों के साथ एक नकली प्रवेश डेटासेट बनाता है और std_admission_dataset.csv फ़ाइल में सहेजा जाता है:



सांकेतिक टुकड़ा:



# पांडा और रैंडम लाइब्रेरी आयात करें
पांडा को पांडा_ओबीजे के रूप में आयात करें
रैंडम_ओबीजे के रूप में रैंडम आयात करें

# छात्र डेटासेट उत्पन्न करने के लिए रिकॉर्ड की संख्या निर्धारित करें
छात्र_अभिलेख = 1000

# डेटा संग्रहीत करने के लिए सूचियां बनाएं
std_application_numbers = [ 'अनुप्रयोग-' + str(random_obj.randint( 1000 , 9999 )) _ श्रेणी में (छात्र_अभिलेख)] के लिए
std_gpa = [राउंड(random_obj.uniform( 2.5 , 4.0 ), 2 ) _ रेंज में (छात्र_रिकॉर्ड) के लिए]
std_sat_scores = [random_obj.randint( 900 , 1600 ) _ रेंज में (छात्र_रिकॉर्ड) के लिए]
std_act_scores = [random_obj.randint( बीस , 36 ) _ रेंज में (छात्र_रिकॉर्ड) के लिए]
std_extra_पाठ्यचर्या = [random_obj.choice([ 'हाँ' , 'नहीं' ]) _ श्रेणी में (छात्र_रिकॉर्ड) के लिए]

# यादृच्छिक स्वीकृति दर के आधार पर प्रवेश स्थिति की गणना करें
std_admission_status = [ 1 यदि रैंडम_ओबीजे.रैंडम() < 0.7 अन्य 0 रेंज में _ के लिए (छात्र_रिकॉर्ड)]

# छात्र डेटा रखने के लिए एक शब्दकोश बनाएं
std_data = {

'आवेदन नहीं' : std_application_numbers,

'जीपीए' : std_gpa,

'SAT_स्कोर' : std_sat_scores,

'ACT_स्कोर' : std_act_scores,

'पाठ्येतर गतिविधियां' : std_अतिरिक्त_पाठ्यचर्या,

'प्रवेश_स्थिति' : std_admission_status

}

# शब्दकोश से एक DataFrame DataFrame_Student बनाएं
डेटाफ़्रेम_स्टूडेंट = पांडा_ओबीजे.डेटाफ़्रेम(std_data)

# डेटाफ़्रेम डेटाफ़्रेम_स्टूडेंट को std_admission_dataset.csv नामक CSV फ़ाइल में सहेजें
DataFrame_Student.to_csv( 'std_admission_dataset.csv' , अनुक्रमणिका=गलत)
प्रिंट( 'छात्र डेटा सफलतापूर्वक सीएसवी फ़ाइल में निर्यात किया गया!' )

कोड निष्पादन:

कोड को संकलित करने के लिए पायथन कमांड का उपयोग करें, फिर यदि आपको मॉड्यूल त्रुटि का सामना करना पड़ता है तो एक विशिष्ट मॉड्यूल स्थापित करने के लिए पिप कमांड का उपयोग करें। यदि पायथन संस्करण 3.X या उच्चतर है तो दी गई लाइब्रेरी को स्थापित करने के लिए pip3 इंस्टॉल कमांड का उपयोग करें।





सफल निष्पादन:



नमूना डेटा स्क्रीनशॉट:

चरण 1: पुस्तकालय आयात करें

  • मशीन लर्निंग प्रयोग ट्रैकिंग के लिए एमएलफ़्लो लाइब्रेरी
  • डेटा प्रोसेसिंग और विश्लेषण को संभालने के लिए पांडा लाइब्रेरी, साथ ही स्किकिट-लर्न मॉडल को एकीकृत करने के लिए mlflow.sklearn पैकेज
  • चौथी पंक्ति त्रुटियों को दबाने के लिए 'चेतावनी' लाइब्रेरी आयात करती है
  • sklearn.model_selection मॉड्यूल में ग्रिड खोज के लिए ParameterGrid वर्ग
  • ग्रिड सर्च और ग्रेडिएंट बूस्टिंग क्लासिफायर मॉडल के लिए क्रमशः sklearn.model_selection और ensemble से GridSearchCV और GradientBoostingClassifier
  • मॉडल सटीकता की गणना करने और वर्गीकरण रिपोर्ट तैयार करने के लिए sklearn.metrics मॉड्यूल से सटीकता_स्कोर और वर्गीकरण_रिपोर्ट कार्य करता है
  • कोड OS मॉड्यूल आयात करता है और GIT_PYTHON_REFRESH पर्यावरण चर को शांत पर सेट करता है।

सांकेतिक टुकड़ा:

# चरण-I आवश्यक पुस्तकालय आयात करें
एमएलफ्लो आयात करें
mlflow.sklearn आयात करें
चेतावनियों को चेतावनी के रूप में आयात करें
पांडा को पांडा_ओबीजे के रूप में आयात करें
sklearn.model_selection से ट्रेन_टेस्ट_स्प्लिट को tts के रूप में, पैरामीटरग्रिड को pg के रूप में, GridSearchCV को gscv के रूप में आयात करें
हमें आयात करें
sklearn.ensemble से GradientBoostingClassifier को GBC के रूप में आयात करें
sklearn.metrics से एसीएस के रूप में सटीकता_स्कोर, सीआर के रूप में वर्गीकरण_रिपोर्ट आयात करें
ओएस.पर्यावरण[ 'GIT_PYTHON_REFRESH' ] = 'शांत'

चरण 2: ट्रैकिंग यूआरआई सेट करें

MLflow सर्वर का ट्रैकिंग URI mlflow.set_tracking_uri() फ़ंक्शन का उपयोग करके सेट किया गया है, जो प्रयोगों और मॉडलों के लिए पोर्ट 5000 पर एक स्थानीय मशीन सुनिश्चित करता है।

mlflow.set_tracking_uri( 'http://localhost:5000' )

चरण 3: प्रवेश डेटासेट लोड करें और तैयार करें

डेटा हेरफेर और विश्लेषण के लिए पांडा लाइब्रेरी को Panda_obj के रूप में आयात करें। प्रवेश डेटासेट को लोड करने के लिए read_csv() फ़ंक्शन लागू किया जाता है। डेटासेट का पथ एकमात्र तर्क है जो read_csv() फ़ंक्शन के लिए आवश्यक है। इस उदाहरण में डेटासेट का पथ std_admission_dataset.csv है। read_csv() फ़ंक्शन को नियोजित करके, डेटासेट को पांडा डेटाफ़्रेम में लोड किया जाता है।

std_admissions_data डेटाफ़्रेम से एडमिशन_स्टैटस कॉलम को पहले कोड द्वारा हटा दिया जाता है। चूँकि इस कॉलम में लक्ष्य चर शामिल है, इसलिए प्रीप्रोसेसिंग आवश्यक नहीं है।

फिर, कोड दो नए वेरिएबल बनाता है: 'F' और 't'। सुविधाएँ 'F' चर में समाहित हैं, जबकि लक्ष्य चर 't' चर में समाहित हैं।

फिर डेटा को परीक्षण और प्रशिक्षण सेटों में वितरित किया जाता है। यह sklearn.model_selection पैकेज से tts() फ़ंक्शन का उपयोग करके पूरा किया जाता है। विशेषताएँ, लक्ष्य चर, परीक्षण आकार और यादृच्छिक स्थिति चार तर्क हैं जो tts() फ़ंक्शन के लिए आवश्यक हैं। test_size पैरामीटर डेटा के उस हिस्से को निर्धारित करता है जिसका उपयोग परीक्षण उद्देश्यों के लिए किया जाता है। चूँकि इस उदाहरण में परीक्षण का आकार 0.2 पर सेट है, 20% डेटा का उपयोग परीक्षण के लिए किया जाएगा।

रैंडम_स्टेट विकल्प यादृच्छिक संख्या जनरेटर बीज निर्दिष्ट करता है। यह सुनिश्चित करने के लिए किया जाता है कि डेटा को यादृच्छिक रूप से अलग किया गया है। प्रशिक्षण और परीक्षण सेट अब F_training, F_testing, t_training, और t_testing चर में संग्रहीत हैं। इन सेटों का उपयोग मशीन लर्निंग मॉडल का मूल्यांकन और प्रशिक्षण करने के लिए किया जा सकता है।

सांकेतिक टुकड़ा:

# चरण-3: प्रवेश डेटासेट लोड करें
std_admissions_data = पांडा_obj.read_csv( 'std_admission_dataset.csv' )

# डेटा को प्रीप्रोसेस करें और फीचर्स (एफ) और टारगेट (टी) में विभाजित करें
एफ = std_admissions_data.drop([ 'प्रवेश_स्थिति' ], अक्ष= 1 )
टी = std_admissions_data[ 'प्रवेश_स्थिति' ]

# वन-हॉट एन्कोडिंग का उपयोग करके श्रेणीबद्ध चर को संख्यात्मक में बदलें
एफ = पांडा_ओबीजे.गेट_डमीज़(एफ)
F_training, F_testing, t_training, t_testing = tts(F, t, test_size= 0.2 , यादृच्छिक_स्थिति= 42 )

चरण 4: एमएलफ़्लो प्रयोग नाम सेट करें

adm_experiment_name = 'विश्वविद्यालय_प्रवेश_प्रयोग'
mlflow.set_experiment(adm_experiment_name)

चरण 5: ग्रेडिएंट बूस्टिंग क्लासिफायर को परिभाषित करें

ग्रेडिएंट बूस्टिंग क्लासिफायर मॉडल अब gbc_obj वेरिएबल में संग्रहीत है। इस मॉडल का परीक्षण और प्रशिक्षण करने के लिए प्रवेश डेटासेट का उपयोग किया जा सकता है। रैंडम_स्टेट तर्क का मान 42 है। यह गारंटी देता है कि मॉडल को ठीक उसी यादृच्छिक संख्या जनरेटर बीज का उपयोग करके प्रशिक्षित किया जाता है जो परिणामों को दोहराने योग्य बनाता है।

gbc_obj = GBC(random_state= 42 )

चरण 6: हाइपरपैरामीटर ग्रिड को परिभाषित करें

कोड प्रारंभ में पैरामीटर_ग्रिड शब्दकोश बनाता है। ग्रिड खोज के माध्यम से समायोजित किए गए हाइपरपैरामीटर इस शब्दकोश में शामिल हैं। तीन कुंजियाँ परम_ग्रिड शब्दकोश बनाती हैं: n_estimator, learn_rate, और max_depth। ये ग्रेडिएंट-बूस्टिंग क्लासिफायर मॉडल के हाइपरपैरामीटर हैं। मॉडल में पेड़ों की संख्या हाइपरपैरामीटर n_estimator द्वारा निर्दिष्ट की जाती है। मॉडल की सीखने की दर लर्निंग_रेट हाइपरपैरामीटर के माध्यम से निर्दिष्ट की जाती है। हाइपरपैरामीटर max_depth मॉडल के पेड़ों की उच्चतम संभव गहराई को परिभाषित करता है।

सांकेतिक टुकड़ा:

परम_ग्रिड = {

'n_आकलनकर्ता' :[ 100 , 150 , 200 ],

'सीखने की दर' :[ 0.01 , 0.1 , 0.2 ],

'अधिकतम गहराई' :[ 4 , 5 , 6 ]

}

चरण 7: एमएलफ़्लो ट्रैकिंग के साथ ग्रिड खोज करें

इसके बाद कोड पैराम_ग्रिड शब्दकोश पर पुनरावृत्त होता है। शब्दकोश में हाइपरपैरामीटर के प्रत्येक सेट के लिए, कोड निम्नलिखित कार्य करता है:

  • एक नया MLflow रन प्रारंभ करता है
  • हाइपरपैरामीटर को एक सूची में परिवर्तित करता है यदि वे पहले से ही एक सूची नहीं हैं
  • हाइपरपैरामीटर को MLflow में लॉग करता है
  • निर्दिष्ट हाइपरपैरामीटर के साथ एक ग्रिड खोज मॉडल को प्रशिक्षित करता है
  • ग्रिड खोज से सर्वोत्तम मॉडल प्राप्त होता है
  • सर्वोत्तम मॉडल पर काम करने वाले परीक्षण डेटा पर भविष्यवाणियाँ करता है
  • मॉडल की सटीकता की गणना करता है
  • हाइपरपैरामीटर, सटीकता और वर्गीकरण रिपोर्ट प्रिंट करता है
  • सटीकता और मॉडल को MLflow में लॉग करता है

सांकेतिक टुकड़ा:

warn.catch_warnings() के साथ:
चेतावनी.फ़िल्टरचेतावनी( 'अनदेखा करना' , श्रेणी=उपयोगकर्ताचेतावनी, मॉड्यूल= '.*डिस्टुटिल.*' )
पीजी(param_grid) में पैरामीटर के लिए:
mlflow.start_run(run_name= के साथ 'प्रवेश_स्थिति चलाएँ' ):
# एकल मानों को सूचियों में बदलें
पैराम्स = {कुंजी: [मान] यदि नहीं है (मान, सूची) तो कुंजी के लिए मान, पैराम्स.आइटम्स में मान()}
mlflow.log_params(params)
ग्रिड_सर्च = gscv(gbc_obj, पैराम_ग्रिड=पैराम्स, सीवी= 5 )
ग्रिड_सर्च.फिट(एफ_ट्रेनिंग, टी_ट्रेनिंग)
std_best_model = ग्रिड_search.best_estimator_
मॉडल_भविष्यवाणियां = std_best_model.predict(F_testing)
मॉडल_सटीकता_स्कोर = एसीएस(टी_परीक्षण, मॉडल_भविष्यवाणियां)
प्रिंट( 'हाइपरपैरामीटर:' , पैरामीटर)
प्रिंट( 'शुद्धता:' , मॉडल_सटीकता_स्कोर)
# UnDefinedMetricWarning को स्पष्ट रूप से अनदेखा करें
warn.catch_warnings() के साथ:
चेतावनी.फ़िल्टरचेतावनी( 'अनदेखा करना' , श्रेणी=चेतावनी)
प्रिंट( 'वर्गीकरण रिपोर्ट:' )
प्रिंट(सीआर(टी_परीक्षण, मॉडल_भविष्यवाणियां, शून्य_विभाजन = 1 ))
mlflow.log_metric( 'शुद्धता' , मॉडल_सटीकता_स्कोर)
mlflow.sklearn.log_model(std_best_model, 'जीबी_क्लासिफायर_मॉडल' )

चरण 8: पायथन का उपयोग करके प्रोग्राम निष्पादित करें

यहाँ MLflow सर्वर पर आउटपुट है:

निष्कर्ष

एमएलफ्लो का ग्रिड सर्च टूल मशीन लर्निंग मॉडल में ट्विकिंग, परिणामों को ट्रैक करने और हाइपरपैरामीटर को संशोधित करने को स्वचालित करता है। यह आदर्श हाइपरपैरामीटर निर्धारित करने में मदद करता है और विश्वसनीय परिणाम सुनिश्चित करता है लेकिन व्यापक हाइपरपैरामीटर प्रयोगों के लिए कम्प्यूटेशनल रूप से महंगा हो सकता है।