html
मशीन लर्निंग में एन्सेम्बल तकनीकों में महारत: वोटिंग क्लासीफायर और मैनुअल एन्सेम्बल्स पर गहरा ज्ञान
मशीन लर्निंग के निरंतर विकसित हो रहे परिदृश्य में, इष्टतम मॉडल प्रदर्शन प्राप्त करने के लिए अक्सर कई एल्गोरिदम का उपयोग करना आवश्यक होता है। यहीं पर एन्सेम्बल तकनीकें काम में आती हैं। एन्सेम्बल विधियाँ विभिन्न मॉडलों की ताकतों को मिलाकर किसी एकल मॉडल की तुलना में अधिक सटीक और मजबूत भविष्यवाणियाँ प्रदान करती हैं। इस व्यापक मार्गदर्शिका में, हम दो महत्वपूर्ण एन्सेम्बल तकनीकों का अन्वेषण करेंगे: वोटिंग क्लासीफायर और मैनुअल एन्सेम्बल्स। हम Python की scikit-learn लाइब्रेरी का उपयोग करके उनके कार्यान्वयन पर चर्चा करेंगे, जिसे Kaggle के एक मौसम डेटासेट के व्यावहारिक उदाहरण के साथ पूरा किया गया है।
सामग्री तालिका
- एन्सेम्बल तकनीकों का परिचय
- वोटिंग क्लासीफायर समझना
- मैनुअल एन्सेम्बल विधियों का अन्वेषण
- व्यावहारिक कार्यान्वयन: मौसम पूर्वानुमान
- निष्कर्ष
एन्सेम्बल तकनीकों का परिचय
एन्सेम्बल लर्निंग मशीन लर्निंग में एक शक्तिशाली परिपाटी है जहाँ कई मॉडल, जिन्हें अक्सर "कमजोर शिक्षार्थी" कहा जाता है, को रणनीतिक रूप से मिलाकर एक "मजबूत शिक्षार्थी" का निर्माण किया जाता है। मौलिक सिद्धांत यह है कि जबकि व्यक्तिगत मॉडलों की सटीकता में विविधता हो सकती है, उनकी सामूहिक बुद्धिमत्ता से प्रदर्शन में सुधार, विविधता में कमी, और सामान्यीकरण में वृद्धि हो सकती है।
एन्सेम्बल तकनीकें क्यों उपयोग करें?
- सटीकता में सुधार: कई मॉडलों को मिलाने से अक्सर बेहतर पूर्वानुमानकारी प्रदर्शन प्राप्त होता है।
- ओवरफिटिंग में कमी: एन्सेम्बल व्यक्तिगत मॉडलों के बायस और वेरिएंस को संतुलित करके ओवरफिटिंग को कम कर सकते हैं।
- बहुमुखी प्रतिभा: विभिन्न क्षेत्रों में लागू करने योग्य और विभिन्न प्रकार के मॉडलों के साथ संगत।
वोटिंग क्लासीफायर समझना
वोटिंग क्लासीफायर सबसे सरल और प्रभावी एन्सेम्बल विधियों में से एक है। यह कई अलग-अलग मॉडलों से भविष्यवाणियों को मिलाकर उस वर्ग को आउटपुट करता है जिसे बहुसंख्यक वोट प्राप्त होता है।
हार्ड वोटिंग बनाम सॉफ्ट वोटिंग
- हार्ड वोटिंग: अंतिम भविष्यवाणी प्रत्येक मॉडल से प्राप्त वर्गों का मोड होता है। मूल रूप से, प्रत्येक मॉडल को समान वोट मिलता है, और सबसे अधिक वोट प्राप्त करने वाला वर्ग जीतता है।
- सॉफ्ट वोटिंग: केवल पूर्वानुमानित वर्गों पर निर्भर रहने के बजाय, सॉफ्ट वोटिंग प्रत्येक वर्ग की पूर्वानुमानित संभावनाओं पर विचार करती है। अंतिम भविष्यवाणी संभावनाओं के योग पर आधारित होती है, और सबसे उच्च संयुक्त संभावना वाला वर्ग चुना जाता है।
Python में वोटिंग क्लासीफायर का कार्यान्वयन
आइए Python की scikit-learn लाइब्रेरी का उपयोग करके एक व्यावहारिक कार्यान्वयन में गहराई से जाते हैं। हम एक मौसम डेटासेट का उपयोग करेंगे यह भविष्यवाणी करने के लिए कि क्या कल बारिश होगी।
1. आवश्यक लाइब्रेरी इम्पोर्ट करना
12345678
import pandas as pdimport numpy as npimport seaborn as snsfrom sklearn.model_selection import train_test_splitfrom sklearn.impute import SimpleImputerfrom sklearn.preprocessing import OneHotEncoder, LabelEncoder, StandardScalerfrom sklearn.feature_selection import SelectKBest, chi2from sklearn.metrics import accuracy_score, classification_report
2. डेटा लोड करना और प्रीप्रोसेसिंग
12345
# Load the datasetdata = pd.read_csv('weatherAUS - tiny.csv') # Display the last few rowsprint(data.tail())
3. गायब डेटा को संभालना
12345678910111213
# Separate features and targetX = data.iloc[:, :-1]y = data.iloc[:, -1] # Numeric columnsnumerical_cols = X.select_dtypes(include=['int64', 'float64']).columnsimputer_num = SimpleImputer(strategy='mean')X[numerical_cols] = imputer_num.fit_transform(X[numerical_cols]) # Categorical columnscategorical_cols = X.select_dtypes(include=['object']).columnsimputer_cat = SimpleImputer(strategy='most_frequent')X[categorical_cols] = imputer_cat.fit_transform(X[categorical_cols])
4. श्रेणीबद्ध चरों को एन्कोड करना
12345678
# One-Hot Encodingencoder = OneHotEncoder(drop='first', sparse=False)encoded_cols = encoder.fit_transform(X[categorical_cols])encoded_col_names = encoder.get_feature_names_out(categorical_cols)X_encoded = pd.DataFrame(encoded_cols, columns=encoded_col_names) # Combine with numerical featuresX = pd.concat([X[numerical_cols], X_encoded], axis=1)
5. फीचर चयन
12345678910
# Feature Scalingscaler = StandardScaler()X_scaled = scaler.fit_transform(X) # Selecting top 5 featuresselector = SelectKBest(score_func=chi2, k=5)X_new = selector.fit_transform(X_scaled, y)selected_features = selector.get_support(indices=True)feature_names = X.columns[selected_features]print(f"Selected Features: {feature_names}")
6. ट्रेन-टेस्ट स्प्लिट
123
X_train, X_test, y_train, y_test = train_test_split( X_new, y, test_size=0.20, random_state=1)
7. व्यक्तिगत क्लासीफायर बनाना
1234567891011121314151617
from sklearn.neighbors import KNeighborsClassifierfrom sklearn.linear_model import LogisticRegressionfrom sklearn.naive_bayes import GaussianNBfrom sklearn.svm import SVCfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.ensemble import RandomForestClassifier, AdaBoostClassifierimport xgboost as xgb # Initialize modelsknn = KNeighborsClassifier(n_neighbors=3)lr = LogisticRegression(random_state=0, max_iter=200)gnb = GaussianNB()svc = SVC(probability=True)dtc = DecisionTreeClassifier()rfc = RandomForestClassifier(n_estimators=500, max_depth=5)abc = AdaBoostClassifier()xgb_model = xgb.XGBClassifier(use_label_encoder=False, eval_metric='logloss')
8. व्यक्तिगत मॉडलों को ट्रेनिंग देना और मूल्यांकन करना
123456789101112131415161718
# List of models and their namesmodels = [ ('KNN', knn), ('Logistic Regression', lr), ('GaussianNB', gnb), ('SVC', svc), ('Decision Tree', dtc), ('Random Forest', rfc), ('AdaBoost', abc), ('XGBoost', xgb_model)] # Training and evaluatingfor name, model in models: model.fit(X_train, y_train) y_pred = model.predict(X_test) accuracy = accuracy_score(y_pred, y_test) print(f"{name} Accuracy: {accuracy:.4f}")
नमूना आउटपुट:
12345678
KNN Accuracy: 0.8455Logistic Regression Accuracy: 0.8690GaussianNB Accuracy: 0.8220SVC Accuracy: 0.8700Decision Tree Accuracy: 0.8345Random Forest Accuracy: 0.8720AdaBoost Accuracy: 0.8715XGBoost Accuracy: 0.8650
9. वोटिंग क्लासीफायर का कार्यान्वयन
123456789101112131415161718192021222324
from sklearn.ensemble import VotingClassifier # Initialize Voting Classifier with soft votingvoting_clf = VotingClassifier( estimators=[ ('knn', knn), ('lr', lr), ('gnb', gnb), ('svc', svc), ('dtc', dtc), ('rfc', rfc), ('abc', abc), ('xgb', xgb_model) ], voting='soft') # Train Voting Classifiervoting_clf.fit(X_train, y_train) # Predict and evaluatey_pred_voting = voting_clf.predict(X_test)voting_accuracy = accuracy_score(y_pred_voting, y_test)print(f"Voting Classifier Accuracy: {voting_accuracy:.4f}")
नमूना आउटपुट:
1
Voting Classifier Accuracy: 0.8650
मैनुअल एन्सेम्बल विधियों का अन्वेषण
जबकि वोटिंग क्लासीफायर एन्सेम्बल लर्निंग के लिए एक सरल दृष्टिकोण प्रदान करते हैं, मैनुअल एन्सेम्बल विधियाँ पूर्वानुमान मॉडलों को संयोजित करने के लिए कस्टम रणनीतियों की अनुमति देकर अधिक लचीलापन प्रदान करती हैं। यह खंड व्यक्तिगत क्लासीफायरों की पूर्वानुमानित संभावनाओं को औसत करके मैनुअल एन्सेम्बल कार्यान्वयन की प्रक्रिया को समझाता है।
स्टेप-बाय-स्टेप मैनुअल एन्सेम्बल कार्यान्वयन
1. व्यक्तिगत मॉडलों के साथ संभावनाओं की भविष्यवाणी करना
12345
# Predict probabilities with KNNp1 = knn.predict_proba(X_test) # Predict probabilities with Logistic Regressionp2 = lr.predict_proba(X_test)
2. संभावनाओं का औसत लेना
12
# Average the predicted probabilitiesp_avg = (p1 + p2) / 2
3. औसत संभावनाओं के आधार पर अंतिम भविष्यवाणी
123456
# Convert averaged probabilities to final predictionsy_pred_manual = np.argmax(p_avg, axis=1) # Evaluate accuracymanual_accuracy = accuracy_score(y_pred_manual, y_test)print(f"Manual Ensemble Accuracy: {manual_accuracy:.4f}")
नमूना आउटपुट:
1
Manual Ensemble Accuracy: 0.8600
व्यावहारिक कार्यान्वयन: मौसम पूर्वानुमान
एन्सेम्बल तकनीकों के उपयोग को स्पष्ट करने के लिए, हम Kaggle के एक मौसम डेटासेट का उपयोग करेंगे जो विभिन्न मौसमीय कारकों के आधार पर यह पूर्वानुमान करता है कि क्या कल बारिश होगी।
डेटा प्रीप्रोसेसिंग
प्रभावी मशीन लर्निंग मॉडल बनाने के लिए उचित डेटा प्रीप्रोसेसिंग महत्वपूर्ण है। इसमें गायब मानों को संभालना, श्रेणीबद्ध चरों को एन्कोड करना, प्रासंगिक फीचर्स का चयन करना, और डेटा को स्केलिंग शामिल है।
1. गायब डेटा को संभालना
- संख्यात्मक फीचर्स: औसत रणनीति का उपयोग करके इम्प्यूट किया गया।
- श्रेणीबद्ध फीचर्स: सबसे सामान्य रणनीति का उपयोग करके इम्प्यूट किया गया।
2. श्रेणीबद्ध चरों को एन्कोड करना
- वन-हॉट एन्कोडिंग: दो से अधिक अद्वितीय श्रेणियों वाले श्रेणीबद्ध फीचर्स पर लागू किया गया।
- लेबल एन्कोडिंग: द्विअर्थी श्रेणीबद्ध फीचर्स पर लागू किया गया।
3. फीचर चयन
SelectKBest का उपयोग करते हुए ची-स्क्वायर सांख्यिकी के साथ शीर्ष 5 फीचर्स का चयन करना जो लक्ष्य चर के साथ सबसे मजबूत संबंध रखते हैं।
4. फीचर स्केलिंग
StandardScaler को लागू करके फीचर सेट को सामान्यीकृत करना, यह सुनिश्चित करते हुए कि प्रत्येक फीचर मॉडल के प्रदर्शन में समान योगदान देता है।
मॉडल निर्माण
कई व्यक्तिगत क्लासीफायरों का निर्माण और मूल्यांकन किया गया, जिसमें K-Nearest Neighbors, Logistic Regression, Gaussian Naive Bayes, Support Vector Machines, Decision Trees, Random Forests, AdaBoost, और XGBoost शामिल थे।
एन्सेम्बल विधियों का मूल्यांकन
उनके प्रदर्शन का आकलन करने के लिए वोटिंग क्लासीफायर और मैनुअल एन्सेम्बल दोनों को लागू किया गया।
निष्कर्ष
एन्सेम्बल तकनीकें, विशेषकर वोटिंग क्लासीफायर और मैनुअल एन्सेम्बल्स, एक मशीन लर्निंग प्रैक्टिशनर के हथियारबंद में अनमोल उपकरण हैं। कई मॉडलों को रणनीतिक रूप से मिलाकर, ये विधियाँ पूर्वानुमानकारी प्रदर्शन में सुधार करती हैं, ओवरफिटिंग के जोखिम को कम करती हैं, और विविध एल्गोरिदम की ताकतों का लाभ उठाती हैं। चाहे आप उच्च सटीकता की ओर अग्रसर हों या अधिक मजबूत मॉडल बनाना चाहते हों, एन्सेम्बल विधियों में महारत हासिल करना आपके मशीन लर्निंग प्रोजेक्ट्स को महत्वपूर्ण रूप से ऊँचा उठा सकता है।
मुख्य निष्कर्ष:
- वोटिंग क्लासीफायर: बहुमत वोटिंग या संभावना औसतन का उपयोग करके कई मॉडलों को मिलाने का एक सरल लेकिन प्रभावी तरीका प्रदान करता है।
- मैनुअल एन्सेम्बल: यह पूर्वानुमानों को संयोजित करने के तरीके पर विस्तृत नियंत्रण प्रदान करता है, जिससे कस्टमाइज्ड रणनीतियाँ संभव होती हैं जो मानकीकृत एन्सेम्बल विधियों से बेहतर प्रदर्शन कर सकती हैं।
- डेटा प्रीप्रोसेसिंग: यह सुनिश्चित करने के लिए आवश्यक है कि आपके मॉडल साफ, सुव्यवस्थित डेटा पर प्रशिक्षित हों, जो सीधे एन्सेम्बल तकनीकों की प्रभावकारिता को प्रभावित करता है।
- मॉडल मूल्यांकन: हमेशा व्यक्तिगत मॉडलों के मुकाबले एन्सेम्बल विधियों की तुलना करें ताकि उनके अतिरिक्त मूल्य को सत्यापित किया जा सके।
अपने मशीन लर्निंग मॉडलों की पूरी क्षमता को अनलॉक करने के लिए एन्सेम्बल लर्निंग को अपनाएँ और अपने प्रोजेक्ट्स में अधिक सटीक, भरोसेमंद भविष्यवाणियाँ प्राप्त करें।
कीवर्ड्स: Ensemble Techniques, Voting Classifier, Manual Ensemble, Machine Learning, Python, scikit-learn, Model Accuracy, Data Preprocessing, Feature Selection, Weather Forecasting, K-Nearest Neighbors, Logistic Regression, Gaussian Naive Bayes, Support Vector Machines, Decision Trees, Random Forests, AdaBoost, XGBoost