Grid Search से C और Gamma का समायोजन
शिक्षार्थी C और gamma पर GridSearchCV चलाएँगे, सत्यापन हीट मैप की व्याख्या करेंगे और SVM वर्गीकार के लिए सर्वोत्तम hyperparameters चुनेंगे।
Grid Search से C और Gamma का समायोजन, CoddyKit पर Machine Learning Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Machine Learning Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
C और Gamma को साथ-साथ समायोजित करना क्यों आवश्यक है
RBF SVM के लिए C और gamma दोनों को एक साथ समायोजित करना आवश्यक है, क्योंकि उनके प्रभाव एक-दूसरे से जुड़े होते हैं। छोटे gamma के साथ बड़ा C अच्छी सीमा बना सकता है, लेकिन छोटे C के साथ बड़ा gamma भी ऐसा कर सकता है। उन्हें स्वतंत्र रूप से खोजना — एक को स्थिर रखकर दूसरे का अनुकूलन करना — इस अंतःक्रिया को नज़रअंदाज़ करता है और अक्सर उप-इष्टतम संयोजन चुनता है। मानक तरीका 2D ग्रिड खोज है, जो C और gamma मानों के हर संयोजन का मूल्यांकन करती है और सर्वोत्तम क्रॉस-वैलिडेटेड score वाला युग्म चुनती है।
ग्रिड खोज की स्थापना
हर हाइपरपैरामीटर संयोजन का मूल्यांकन करने के लिए scikit-learn से GridSearchCV का उपयोग करें। अपने स्केलर और SVM को Pipeline में लपेटें, ताकि GridSearchCV प्रत्येक प्रशिक्षण fold पर स्केलर को फिर से फिट करे और test डेटा के आँकड़े लीक न हों। पाइपलाइन में नामित चरण को लक्ष्य करने के लिए svc__C और svc__gamma वाले डबल-अंडरस्कोर संकेत का उपयोग करके हाइपरपैरामीटर ग्रिड निर्दिष्ट करें।
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import load_breast_cancer
import numpy as np
X, y = load_breast_cancer(return_X_y=True)
pipe = Pipeline([('scaler', StandardScaler()), ('svc', SVC(kernel='rbf'))])
param_grid = {'svc__C': np.logspace(-2, 3, 6), 'svc__gamma': np.logspace(-4, 0, 5)}
grid = GridSearchCV(pipe, param_grid, cv=5, n_jobs=-1)
grid.fit(X, y)
print('Best params:', grid.best_params_)
print('Best CV score:', round(grid.best_score_, 4))C और Gamma के लिए लॉगरिदमिक पैमाना
C और gamma दोनों को लॉगरिदमिक पैमाने (10 की घातों या 2 की घातों) पर खोजा जाना चाहिए। कारण यह है कि ये पैरामीटर 0.001 से 0.01 (10 गुना परिवर्तन) तक जाने पर मॉडल का व्यवहार बहुत बदलता है, लेकिन 10 से 11 (10% परिवर्तन) तक जाने पर लगभग नहीं बदलता। एक सामान्य मोटा ग्रिड यह होता है: C in [0.01, 0.1, 1, 10, 100, 1000] और gamma in [0.0001, 0.001, 0.01, 0.1, 1]। सर्वोत्तम क्षेत्र मिलने के बाद, आप उन मानों के आसपास अधिक सूक्ष्म ग्रिड से खोज को परिष्कृत कर सकते हैं।
import numpy as np
# Generate logarithmically spaced values
C_range = np.logspace(-2, 3, 6) # [0.01, 0.1, 1, 10, 100, 1000]
gamma_range = np.logspace(-4, 0, 5) # [0.0001, 0.001, 0.01, 0.1, 1.0]
print('C values:', np.round(C_range, 4))
print('gamma values:', np.round(gamma_range, 5))
print('Total combinations:', len(C_range) * len(gamma_range))मान्यकरण हीट मैप की व्याख्या
ग्रिड खोज के बाद, आप परिणामों को 2D हीट मैप के रूप में दिखा सकते हैं, जिसमें एक अक्ष पर C और दूसरे पर gamma हो तथा रंग क्रॉस-वैलिडेशन score के अनुसार हों। इससे पता चलता है: (1) उपयुक्त क्षेत्र, जहाँ score सबसे अधिक होते हैं; (2) कम C और कम gamma पर अंडरफिटिंग (बहुत अधिक चिकना); (3) अधिक C और अधिक gamma पर अति-अनुकूलन (बहुत जटिल)। उपयुक्त क्षेत्र के आकार को पहचानने से आपको मॉडल की संवेदनशीलता समझने और यह तय करने में सहायता मिलती है कि अधिक सूक्ष्म खोज चलानी है या नहीं।
import numpy as np
import pandas as pd
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True)
pipe = Pipeline([('sc', StandardScaler()), ('svc', SVC(kernel='rbf'))])
param_grid = {'svc__C': np.logspace(-1, 2, 4), 'svc__gamma': np.logspace(-3, 0, 4)}
grid = GridSearchCV(pipe, param_grid, cv=5, n_jobs=-1)
grid.fit(X, y)
results = pd.DataFrame(grid.cv_results_)
pivot = results.pivot_table(index='param_svc__C', columns='param_svc__gamma', values='mean_test_score')
print(pivot.round(3))मोटे से सूक्ष्म ग्रिड की खोज
एक व्यावहारिक रणनीति मोटे से सूक्ष्म खोज है: पहले विस्तृत सीमा पर मोटा ग्रिड चलाकर आशाजनक क्षेत्र पहचानें, फिर उसी क्षेत्र पर केंद्रित सूक्ष्म ग्रिड चलाएँ। उदाहरण के लिए, यदि मोटे ग्रिड में C=10 और gamma=0.01 सबसे अच्छा दिखता है, तो सूक्ष्म ग्रिड के लिए C in [5, 8, 10, 15, 20] और gamma in [0.005, 0.008, 0.01, 0.015, 0.02] खोजें। इससे शुरुआत से पूरे स्थान पर सूक्ष्म ग्रिड चलाने की तुलना में कुल गणना कम होती है।
एक विकल्प के रूप में RandomizedSearchCV
बड़े ग्रिड के लिए या जब इष्टतम क्षेत्र ज्ञात न हो, RandomizedSearchCV हर ग्रिड बिंदु का परीक्षण करने के बजाय सतत वितरणों से यादृच्छिक संयोजन चुनता है। यह कहीं बेहतर ढंग से विस्तार करता है: 10×10 ग्रिड (100 बिंदु) से 50 यादृच्छिक संयोजनों का मूल्यांकन, सभी 100 बिंदुओं का परीक्षण करने जितनी विश्वसनीयता से लगभग इष्टतम परिणाम खोज लेता है, जबकि आधी गणना का उपयोग करता है। C और gamma वितरणों के लिए scipy.stats.loguniform का उपयोग करें, ताकि लॉगरिदमिक नमूनाकरण व्यवहार बना रहे।
from sklearn.svm import SVC
from sklearn.model_selection import RandomizedSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import load_breast_cancer
from scipy.stats import loguniform
X, y = load_breast_cancer(return_X_y=True)
pipe = Pipeline([('sc', StandardScaler()), ('svc', SVC(kernel='rbf'))])
param_dist = {'svc__C': loguniform(0.01, 1000), 'svc__gamma': loguniform(0.0001, 1)}
rnd = RandomizedSearchCV(pipe, param_dist, n_iter=50, cv=5, random_state=42, n_jobs=-1)
rnd.fit(X, y)
print('Best params:', {k: round(v, 5) for k, v in rnd.best_params_.items()})
print('Best CV score:', round(rnd.best_score_, 4))परीक्षण सेट पर सर्वोत्तम मॉडल का मूल्यांकन
ग्रिड खोज के बाद, GridSearchCV.best_estimator_ सर्वोत्तम हाइपरपैरामीटर के साथ पूरे प्रशिक्षण सेट पर स्वचालित रूप से फिर से फिट किया जाता है। अलग रखे गए परीक्षण सेट पर grid.score(X_test, y_test) का उपयोग करके इसका मूल्यांकन करें — इसे केवल अंत में, एक ही बार कॉल करें। यदि आप समायोजन जारी रखने के लिए परीक्षण score का उपयोग करते हैं, तो वास्तव में परीक्षण सेट की जानकारी मॉडल चयन प्रक्रिया में लीक हो रही है और आपको प्रदर्शन का अत्यधिक आशावादी अनुमान मिलेगा।
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import load_breast_cancer
import numpy as np
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
pipe = Pipeline([('sc', StandardScaler()), ('svc', SVC(kernel='rbf'))])
param_grid = {'svc__C': np.logspace(-1, 2, 4), 'svc__gamma': np.logspace(-3, 0, 4)}
grid = GridSearchCV(pipe, param_grid, cv=5, n_jobs=-1)
grid.fit(X_train, y_train)
print('CV score:', round(grid.best_score_, 4))
print('Test score:', round(grid.score(X_test, y_test), 4))ग्रिड खोज की गणना लागत
k folds, m C मानों और n gamma मानों वाली ग्रिड खोज k × m × n मॉडल प्रशिक्षित करती है। 6×5 ग्रिड पर 5-fold खोज के लिए 150 मॉडल फिट करने पड़ते हैं। 1,000 उदाहरणों वाले डेटासेट पर प्रत्येक फिट और RBF SVM में एक सेकंड का छोटा-सा अंश लगता है, लेकिन 100,000 उदाहरणों पर प्रत्येक फिट में कई मिनट लग सकते हैं। लागत नियंत्रित करने के लिए: समानांतर प्रसंस्करण हेतु n_jobs=-1 का उपयोग करें, मोटे ग्रिड से शुरुआत करें और बड़े डेटासेट या महँगे मॉडलों के लिए कम पुनरावृत्तियों के साथ RandomizedSearchCV पर विचार करें।
पक्षपात-रहित अनुमानों के लिए नेस्टेड क्रॉस-वैलिडेशन
मान्यकरण score के आधार पर हाइपरपैरामीटर चुनने और फिर अलग परीक्षण सेट पर मूल्यांकन करने से भी आज़माए गए हाइपरपैरामीटर संयोजनों की संख्या के कारण अनुमान थोड़े अधिक आशावादी हो सकते हैं। नेस्टेड क्रॉस-वैलिडेशन में मूल्यांकन के लिए बाहरी CV लूप और चयन के लिए आंतरिक CV लूप (ग्रिड खोज) का उपयोग होता है। बाहरी fold का परीक्षण सेट कभी भी मॉडल फिट करने या हाइपरपैरामीटर चुनने में उपयोग नहीं किया जाता, जिससे सामान्यीकरण का वास्तव में पक्षपात-रहित अनुमान मिलता है। छोटे डेटासेट के लिए यह सर्वोत्तम मानक है, जहाँ अलग परीक्षण सेट रखना संभव नहीं होता।
SVM समायोजन के लिए व्यावहारिक सुझाव
SVM ग्रिड खोज के लिए व्यावहारिक सलाह: (1) डेटा लीक को रोकने के लिए अपने स्केलर को हमेशा पाइपलाइन में शामिल करें; (2) निश्चित मानों को आज़माने से पहले शुरुआती मान के रूप में gamma='scale' का उपयोग करें; (3) यदि सर्वोत्तम स्कोर आपकी ग्रिड की सीमा पर है (जैसे, C=1000 सर्वोत्तम है), तो ग्रिड को और आगे बढ़ाएँ; (4) CV स्कोर और परीक्षण स्कोर की तुलना करें — बड़ा अंतर हाइपरपैरामीटर चयन के दौरान अत्यधिक अनुरूपण का संकेत देता है; (5) बहु-वर्गीय समस्याओं के लिए SVM पर्दे के पीछे one-vs-one या one-vs-rest रणनीतियों का उपयोग करके अपने-आप विस्तारित हो जाता है।
SVM Predict_proba के लिए Platt Scaling
डिफ़ॉल्ट रूप से, SVC प्रायिकता का अनुमान नहीं देता — यह केवल निश्चित वर्ग लेबल या कच्चे निर्णय-फलन स्कोर देता है। probability=True सेट करने पर Platt scaling सक्षम होता है: SVM के निर्णय-फलन स्कोर के ऊपर एक अतिरिक्त लॉजिस्टिक प्रतिगमन मॉडल लगाया जाता है, जो आउटपुट को प्रायिकताओं में कैलिब्रेट करने के लिए क्रॉस-वैलिडेशन का उपयोग करता है। इससे SVM को प्रशिक्षित करने में 5-10 गुना अधिक समय लगता है और निर्णय सीमा में थोड़ा बदलाव आता है। प्रायिकता अनुमान का उपयोग केवल तब करें जब उनकी आवश्यकता हो (सॉफ्ट वोटिंग, ROC-AUC, कैलिब्रेशन); अन्यथा निश्चित पूर्वानुमानों का ही उपयोग करें।
from sklearn.svm import SVC
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = make_pipeline(StandardScaler(), SVC(kernel='rbf', C=10, gamma=0.01, probability=True))
model.fit(X_train, y_train)
probs = model.predict_proba(X_test)
print('Probability shape:', probs.shape)
print('First 3 predicted probs (class 0, class 1):'); print(probs[:3].round(3))त्वरित जाँच
इस पाठ से SVM हाइपरपैरामीटर के लिए Grid Search की अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: C और gamma को 2D ग्रिड खोज के साथ मिलकर ट्यून करना आवश्यक है, प्रासंगिक परिमाणों को शामिल करने के लिए दोनों को लघुगणकीय पैमाने पर खोजना चाहिए, और क्रॉस-वैलिडेशन के दौरान डेटा लीक रोकने के लिए स्केलर को हमेशा पाइपलाइन में शामिल करना चाहिए। अब हम Gradient Boosting और यह जानेंगे कि क्रमिक त्रुटि-सुधार शक्तिशाली समूहित मॉडल कैसे बनाता है।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “Grid Search से C और Gamma का समायोजन” पाठ निःशुल्क है?
हाँ—“Grid Search से C और Gamma का समायोजन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Machine Learning Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Grid Search से C और Gamma का समायोजन” में मैं क्या सीखूँगा?
शिक्षार्थी C और gamma पर GridSearchCV चलाएँगे, सत्यापन हीट मैप की व्याख्या करेंगे और SVM वर्गीकार के लिए सर्वोत्तम hyperparameters चुनेंगे। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Machine Learning Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Machine Learning Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Machine Learning Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“Grid Search से C और Gamma का समायोजन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Machine Learning Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Machine Learning Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- अधिकतम मार्जिन वर्गीकार: Support Vectors और Hyperplane
- Soft Margin SVM और C पैरामीटर
- Kernel Trick: RBF, Polynomial और Sigmoid Kernels
- Grid Search से C और Gamma का समायोजन