scikit-learn में गैर-नकारात्मक डेटा के लिए प्रतिगमन मेट्रिक चुनना
गैर-नकारात्मक डेटा के लिए एक प्रतिगमन मेट्रिक चुनने के लिए पहले अनुमान लक्ष्य तय करें, फिर MAE, RMSE, या पिनबॉल हानि जैसी एक संगत हानि चुनें, और अंत में एक स्थिर बेसलाइन के साथ D2-शैली के स्कोर की तुलना करें।
इस पृष्ठ पर
संक्षिप्त उत्तर
अनुमान के लक्ष्य और निर्णय के उद्देश्य से शुरू करें, मेट्रिक सूची से नहीं। गिनती या राशि जैसी गैर-नकारात्मक मात्राओं के लिए, mean_absolute_error एक सरल गैर-नकारात्मक हानि है जिसका सर्वोत्तम मान 0.0 है और यह रैखिक लागत व्याख्या प्रदान करता है, जबकि root_mean_squared_error भी गैर-नकारात्मक है जिसका सर्वोत्तम मान 0.0 है लेकिन यह बड़ी गलतियों को अधिक दंडित करता है। यदि आपको एक संरक्षित ऊपरी अनुमान चाहिए, तो एक क्वांटाइल रिग्रेसर को प्रशिक्षित करें और इसे make_scorer(mean_pinball_loss, alpha=0.95) जैसे पिनबॉल-आधारित स्कोरर के साथ मूल्यांकन करें। एक स्थिर बेसलाइन के साथ D2-शैली के स्कोर की तुलना करें, और क्रॉस-वैलिडेशन या खोज में कई मेट्रिक्स को एक साथ मूल्यांकन करें। यदि कोई स्कोरिंग फ़ंक्शन बाहरी रूप से लागू किया गया है, तो उसका सीधे उपयोग करें; अन्यथा, प्रशिक्षण और मूल्यांकन दोनों के लिए एक ही सख्त रूप से संगत मेट्रिक प्राथमिकता दें।
अनुमान लक्ष्य से शुरू करें, मेट्रिक सूची से नहीं
मेट्रिक चयन निर्णय के उद्देश्य और अनुमानित कार्यात्मक का अनुसरण करना चाहिए, उपलब्ध स्कोर की सूची का नहीं। scikit-learn के मॉडल मूल्यांकन मार्गदर्शन में, पहला प्रश्न यह है कि क्या स्कोरिंग फ़ंक्शन बाहरी रूप से लागू किया गया है, उदाहरण के लिए एक प्रतियोगिता या व्यावसायिक अनुबंध द्वारा। यदि यह लागू है, तो उस स्कोरिंग फ़ंक्शन का सीधे उपयोग करें। यदि आप चुनने के लिए स्वतंत्र हैं, तो मार्गदर्शन कहता है कि अंतिम लक्ष्य और अनुमान के अनुप्रयोग से शुरू करें, फिर अनुमान बनाने और निर्णय लेने के बीच अंतर करें।
प्रतिगमन के लिए, प्रतिक्रिया को आमतौर पर एक वितरण वाले यादृच्छिक चर के रूप में व्यवहार किया जाता है, इसलिए एक बिंदु अनुमान आमतौर पर माध्य, माध्यिका या एक क्वांटाइल जैसे कार्यात्मक को लक्षित करता है। एक बार जब वह कार्यात्मक तय हो जाता है, तो मार्गदर्शन उस कार्यात्मक के लिए एक सख्त रूप से संगत स्कोरिंग फ़ंक्शन का उपयोग करने की सिफारिश करता है। एक सख्त रूप से संगत स्कोरिंग फ़ंक्शन उस कार्यात्मक के लिए पूर्वानुमान और वास्तविक लक्ष्य कार्यात्मक के बीच की दूरी को मापने के साथ संरेखित होता है, और इसका उपयोग प्रशिक्षण हानि और मूल्यांकन मेट्रिक दोनों के रूप में किया जा सकता है। यह संरेखण इसलिए महत्वपूर्ण है क्योंकि यह प्रशिक्षण और मूल्यांकन को एक ही भाषा बोलने में रखता है।
गैर-नकारात्मक लक्ष्यों जैसे कि गिनती या राशियों के लिए, इसका अर्थ है कि आपको यह तय करना चाहिए कि क्या आप एक माध्य-जैसा बिंदु पूर्वानुमान, एक माध्यिका-जैसा बिंदु पूर्वानुमान, या एक ऊपरी सीमा जैसा क्वांटाइल चाहते हैं, और फिर उस चयन के साथ संगत एक मेट्रिक चुनें। मेट्रिक सूची उस निर्णय के बाद है।
व्यावहारिक सुझाव
जब व्यावसायिक प्रभाव गैर-नकारात्मक मात्राओं पर पूर्ण त्रुटि में लगभग रैखिक हो, तो mean_absolute_error से शुरू करें क्योंकि यह हितधारकों को समझाना आसान है और इसका सर्वोत्तम मान 0.0 है। यदि बड़ी गलतियां असमान रूप से महंगी हैं, तो root_mean_squared_error पर स्विच करें और स्पष्ट रूप से बताएं कि यह बड़े विचलनों को अधिक दंडित करता है। क्वांटाइल लक्ष्यों जैसे कि एक संरक्षित ऊपरी अनुमान के लिए, एक क्वांटाइल रिग्रेसर को प्रशिक्षित करें और इसे चुने गए alpha पर एक पिनबॉल-आधारित स्कोरर के साथ मूल्यांकन करें, फिर एक स्थिर बेसलाइन के साथ D2-शैली के स्कोर का उपयोग करके तुलना करें ताकि सुधार एक साधारण नियम के खिलाफ मापा जाए, एक मनमानी संख्या के खिलाफ नहीं।
गिनती या राशियों पर पूर्ण त्रुटि मायने रखती है तो MAE का उपयोग करें
माध्य पूर्ण त्रुटि एक गैर-नकारात्मक प्रतिगमन हानि है जिसका सर्वोत्तम मान 0.0 है, और यह पूर्ण विचलनों का औसत लेने के कारण इसे समझना सीधा है। scikit-learn दस्तावेज़ीकरण इसे एक गैर-नकारात्मक फ्लोटिंग पॉइंट मान के रूप में वर्णित करता है जहाँ सर्वोत्तम मान 0.0 है, और यह नमूना भार और बहु-आउटपुट समूहीकरण का समर्थन करता है।
गैर-नकारात्मक लक्ष्यों के लिए, MAE अक्सर एक अच्छा पहला विकल्प होता है जब व्यावसायिक प्रभाव पूर्ण त्रुटि में लगभग रैखिक हो। यदि 3 इकाइयों की गलती 1 इकाई की गलती से लगभग तीन गुना महंगी है, तो MAE उस अंतर्दृष्टि को RMSE जैसे वर्ग-हानि मेट्रिक से कहीं अधिक सीधे मिलाता है। कार्य उदाहरण एक छोटी गैर-नकारात्मक श्रृंखला दिखाता है जहाँ औसत पूर्ण त्रुटि 1.0 है।
एक व्यावहारिक चेतावनी यह है कि MAE प्रत्येक पूर्ण त्रुटि में रैखिक है, इसलिए यह वर्ग-त्रुटि मेट्रिक की तुलना में बहुत बड़ी गलतियों के प्रति कम संवेदनशील है, लेकिन यह चरम त्रुटियों को अनदेखा करने जैसा नहीं है। कम आउटलायर संवेदनशीलता चरम त्रुटियों को अनदेखा करने के बराबर नहीं है।
from sklearn.metrics import mean_absolute_error
y_true = [0, 2, 5, 9]
y_pred = [1, 2, 4, 10]
mae = mean_absolute_error(y_true, y_pred)
print(mae)
# 1.0बड़ी त्रुटियां महंगी हों तो RMSE या माध्य वर्ग त्रुटि का उपयोग करें
माध्य वर्ग त्रुटि का वर्गमूल भी एक गैर-नकारात्मक प्रतिगमन हानि है जिसका सर्वोत्तम मान 0.0 है, और इसे scikit-learn संस्करण 1.4 में जोड़ा गया था। क्योंकि यह त्रुटियों को वर्ग करने से पहले औसत लेता है और फिर वर्गमूल लेता है, यह MAE की तुलना में बड़े विचलनों पर अधिक जोर देता है।
यह RMSE को एक उचित विकल्प बनाता है जब बड़ी गलतियां असमान रूप से महंगी होती हैं, उदाहरण के लिए जब एक गैर-नकारात्मक राशि की कम-अनुमान या अधिक-अनुमान की लागत गैर-रैखिक होती है। कार्य उदाहरण MAE उदाहरण के समान इनपुट का उपयोग करता है और एक थोड़ा बड़ा मान दिखाता है क्योंकि वर्गीकरण के तहत सबसे बड़ी त्रुटि अधिक योगदान देती है।
एक आम गलतफहमी RMSE को सामान्य तौर पर त्रुटियों के मानक विचलन के रूप में मानना है। वह समानता विशेष शर्तों जैसे शून्य माध्य त्रुटि और मेल खाने वाले भाजक की आवश्यकता है, इसलिए RMSE का वर्णन एक त्रुटि मानक विचलन के बराबर करने के बजाय इसकी संवेदनशीलता प्रोफ़ाइल द्वारा करना सुरक्षित है। इसके अलावा, सापेक्ष परिवर्तनों का अनुवाद करते समय, उन्हें मूल हर से फिर से गणना करें और हर RMSE अनुवाद में वर्गमूल बनाए रखें।
from sklearn.metrics import root_mean_squared_error
y_true = [0, 2, 5, 9]
y_pred = [1, 2, 4, 10]
rmse = root_mean_squared_error(y_true, y_pred)
print(rmse)
# 1.118033988749895गैर-नकारात्मक डेटा पर गैर-सममित जोखिम के लिए क्वांटाइल और पिनबॉल हानि पर विचार करें
जब लक्ष्य एक केंद्रीय बिंदु पूर्वानुमान नहीं बल्कि गैर-नकारात्मक मांग के लिए एक संरक्षित ऊपरी अनुमान है, तो क्वांटाइल प्रतिगमन और पिनबॉल हानि उपयोगी हैं। scikit-learn दस्तावेज़ीकरण mean_pinball_loss दिखाता है और बताता है कि आप एक विशिष्ट alpha के साथ एक स्कोरर बना सकते हैं, उदाहरण के लिए make_scorer(mean_pinball_loss, alpha=0.95)।
उस स्कोरर का उपयोग क्रॉस-वैलिडेशन के माध्यम से एक क्वांटाइल रिग्रेसर की सामान्यीकरण प्रदर्शन का मूल्यांकन करने के लिए किया जा सकता है, और यदि चिह्न इस प्रकार बदल दिया जाए कि अधिक अच्छा हो, तो इसका उपयोग हाइपरपैरामीटर ट्यूनिंग के लिए भी किया जा सकता है। दस्तावेज़ीकरण एक ग्रेडिएंट बूस्टिंग प्रतिगमन के लिए पूर्वानुमान अंतराल पर एक उदाहरण की भी ओर इशारा करता है, जहाँ पिनबॉल हानि का उपयोग गैर-सममित शोर और आउटलायर वाले डेटा पर क्वांटाइल प्रतिगमन का मूल्यांकन और ट्यूनिंग करने के लिए किया जाता है।
यह गैर-नकारात्मक डेटा के लिए महत्वपूर्ण है क्योंकि जोखिम असममित हो सकता है: मांग का कम-अनुमान करना इसके अधिक-अनुमान करने से अधिक महंगा हो सकता है, या इसके विपरीत। एक क्वांटाइल लक्ष्य आपको उस असममिति को सीधे लक्षित करने देता है, और पिनबॉल हानि इसे मूल्यांकन करने का एक संगत तरीका प्रदान करती है।
from sklearn.metrics import mean_pinball_loss, make_scorer
mean_pinball_loss_95p = make_scorer(mean_pinball_loss, alpha=0.95)
# Illustrative use with a quantile regressor:
# cross_val_score(estimator, X, y, cv=5, scoring=mean_pinball_loss_95p)D2 शैली के कौशल स्कोर का उपयोग करके एक स्थिर आधार रेखा के साथ तुलना करें
scikit-learn दस्तावेज़ में D2 को deviance के समझाए गए अंश के रूप में वर्णित किया गया है, और यह R2 का एक सामान्यीकरण है जहाँ वर्ग त्रुटि को deviance के विकल्प जैसे कि Tweedie, pinball, या माध्य निरपेक्ष त्रुटि द्वारा प्रतिस्थापित किया जाता है। यह एक कौशल स्कोर का रूप है और इसे 1 घटा (मॉडल deviance का शून्य-मॉडल deviance से अनुपात) के रूप में गणना की जाती है।
शून्य पूर्वानुमान चुनी गई deviance पर निर्भर करता है: Tweedie के लिए यह y_true का माध्य है, निरपेक्ष त्रुटि के लिए यह माध्यिका है, और pinball हानि के लिए यह alpha-क्वान्टाइल है। एक स्थिर मॉडल जो हमेशा उस शून्य मान का पूर्वानुमान करता है, उसका D2 0.0 होता है, सबसे अच्छा संभव स्कोर 1.0 है, और स्कोर ऋणात्मक भी हो सकता है क्योंकि एक मॉडल शून्य मॉडल से यादृच्छिक रूप से बदतर हो सकता है।
गैर-नकारात्मक प्रतिगमन के लिए, यह सहायक है क्योंकि यह सुधार को एक स्वेच्छिक निरपेक्ष संख्या के बजाय एक सरल स्थिर आधार रेखा के सापेक्ष ढालता है। यदि आप pinball-आधारित D2 चुनते हैं, तो आधार रेखा स्वयं प्रासंगिक क्वान्टाइल बन जाती है, जो एक क्वान्टाइल पूर्वानुमान लक्ष्य से मेल खाता है।
क्रॉस-वैलिडेशन और खोज में एक साथ कई मेट्रिक्स का मूल्यांकन करें
scikit-learn GridSearchCV, RandomizedSearchCV और cross_validate में कई मेट्रिक्स के मूल्यांकन की अनुमति देता है। दस्तावेज़ कई स्कोरिंग मेट्रिक्स निर्दिष्ट करने के तीन तरीके वर्णित करता है: स्ट्रिंग मेट्रिक नामों के एक पुनरावृत्ति के रूप में, एक स्कोरर नाम को स्कोरिंग फ़ंक्शन या पूर्वनिर्धारित स्ट्रिंग से मैप करने वाले dict के रूप में, या स्कोर का dict लौटाने वाले callable के रूप में।
गैर-नकारात्मक प्रतिगमन के लिए, यह उपयोगी है क्योंकि एक मेट्रिक शायद ही पूरी कहानी बताए। आप रैखिक व्याख्यात्मकता के लिए MAE, बड़ी गलतियों के प्रति संवेदनशीलता के लिए RMSE, और एक क्वान्टाइल लक्ष्य के लिए pinball-आधारित स्कोरर चाहते हो सकते हैं, सभी को एक ही क्रॉस-वैलिडेशन विभाजन पर मूल्यांकित किया जाता है।
दस्तावेज़ से एक व्यावहारिक नोट यह है कि n_jobs greater than 1 के साथ उपयोग किए जाने वाले कस्टम स्कोरर तब अधिक मजबूत होते हैं जब वे एक अन्य मॉड्यूल से आयात किए जाते हैं बजाय इनलाइन परिभाषित करने के। साथ ही एक हानि को स्कोरर के रूप में लपेटते समय चिह्न सम्मेलन पर ध्यान दें, क्योंकि greater_is_better यह मेल खाना चाहिए कि मेट्रिक एक हानि है या एक स्कोर।
from sklearn.model_selection import cross_validate
from sklearn.metrics import mean_absolute_error, root_mean_squared_error, make_scorer
scoring = {
'mae': make_scorer(mean_absolute_error),
'rmse': make_scorer(root_mean_squared_error),
}
# cv_results = cross_validate(estimator, X, y, scoring=scoring, cv=5)डमी अनुमानकों का उपयोग करके एक प्रतिगमन स्वस्थ्य जाँच करें
scikit-learn दस्तावेज़ डमी अनुमानकों को पर्यवेक्षित शिक्षण करते समय एक सरल स्वस्थ्य जाँच के रूप में वर्णित करता है: अपने अनुमानक की तुलना सरल नियमों के साथ करें। DummyClassifier वर्गीकरण के लिए कई रणनीतियों को लागू करता है, और वही विचार प्रतिगमन आधार रेखाओं के संदर्भ में भी लागू होता है, जहाँ एक स्थिर या सरल नियम यह निर्णय लेने में सहायक होता है कि क्या एक मॉडल तुच्छ पूर्वानुमानों से बेहतर है।
दस्तावेज़ यह जोर देता है कि इन डमी रणनीतियों के साथ predict विधि इनपुट डेटा को पूरी तरह से अनदेखा करती है, जो ठीक वही है जो उन्हें आधार रेखाओं के रूप में उपयोगी बनाता है: वे दिखाते हैं कि जब मॉडल कोई फीचर जानकारी का उपयोग नहीं करता है तो प्रदर्शन कैसा दिखता है।
गैर-नकारात्मक प्रतिगमन के लिए, एक स्थिर आधार रेखा विशेष रूप से सूचित करने वाली हो सकती है जब इसे D2-शैली के स्कोर के साथ जोड़ा जाए, क्योंकि शून्य मॉडल चुनी गई deviance के सापेक्ष परिभाषित होता है। यदि आपका मॉडल एक समझदार स्थिर नियम को हरा नहीं सकता, तो यह फीचर, लक्ष्य रूपांतरण, या मूल्यांकन मेट्रिक को दोहराने के लिए एक मजबूत संकेत है।
प्रशिक्षण हानि, मूल्यांकन मेट्रिक और व्यावसायिक स्कोरिंग को संरेखित करें
मॉडल मूल्यांकन मार्गदर्शन कहता है कि एक बार जब एक कठोर रूप से सुसंगत स्कोरिंग फ़ंक्शन चुन लिया जाता है, तो प्रशिक्षण और मूल्यांकन दोनों के लिए इसका उपयोग करना सबसे अच्छा है। यह सिफारिश विशेष रूप से गैर-नकारात्मक प्रतिगमन के लिए प्रासंगिक है क्योंकि लक्ष्य कार्यात्मक और लागत संरचना मेट्रिक को संचालित करनी चाहिए, सुविधा नहीं।
यदि एक स्कोरिंग फ़ंक्शन बाहरी रूप से लागू किया जाता है, तो उसे सीधे उपयोग करें, भले ही यह सबसे सुविधाजनक प्रशिक्षण हानि न हो। यदि आप चुनने के लिए स्वतंत्र हैं, तो एक मेट्रिक चुनें जो पूर्वानुमान लक्ष्य से मेल खाता हो और फिर जहाँ संभव हो प्रशिक्षण और मूल्यांकन को उससे संरेखित करें।
व्यावहारिक रूप से, इसका अर्थ हो सकता है कि एक माध्य या माध्यिका-उन्मुख बिंदु पूर्वानुमान के लिए MAE या RMSE का उपयोग करना, एक क्वान्टाइल लक्ष्य के लिए pinball हानि का उपयोग करना, और एक स्थिर आधार रेखा के सापेक्ष सुधार संचार करने के लिए D2-शैली के स्कोर का उपयोग करना। मुख्य बात यह है कि मेट्रिक निर्णय समस्या को प्रतिबिंबित करना चाहिए, और जब आप चुनने की स्वतंत्रता रखते हैं तो वही तर्क प्रशिक्षण और मूल्यांकन दोनों को मार्गदर्शित करना चाहिए।
क्या जाँचें
- पहले अनुमान कार्यात्मक की पुष्टि करें: माध्य, माध्यिका, क्वांटाइल, या पूर्ण वितरण, क्योंकि मेट्रिक चयन उस चयन का अनुसरण करता है।
- mean_absolute_error का उपयोग करें जब गैर-नकारात्मक गिनती या राशियों पर पूर्ण त्रुटि मायने रखती है और व्यावसायिक प्रभाव लगभग रैखिक हो।
- root_mean_squared_error का उपयोग करें जब बड़ी त्रुटियां असमान रूप से महंगी हों, क्योंकि यह MAE की तुलना में बड़े विचलनों पर अधिक जोर देता है।
- क्वांटाइल लक्ष्यों के लिए, make_scorer(mean_pinball_loss, alpha=...) के साथ एक स्कोरर बनाएं और क्वांटाइल रिग्रेसर का मूल्यांकन या ट्यूनिंग इसके साथ करें।
- मॉडल की तुलना एक स्थिर बेसलाइन के खिलाफ D2-शैली के स्कोर का उपयोग करके करें, याद रखें कि शून्य अनुमान चुने गए डेविएंस पर निर्भर करता है।
- कई मेट्रिक्स को एक साथ मूल्यांकन करने के लिए GridSearchCV, RandomizedSearchCV, या cross_validate में सूची, शब्दकोश, या शब्दकोश लौटाने वाले कॉल करने योग्य को पास करें।
- एक डमी अनुमानक का उपयोग एक प्रतिगमन स्वस्थ जांच के रूप में करें ताकि देखा जा सके कि क्या मॉडल एक तुच्छ नियम से बेहतर है।
- यदि कोई स्कोरिंग फ़ंक्शन बाहरी रूप से लागू किया गया है, तो उसका सीधे उपयोग करें; अन्यथा, प्रशिक्षण हानि और मूल्यांकन मेट्रिक को एक ही सख्त रूप से संगत स्कोरिंग फ़ंक्शन के साथ संरेखित करें।
उपयोग की सीमाएँ
दी गई स्रोत सामग्री हर गैर-नकारात्मक प्रतिगमन स्थिति के लिए एक पूर्ण निर्णय नियम नहीं देती है। मेट्रिक चयन अभी भी अनुप्रयोग, लागत संरचना और अनुमानित लक्ष्य कार्यात्मक पर निर्भर करता है। केवल गैर-नकारात्मक डेटा ही सर्वोत्तम मेट्रिक निर्धारित नहीं करता। कस्टम स्कोरर और बहु-मेट्रिक मूल्यांकन को समानांतरीकरण और चिह्न परंपराओं के साथ अतिरिक्त सावधानी की आवश्यकता हो सकती है, उदाहरण के लिए जब greater_is_better को हानि के लिए सही ढंग से सेट करना आवश्यक हो। स्रोतों में उदाहरण illustrative हैं और डेटासेट विवरण, यादृच्छिक अवस्थाओं, या पुस्तकालय संस्करणों पर निर्भर कर सकते हैं।