फ़ीचर स्केलिंग का परिणाम


11

मैं वर्तमान में SVM का उपयोग कर रहा हूं और अपने प्रशिक्षण सुविधाओं को [0,1] की सीमा तक बढ़ा रहा हूं। मैं अपने प्रशिक्षण सेट को पहले फिट / रूपांतरित करता हूँ और फिर उसी परिवर्तन को अपने परीक्षण सेट में लागू करता हूँ। उदाहरण के लिए:

    ### Configure transformation and apply to training set
    min_max_scaler = MinMaxScaler(feature_range=(0, 1))
    X_train = min_max_scaler.fit_transform(X_train)

    ### Perform transformation on testing set
    X_test = min_max_scaler.transform(X_test)

मान लेते हैं कि प्रशिक्षण सेट में दी गई विशेषता की सीमा [0,100] है, और परीक्षण सेट में भी यही विशेषता [-10,120] की सीमा है। प्रशिक्षण सेट में उस सुविधा को [0,1] तक उचित रूप से बढ़ाया जाएगा, जबकि परीक्षण सेट में उस सुविधा को पहले निर्दिष्ट सीमा के बाहर एक सीमा तक बढ़ाया जाएगा, कुछ ऐसा [-0.1,1.2]।

मैं सोच रहा था कि मॉडल को प्रशिक्षित करने के लिए इस्तेमाल किए जा रहे परीक्षण रेंज के परिणाम क्या हैं? क्या ये एक दिक्कत है?

जवाबों:


6

प्रत्येक वर्ग के भीतर, आपके पास सुविधाओं के लिए मानों का वितरण होगा। यह अपने आप में चिंता का कारण नहीं है।

थोड़ा सैद्धांतिक दृष्टिकोण से, आप अपने आप से पूछ सकते हैं कि आपको अपनी सुविधाओं को क्यों मापना चाहिए और आपको उन्हें बिल्कुल चुने हुए तरीके से स्केल करना चाहिए।
एक कारण यह हो सकता है कि आपके विशेष प्रशिक्षण एल्गोरिथ्म को 0 - 1 के आसपास मूल्यों के साथ तेजी से (बेहतर) रूपांतरित करने के लिए जाना जाता है, जो उन विशेषताओं के साथ है जो परिमाण के अन्य आदेशों को कवर करते हैं। उस स्थिति में, आप शायद ठीक हैं। मेरा अनुमान है कि आपका एसवीएम ठीक है: आप आंतरिक उत्पाद के कारण बहुत बड़ी संख्या से बचना चाहते हैं, लेकिन अधिकतम 1.2 बनाम अधिकतम 1.0 बहुत अंतर नहीं लाएगा।
(OTOH, यदि आप उदाहरण के लिए जानते थे कि आपका एल्गोरिथ्म नकारात्मक मूल्यों को स्वीकार नहीं करता है, तो आप स्पष्ट रूप से परेशानी में होंगे।)

व्यावहारिक प्रश्न यह है कि क्या आपका मॉडल उन मामलों के लिए अच्छा प्रदर्शन करता है जो प्रशिक्षण द्वारा कवर की गई सीमा से थोड़ा बाहर हैं। मेरा मानना ​​है कि इस तरह के मामलों के साथ परीक्षण करके और संभवतः प्रशिक्षण डोमेन के बाहर के मामलों के लिए प्रदर्शन ड्रॉप के लिए परीक्षण परिणामों का निरीक्षण करके सबसे अच्छा और संभवतः उत्तर दिया जा सकता है। यह एक वैध चिंता का विषय है और इसे देखना आपके मॉडल के सत्यापन का हिस्सा होगा।

आपके द्वारा बताए गए आकार के अंतरों का अवलोकन करना IMHO मॉडल स्थिरता पर एक बहुत करीबी नज़र रखने का एक कारण है।


7

यह एक टिप्पणी के रूप में था, लेकिन यह बहुत लंबा है।

यह तथ्य कि आपके परीक्षण सेट की एक अलग सीमा है, यह संकेत हो सकता है कि प्रशिक्षण सेट परीक्षण सेट का अच्छा प्रतिनिधित्व नहीं है। हालांकि, यदि अंतर आपके उदाहरण के अनुसार वास्तव में छोटा है, तो संभावना है कि यह आपकी भविष्यवाणियों को प्रभावित नहीं करेगा। दुर्भाग्य से, मुझे नहीं लगता कि मेरे पास यह सोचने का एक अच्छा कारण है कि यह किसी भी परिस्थिति में एसवीएम को प्रभावित नहीं करेगा।

ध्यान दें कि MinMaxScalar का उपयोग करने का औचित्य (प्रलेखन के अनुसार) है:

इस स्केलिंग का उपयोग करने की प्रेरणा में सुविधाओं के बहुत छोटे मानक विचलन और विरल डेटा में शून्य प्रविष्टियों को संरक्षित करने के लिए मजबूती शामिल है।

इसलिए, आपके लिए यह सुनिश्चित करना महत्वपूर्ण है कि आपका डेटा उस मामले में फिट बैठता है।

यदि आप वास्तव में एक अंतर सीमा के बारे में चिंतित हैं, तो आपको preprocessing.scaleइसके बजाय एक नियमित मानकीकरण (जैसे ) का उपयोग करना चाहिए ।


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

क्या आपने MinMaxScaler और मानकीकरण का उपयोग करते हुए भविष्यवाणियों की तुलना की है?
रॉबर्ट स्मिथ

मेरे पास और परिणाम समान हैं, लेकिन यह वास्तव में मुझे नहीं बताता है कि क्या चीजें मिनमैक्सस्कलर के साथ खराब हो रही हैं।
माइक 1886

ज़रूर। किसी भी मामले में, मानकीकरण का उपयोग करना बेहतर होगा यदि आपको कुछ मूल्यवान नहीं मिल रहा है MinMaxScaler
रॉबर्ट स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.