अधिकतम मार्जिन वर्गीकार: Support Vectors और Hyperplane
शिक्षार्थी 2D नमूना डेटासेट पर मार्जिन अधिकतमकरण का दृश्यांकन करेंगे, support vectors की पहचान करेंगे और समझेंगे कि अधिकतम मार्जिन सामान्यीकरण को क्यों बेहतर बनाता है।
अधिकतम मार्जिन वर्गीकार: Support Vectors और Hyperplane, CoddyKit पर Machine Learning Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Machine Learning Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
SVM की मूल अवधारणा
Support Vector Machines (SVMs) ऐसे वर्गीकारक हैं जो दो वर्गों के बीच सर्वोत्तम विभाजन सीमा खोजते हैं। जब कई सीमाएँ वर्गों को अलग कर सकती हों, तो आपको किसे चुनना चाहिए? SVM का उत्तर सरल और प्रभावशाली है: ऐसी सीमा चुनें जो प्रत्येक प्रशिक्षण उदाहरण से जितना संभव हो उतनी दूर हो। इस अधिकतम दूरी वाली सीमा को अधिकतम-मार्जिन हाइपरप्लेन कहा जाता है और SVM के सैद्धांतिक आधार यह सुनिश्चित करते हैं कि यह मनमानी विभाजन सीमाओं की तुलना में अनदेखे डेटा पर बेहतर सामान्यीकरण करे।
हाइपरप्लेन क्या है?
2D में हाइपरप्लेन एक रेखा होता है (डेटा-स्थान से 1 आयाम कम)। 3D में यह एक समतल होता है। सामान्यतः p-आयामी स्थान में यह (p-1)-आयामी समतल सतह होती है, जिसे w·x + b = 0 समीकरण द्वारा परिभाषित किया जाता है। यहाँ w अभिलंब सदिश है (सतह पर लंबवत), x इनपुट विशेषता सदिश है और b बायस पद है। एक ओर के बिंदु w·x + b > 0 को संतुष्ट करते हैं (पूर्वानुमानित धनात्मक वर्ग), जबकि दूसरी ओर के बिंदु w·x + b < 0 को संतुष्ट करते हैं (पूर्वानुमानित ऋणात्मक वर्ग)।
मार्जिन: वर्गों के बीच का अंतर
मार्जिन निर्णय सीमा और प्रत्येक वर्ग के सबसे निकटतम प्रशिक्षण उदाहरणों के बीच की दूरी होती है। SVM निर्णय सीमा के समानांतर दो मार्जिन हाइपरप्लेन परिभाषित करता है: धनात्मक वर्ग की सीमा के लिए w·x + b = +1 और ऋणात्मक वर्ग की सीमा के लिए w·x + b = -1। मार्जिन की कुल चौड़ाई 2 / ||w|| होती है। मार्जिन को अधिकतम करने के लिए SVM ||w|| को न्यूनतम करता है (गणितीय सुविधा के लिए समतुल्य रूप से ||w||²/2), इस शर्त के साथ कि सभी बिंदुओं का सही वर्गीकरण हो।
सपोर्ट वेक्टर: महत्वपूर्ण उदाहरण
सपोर्ट वेक्टर वे प्रशिक्षण उदाहरण होते हैं जो ठीक मार्जिन हाइपरप्लेन पर स्थित होते हैं (जहाँ w·x + b = ±1)। निर्णय सीमा की स्थिति और अभिविन्यास निर्धारित करने वाले ये ही एकमात्र उदाहरण होते हैं। अन्य सभी प्रशिक्षण उदाहरण — जो सीमा से अधिक दूर होते हैं — इसे परिभाषित करने में कोई भूमिका नहीं निभाते। यह एक महत्वपूर्ण अंतर्दृष्टि है: SVM की निर्णय सीमा प्रशिक्षण डेटा के एक छोटे उपसमुच्चय से पूरी तरह निर्धारित होती है, जिससे वह प्रशिक्षण समुच्चय के अधिकांश भाग के प्रति मजबूत रहती है।
from sklearn.svm import SVC
from sklearn.datasets import make_classification
import numpy as np
X, y = make_classification(n_samples=50, n_features=2, n_informative=2,
n_redundant=0, random_state=42)
svm = SVC(kernel='linear', C=1.0)
svm.fit(X, y)
print('Number of support vectors:', svm.n_support_)
print('Support vector indices:', svm.support_[:5])
print('Total training examples:', len(X))scikit-learn के साथ रैखिक SVM का प्रशिक्षण
रैखिक अधिकतम-मार्जिन वर्गीकारक के लिए sklearn.svm.SVC को kernel='linear' के साथ उपयोग करें। फिट करने के बाद, किसी बिंदु के लिए निर्णय फ़ंक्शन का स्कोर निर्णय सीमा से उसकी चिह्नित दूरी होता है — वर्ग 1 के लिए धनात्मक और वर्ग 0 के लिए ऋणात्मक। decision_function() विधि ये कच्चे स्कोर लौटाती है, जबकि predict() चिह्न की सीमा लागू करके वर्ग लेबल तैयार करता है।
from sklearn.svm import SVC
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
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)
# StandardScaler is essential — SVM is sensitive to feature scales
model = make_pipeline(StandardScaler(), SVC(kernel='linear', C=1.0))
model.fit(X_train, y_train)
print('Test accuracy:', model.score(X_test, y_test))SVM से पहले विशेषताओं का मापन क्यों करें
SVM, डॉट गुणनफल w·x का उपयोग करके बिंदुओं और हाइपरप्लेन के बीच की दूरियाँ निकालते हैं। यदि एक विशेषता का परास 0 से 1 तक और दूसरी का 0 से 1,000,000 तक हो, तो बड़े पैमाने वाली विशेषता दूरी की गणना पर हावी हो जाएगी और SVM छोटे पैमाने वाली विशेषता को लगभग अनदेखा कर देगा। SVM का प्रशिक्षण करने से पहले हमेशा StandardScaler (या MinMaxScaler) लागू करें। शुरुआती शिक्षार्थियों की यह सबसे आम गलतियों में से एक है — विशेषताओं का मापन न किया गया हो तो एक पूर्ण हाइपरप्लेन भी विफल हो सकता है।
अधिकतम मार्जिन की ज्यामितीय समझ
कल्पना कीजिए कि दो कतारों में खड़े पेड़ों (वर्गों) के बीच एक सड़क बनाई जा रही है। सड़क का मध्य निर्णय सीमा है और उसकी चौड़ाई मार्जिन है। आपका लक्ष्य ऐसी सबसे चौड़ी सड़क बनाना है जो पेड़ों के बीच से गुज़र सके और किसी पेड़ से टकराए नहीं। सड़क के सबसे निकट वाले पेड़ सपोर्ट वेक्टर होते हैं। चौड़ी सड़क बेहतर होती है, क्योंकि उसमें अधिक सहनशीलता होती है — सड़क की चौड़ाई के भीतर कहीं भी नया पेड़ रखा जाए, तब भी वह सीमा के सही पक्ष में रहेगा।
द्वैत सूत्रीकरण और कर्नेल ट्रिक की झलक
SVM का प्रशिक्षण दो समतुल्य तरीकों से किया जा सकता है: प्राइमल रूप (सीधे w और b पर अनुकूलन) और ड्युअल रूप (लाग्रांज गुणकों के एक समुच्चय पर अनुकूलन, प्रशिक्षण के प्रत्येक उदाहरण के लिए एक गुणक)। ड्युअल रूप महत्वपूर्ण है, क्योंकि इसमें होने वाला अनुकूलन प्रशिक्षण उदाहरणों के बीच केवल डॉट गुणनफल पर निर्भर करता है। इन डॉट गुणनफलों को कर्नेल फ़ंक्शन से बदलने पर निर्देशांकों की स्पष्ट गणना किए बिना डेटा को अप्रत्यक्ष रूप से अधिक विमीय स्थान में मैप किया जाता है — यही प्रसिद्ध कर्नेल ट्रिक है, जो अरैखिक SVM को सक्षम बनाती है।
निर्णय फ़ंक्शन और सीमा से दूरी
SVM का decision_function() प्रत्येक बिंदु की निर्णय हाइपरप्लेन से चिह्नित दूरी लौटाता है। बड़े धनात्मक स्कोर वाले बिंदु विश्वास के साथ धनात्मक वर्ग में होते हैं; बड़े ऋणात्मक स्कोर ऋणात्मक वर्ग का संकेत देते हैं। शून्य के निकट बिंदु सीमा के पास होते हैं और सबसे अनिश्चित पूर्वानुमानों को दर्शाते हैं। नए डेटासेट पर निर्णय फ़ंक्शन के स्कोरों के वितरण की निगरानी करना एक उपयोगी निदान है — यदि अधिकांश स्कोर शून्य के पास एकत्रित हों, तो मॉडल डेटा के लिए उपयुक्त नहीं हो सकता है।
from sklearn.svm import SVC
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
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)
model = make_pipeline(StandardScaler(), SVC(kernel='linear', C=1.0))
model.fit(X_train, y_train)
scores = model.decision_function(X_test)
print('Decision function range:', np.round([scores.min(), scores.max()], 3))
print('Near-boundary (|score|<1):', np.sum(np.abs(scores) < 1))कठोर मार्जिन बनाम वास्तविक डेटा
अब तक वर्णित अधिकतम-मार्जिन सूत्रीकरण हार्ड मार्जिन SVM है, जिसके लिए पूर्ण रैखिक पृथक्करण आवश्यक होता है — कोई भी प्रशिक्षण बिंदु मार्जिन का उल्लंघन नहीं कर सकता। शोर और एक-दूसरे पर चढ़ते हुए वर्ग-वितरण के कारण वास्तविक दुनिया का डेटा लगभग कभी भी पूरी तरह रैखिक रूप से पृथक नहीं होता। ऐसे डेटा पर हार्ड-मार्जिन SVM लागू करने पर यह विफल हो जाएगा (अनुकूलन के लिए कोई संभव समाधान नहीं होगा)। व्यावहारिक समाधान सॉफ्ट-मार्जिन SVM है, जिसका परिचय अगले पाठ में दिया जाएगा। यह C दंड पैरामीटर द्वारा नियंत्रित कुछ मार्जिन उल्लंघनों की अनुमति देता है।
बहु-वर्गीय SVM: वन-वर्सस-वन
मूल SVM सूत्रीकरण द्विआधारी वर्गीकरण को संभालता है। बहु-वर्गीय समस्याओं के लिए scikit-learn का SVC डिफ़ॉल्ट रूप से वन-वर्सस-वन रणनीति का उपयोग करता है: यह वर्गों की प्रत्येक जोड़ी के लिए एक-एक करके k(k-1)/2 द्विआधारी वर्गीकारक प्रशिक्षित करता है और उस वर्ग का पूर्वानुमान करता है जिसे जोड़ीवार मतदान में सबसे अधिक मत मिलते हैं। 10 वर्गों के लिए इसका अर्थ 45 द्विआधारी वर्गीकारक है। दूसरा विकल्प वन-वर्सस-रेस्ट है (LinearSVC के माध्यम से), जिसमें k द्विआधारी वर्गीकारक प्रशिक्षित किए जाते हैं और प्रत्येक एक वर्ग को बाकी सभी वर्गों से अलग करता है। वन-वर्सस-वन सामान्यतः अधिक सटीक होता है, लेकिन कई वर्ग होने पर धीमा होता है।
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
X, y = load_iris(return_X_y=True) # 3 classes
model = make_pipeline(StandardScaler(), SVC(kernel='linear', decision_function_shape='ovo'))
scores = cross_val_score(model, X, y, cv=5)
print('Multi-class SVM (OVO) CV:', scores.mean().round(4))त्वरित जाँच
इस पाठ के अधिकतम-मार्जिन वर्गीकारक से संबंधित अपनी समझ की जाँच करें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: SVM दो वर्गों को अलग करने वाला अधिकतम-मार्जिन हाइपरप्लेन खोजते हैं, सपोर्ट वेक्टर मार्जिन पर स्थित वे महत्वपूर्ण उदाहरण हैं जो सीमा को परिभाषित करते हैं, और SVM का प्रशिक्षण करने से पहले विशेषताओं का मापन आवश्यक है। आगे हम सॉफ्ट-मार्जिन SVM और C पैरामीटर का अध्ययन करेंगे, जो नियंत्रित मार्जिन उल्लंघनों की अनुमति देता है।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “अधिकतम मार्जिन वर्गीकार: Support Vectors और Hyperplane” पाठ निःशुल्क है?
हाँ—“अधिकतम मार्जिन वर्गीकार: Support Vectors और Hyperplane” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Machine Learning Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Machine Learning Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“अधिकतम मार्जिन वर्गीकार: Support Vectors और Hyperplane” में मैं क्या सीखूँगा?
शिक्षार्थी 2D नमूना डेटासेट पर मार्जिन अधिकतमकरण का दृश्यांकन करेंगे, support vectors की पहचान करेंगे और समझेंगे कि अधिकतम मार्जिन सामान्यीकरण को क्यों बेहतर बनाता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Machine Learning Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Machine Learning Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Machine Learning Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“अधिकतम मार्जिन वर्गीकार: Support Vectors और Hyperplane” पाठ पूरा करने में कितना समय लगता है?
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 का समायोजन