html
पायथन में सपोर्ट वेक्टर रिग्रेशन (SVR) की शक्ति को अनलॉक करना: एक व्यापक गाइड
सामग्री तालिका
- परिचय
- सपोर्ट वेक्टर रिग्रेशन (SVR) क्या है?
- SVR क्यों चुनें?
- डेटासेट अवलोकन: बीमा डेटा विश्लेषण
- डेटा पूर्वप्रसंस्करण
- SVR मॉडल बनाना और प्रशिक्षण देना
- पूर्वानुमान करना और मॉडल का मूल्यांकन करना
- परिणामों की व्याख्या
- SVR प्रदर्शन को बढ़ाना
- निष्कर्ष
- अतिरिक्त संसाधन
- अक्सर पूछे जाने वाले प्रश्न (FAQs)
परिचय
मशीन लर्निंग के विशाल परिदृश्य में, रिग्रेशन मॉडल निरंतर परिणामों की भविष्यवाणी में महत्वपूर्ण भूमिका निभाते हैं। इन मॉडलों में, सपोर्ट वेक्टर रिग्रेशन (SVR) एक शक्तिशाली लेकिन अक्सर कम उपयोग किया जाने वाला उपकरण के रूप में उभरता है। जबकि सपोर्ट वेक्टर मशीन (SVMs) मुख्य रूप से वर्गीकरण कार्यों के लिए पसंद किया जाता है, SVR रिग्रेशन समस्याओं से निपटने के लिए एक अनूठा दृष्टिकोण प्रदान करता है। यह व्यापक गाइड SVR की जटिलताओं, पायथन में इसके कार्यान्वयन, और वास्तविक दुनिया के परिदृश्यों में इसके प्रदर्शन, विशेष रूप से एक बीमा डेटासेट का उपयोग करते हुए, में गहराई से चर्चा करती है।
सपोर्ट वेक्टर रिग्रेशन (SVR) क्या है?
सपोर्ट वेक्टर रिग्रेशन, सपोर्ट वेक्टर मशीन (SVM) एल्गोरिदम का एक विस्तार है जो रिग्रेशन कार्यों के लिए अनुकूलित किया गया है। पारंपरिक रिग्रेशन मॉडलों के विपरीत जो पूर्वानुमानित और वास्तविक मानों के बीच त्रुटि को कम करने का लक्ष्य रखते हैं, SVR एप्सिलॉन-असंवेदनशील हानि फ़ंक्शन पर ध्यान केंद्रित करता है। यह दृष्टिकोण SVR को सहनशीलता की सीमा (एप्सिलॉन) बनाने की अनुमति देता है जिसके भीतर त्रुटियों को नजरअंदाज किया जाता है, जिससे आउटलेर्स के खिलाफ एक अधिक मजबूत मॉडल बनता है।
SVR क्यों चुनें?
जबकि SVR रिग्रेशन के लिए एक मजबूत उपकरण है, मशीन लर्निंग के क्षेत्र में इसकी स्थिति को समझना आवश्यक है:
- Strengths:
- उच्च-आयामी स्थानों में प्रभावी।
- ओवरफिटिंग के खिलाफ मजबूत, विशेष रूप से सीमित डेटा बिंदुओं वाले मामलों में।
- गैर-रेखीय संबंधों को मॉडल करने के लिए कर्नेल फ़ंक्शंस का उपयोग करता है।
- Weaknesses:
- सांख्यिकीय रूप से भारी, जिससे यह बड़े डेटासेट के लिए कम उपयुक्त बन जाता है।
- हाइपरपैरामीटर ट्यूनिंग जटिल हो सकती है।
- अक्सर रिग्रेशन कार्यों में Random Forests या Gradient Boosting जैसे एन्सेम्बल विधियों द्वारा पीछे छोड़ दिया जाता है।
इन विशेषताओं को देखते हुए, SVR उन विशिष्ट परिदृश्यों के लिए सबसे उपयुक्त है जहां इसके बल का पूरा लाभ उठाया जा सकता है।
डेटासेट अवलोकन: बीमा डेटा विश्लेषण
SVR के कार्यान्वयन को स्पष्ट करने के लिए, हम Kaggle से बीमा डेटासेट का उपयोग करेंगे। यह डेटासेट व्यक्तियों के जनसांख्यिकी और स्वास्थ्य-संबंधी गुणों पर जानकारी प्रदान करता है, जिसका उद्देश्य बीमा शुल्क की भविष्यवाणी करना है।
डेटासेट फीचर्स:
- आयु: प्राथमिक लाभार्थी की आयु।
- लिंग: व्यक्ति का लिंग।
- बीएमआई: शरीर द्रव्यमान सूचकांक।
- बच्चे: स्वास्थ्य बीमा द्वारा कवर किए गए बच्चों की संख्या।
- धूम्रपान करने वाला: संकेतक कि व्यक्ति धूम्रपान करता है या नहीं।
- क्षेत्र: अमेरिका में आवासीय क्षेत्र।
- शुल्क: स्वास्थ्य बीमा द्वारा बिल किए गए चिकित्सा खर्च।
डेटा पूर्वप्रसंस्करण
प्रभावी डेटा पूर्वप्रसंस्करण किसी भी मशीन लर्निंग मॉडल की सफलता के लिए अत्यंत महत्वपूर्ण है। यहां पायथन की pandas
और sklearn
पुस्तकालयों का उपयोग करके पूर्वप्रसंस्करण चरणों का चरण-दर-चरण विवरण दिया गया है।
1. लाइब्रेरी आयात करना
12345
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snssns.set()
2. डेटासेट लोड करना
123
# Load the insurance datasetdata = pd.read_csv('S07_datasets_13720_18513_insurance.csv')print(data.head())
नमूना आउटपुट:
आयु
लिंग
बीएमआई
बच्चे
धूम्रपान करने वाला
क्षेत्र
शुल्क
19
महिला
27.900
0
हाँ
दक्षिण-पश्चिम
16884.92400
18
पुरुष
33.770
1
नहीं
दक्षिण-पूर्व
1725.55230
28
पुरुष
33.000
3
नहीं
दक्षिण-पूर्व
4449.46200
33
पुरुष
22.705
0
नहीं
उत्तर-पश्चिम
21984.47061
32
पुरुष
28.880
0
नहीं
उत्तर-पश्चिम
3866.85520
...
3. फीचर्स और लक्ष्य चर को अलग करना
12
X = data.iloc[:,:-1] # FeaturesY = data.iloc[:,-1] # Target variable (charges)
4. लेबल एन्कोडिंग
श्रेणीबद्ध चर को संख्यात्मक प्रारूपों में परिवर्तित करने की आवश्यकता होती है। हम 'लिंग' और 'धूम्रपान करने वाला' जैसे द्विआधारी श्रेणियों के लिए लेबल एन्कोडिंग का उपयोग करते हैं।
1234567
from sklearn import preprocessingle = preprocessing.LabelEncoder() # Encode 'sex' and 'smoker' columnsX['sex'] = le.fit_transform(X['sex'])X['smoker'] = le.fit_transform(X['smoker'])print(X.head())
नमूना आउटपुट:
आयु
लिंग
बीएमआई
बच्चे
धूम्रपान करने वाला
क्षेत्र
19
0
27.9
0
1
दक्षिण-पश्चिम
18
1
33.77
1
0
दक्षिण-पूर्व
28
1
33.0
3
0
दक्षिण-पूर्व
33
1
22.705
0
0
उत्तर-पश्चिम
32
1
28.88
0
0
उत्तर-पश्चिम
...
5. वन-हॉट एन्कोडिंग
द्विआधारी से अधिक श्रेणियों वाले श्रेणीबद्ध चर के लिए, वन-हॉट एन्कोडिंग पसंद की जाती है। यहाँ, 'क्षेत्र' कॉलम ऐसा एक श्रेणीबद्ध चर है।
1234567
from sklearn.preprocessing import OneHotEncoderfrom sklearn.compose import ColumnTransformer # Apply One-Hot Encoding to the 'region' columncolumnTransformer = ColumnTransformer([('encoder', OneHotEncoder(), [5])], remainder='passthrough')X = columnTransformer.fit_transform(X)print(X)
नमूना आउटपुट:
1234567
[[0. 0. 0. ... 27.9 0. 1. ] [0. 0. 1. ... 33.77 1. 0. ] [0. 0. 1. ... 33. 3. 0. ] ... [0. 0. 1. ... 36.85 0. 0. ] [0. 0. 0. ... 25.8 0. 0. ] [0. 1. 0. ... 29.07 0. 1. ]]
6. डेटा विभाजित करना
हम मॉडल के प्रदर्शन का मूल्यांकन करने के लिए डेटासेट को प्रशिक्षण और परीक्षण सेट में विभाजित करते हैं।
1234
from sklearn.model_selection import train_test_split # Split the data: 80% training and 20% testingX_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20, random_state=1)
SVR मॉडल बनाना और प्रशिक्षण देना
डेटा को पूर्वप्रसंस्कृत करने के बाद, हम अब sklearn
का उपयोग करके SVR मॉडल बना सकते हैं।
1. SVR आयात करना
1
from sklearn.svm import SVR
2. मॉडल प्रारंभ करना और प्रशिक्षण देना
12345
# Initialize the SVR model with default parametersmodel = SVR() # Train the model on the training datamodel.fit(X_train, y_train)
मॉडल आउटपुट:
1
SVR()
पूर्वानुमान करना और मॉडल का मूल्यांकन करना
प्रशिक्षण के बाद, हम मॉडल का उपयोग परीक्षण सेट पर पूर्वानुमान करने के लिए करते हैं और इसकी प्रदर्शन को R² स्कोर का उपयोग करके मूल्यांकन करते हैं।
1. पूर्वानुमान
12
# Predict on the test datay_pred = model.predict(X_test)
2. वास्तविक और पूर्वानुमानित मानों की तुलना
12345
# Create a DataFrame to compare actual and predicted chargescomparison = pd.DataFrame()comparison['Actual'] = y_testcomparison['Predicted'] = y_predprint(comparison.head())
नमूना आउटपुट:
वास्तविक
पूर्वानुमानित
1646.43
9111.903501
11353.23
9307.009935
8798.59
9277.155786
10381.48
9265.538282
2103.08
9114.774006
3. मॉडल मूल्यांकन
R² स्कोर यह संकेत देता है कि मॉडल के पूर्वानुमान वास्तविक डेटा से कितना मेल खाते हैं। R² स्कोर 1 के करीब होने पर यह बेहतर फिट को दर्शाता है।
12345
from sklearn.metrics import r2_score # Calculate the R² scorer2 = r2_score(y_test, y_pred)print(f'R² Score: {r2}')
आउटपुट:
1
R² Score: -0.1157396589643176
परिणामों की व्याख्या
-0.1157 का R² स्कोर यह दर्शाता है कि SVR मॉडल दिए गए डेटासेट पर खराब प्रदर्शन कर रहा है। रिग्रेशन विश्लेषण में, नकारात्मक R² मान यह संकेत करते हैं कि मॉडल डेटा को क्षैतिज रेखा से भी बदतर रूप में फिट करता है (यानी, लक्ष्य चर का माध्य मात्र पूर्वानुमान करने से भी बदतर)।
SVR ने खराब प्रदर्शन क्यों किया?
इस परिदृश्य में SVR के कम प्रदर्शन में कई कारक योगदान कर सकते हैं:
- डिफ़ॉल्ट हाइपरपैरामीटर: SVR के प्रदर्शन की इसकी हाइपरपैरामीटर (जैसे, कर्नेल प्रकार, C, एप्सिलॉन) के प्रति अत्यधिक संवेदनशीलता होती है। डिफ़ॉल्ट सेटिंग्स का उपयोग डेटा में अंतर्निहित पैटर्न को प्रभावी ढंग से कैप्चर नहीं कर सकता है।
- डेटासेट आकार: SVR सांख्यिकीय रूप से भारी हो सकता है, विशेष रूप से बड़े डेटासेट के साथ। 1,338 रिकॉर्डों वाला बीमा डेटासेट SVR के लिए प्रभावी ढंग से सामान्यीकरण करने में चुनौतियां पेश कर सकता है।
- फीचर स्केलिंग: SVR को इनपुट फीचर्स को उचित रूप से स्केल करने की आवश्यकता होती है। फीचर स्केलिंग की कमी उपयुक्त प्रदर्शन को प्रभावित कर सकती है।
- गैर-रेखीय संबंध: जबकि SVR कर्नेल फ़ंक्शंस का उपयोग करके गैर-रेखीय संबंधों को संभाल सकता है, कर्नेल और इसके पैरामीटर का चयन प्रदर्शन को काफी प्रभावित करता है।
SVR प्रदर्शन को बढ़ाना
SVR मॉडल के प्रदर्शन में सुधार के लिए, निम्नलिखित चरणों पर विचार करें:
1. फीचर स्केलिंग:
12345678910111213
from sklearn.preprocessing import StandardScaler # Initialize scalerssc_X = StandardScaler()sc_y = StandardScaler() # Fit and transform the training dataX_train = sc_X.fit_transform(X_train)y_train = sc_y.fit_transform(y_train.values.reshape(-1, 1)).ravel() # Transform the test dataX_test = sc_X.transform(X_test)y_test = sc_y.transform(y_test.values.reshape(-1, 1)).ravel()
2. हाइपरपैरामीटर ट्यूनिंग:
उत्तम हाइपरपैरामीटर खोजने के लिए ग्रिड सर्च के साथ क्रॉस-मान्यता जैसी तकनीकों का उपयोग करें।
1234567891011121314151617
from sklearn.model_selection import GridSearchCV # Define the parameter gridparam_grid = { 'C': [0.1, 1, 10, 100], 'epsilon': [0.01, 0.1, 0.2, 0.5], 'kernel': ['linear', 'rbf', 'poly']} # Initialize Grid Searchgrid_search = GridSearchCV(SVR(), param_grid, cv=5, scoring='r2', n_jobs=-1) # Fit Grid Searchgrid_search.fit(X_train, y_train) # Best parametersprint(grid_search.best_params_)
3. वैकल्पिक मॉडल:
देखी गई सीमाओं को देखते हुए, अन्य रिग्रेशन मॉडलों जैसे कि रैंडम फॉरेस्ट या XGBoost का अन्वेषण करना बेहतर परिणाम दे सकता है।
निष्कर्ष
सपोर्ट वेक्टर रिग्रेशन मशीन लर्निंग के आस्ते में एक शक्तिशाली उपकरण है, विशेषकर उन परिदृश्यों के लिए जो आउटलेर्स के खिलाफ मजबूती और उच्च-आयामी डेटा को संभालने की मांग करते हैं। हालांकि, इसकी प्रभावकारिता सावधानीपूर्वक पूर्वप्रसंस्करण और हाइपरपैरामीटर ट्यूनिंग पर निर्भर करती है। व्यावहारिक अनुप्रयोगों में, बीमा डेटासेट के साथ प्रदर्शित किया गया है, SVR एन्सेम्बल विधियों जैसे रैंडम फॉरेस्ट या ग्रेडिएंट बूस्टिंग की तुलना में कम प्रदर्शन कर सकता है, जो अक्सर रिग्रेशन कार्यों में बेहतर सटीकता प्रदान करते हैं।
SVR का लाभ उठाने के उद्देश्य से कार्यरत पेशेवरों के लिए, यह अनिवार्य है कि:
- फीचर्स को उचित रूप से स्केल करें: सुनिश्चित करें कि सभी फीचर्स मॉडल में समान रूप से योगदान दें।
- हाइपरपैरामीटर को अनुकूलित करें: मॉडल सेटिंग्स को बारीकी से ट्यून करने के लिए ग्रिड सर्च जैसी तकनीकों का उपयोग करें।
- वैकल्पिक मॉडलों का मूल्यांकन करें: कभी-कभी, अन्य एल्गोरिदम मौलिक रूप से प्राप्त कार्य के लिए बेहतर उपयुक्त हो सकते हैं।
SVR की ताकत और सीमाओं को समझकर, डेटा वैज्ञानिक सूचित निर्णय ले सकते हैं, जिससे उनके विशिष्ट उपयोग मामलों के लिए सबसे प्रभावी रिग्रेशन मॉडलों की तैनाती सुनिश्चित होती है।
अतिरिक्त संसाधन
अक्सर पूछे जाने वाले प्रश्न (FAQs)
1. मुझे अन्य रिग्रेशन मॉडलों की तुलना में सपोर्ट वेक्टर रिग्रेशन कब उपयोग करना चाहिए?
SVR विशेष रूप से तब उपयोगी होता है जब आप उच्च-आयामी डेटासेट्स के साथ काम कर रहे हों और जब फीचर्स और लक्ष्य चर के बीच संबंध गैर-रेखीय हो। यह तब भी लाभकारी होता है जब आपके डेटासेट में आउटलेर्स मौजूद हों, क्योंकि SVR उनके खिलाफ मजबूत होता है।
2. क्या SVR बड़े डेटासेट्स को प्रभावी ढंग से संभाल सकता है?
बड़े डेटासेट्स के साथ SVR सांख्यिकीय रूप से भारी हो सकता है, जिससे प्रशिक्षण समय लंबा हो सकता है। बड़े डेटासेट्स के लिए, रैंडम फॉरेस्ट या ग्रेडिएंट बूस्टिंग जैसे एन्सेम्बल विधियाँ अधिक प्रभावी हो सकती हैं और बेहतर प्रदर्शन प्रदान कर सकती हैं।
3. कर्नेल चयन SVR प्रदर्शन को कैसे प्रभावित करता है?
कर्नेल फ़ंक्शन डेटा को उच्च-आयामी स्थान में ट्रांसफ़ॉर्म करता है, जिससे मॉडल गैर-रेखीय संबंधों को कैप्चर कर सकता है। सामान्य कर्नेल्स में लीनियर, पॉलीनॉमियल (poly), और रेडियल बेसिस फ़ंक्शन (rbf) शामिल हैं। कर्नेल का चयन और इसके पैरामीटर (जैसे rbf में गामा) SVR के प्रदर्शन को काफी प्रभावित करते हैं।
4. क्या SVR के लिए फीचर स्केलिंग अनिवार्य है?
हाँ, फीचर स्केलिंग SVR के लिए महत्वपूर्ण है। स्केलिंग के बिना, बड़ी मानों वाले फीचर्स उद्देश्य फ़ंक्शन पर हावी हो सकते हैं, जिससे उपयुक्त नहीं प्रदर्शन होता है। स्केलिंग यह सुनिश्चित करता है कि सभी फीचर्स मॉडल में समान रूप से योगदान दें।
5. रिग्रेशन कार्यों के लिए SVR के विकल्प क्या हैं?
लोकप्रिय विकल्पों में लीनियर रिग्रेशन, डिसीजन ट्रीज़, रैंडम फॉरेस्ट्स, ग्रेडिएंट बूस्टिंग मशीनें (जैसे XGBoost), और न्यूरल नेटवर्क्स शामिल हैं। प्रत्येक के अपने ताकत हैं और यह विभिन्न प्रकार की रिग्रेशन समस्याओं के लिए उपयुक्त हैं।