क्रॉस-सत्यापन के बाद पूर्ण डेटासेट के साथ प्रशिक्षण?


139

क्रॉस-वेलिडेशन के बाद हमेशा पूर्ण डेटासेट के साथ प्रशिक्षित करना एक अच्छा विचार है ? इसे दूसरे तरीके से डालें, क्या मेरे डेटासेट के सभी नमूनों के साथ प्रशिक्षण लेना ठीक है और यह जांचने में सक्षम नहीं है कि क्या यह विशेष फिटिंग ओवरफिट है ?


समस्या पर कुछ पृष्ठभूमि:

कहो कि मैं मॉडल का एक परिवार है जो द्वारा । यह भी कहें कि मेरे पास डेटा बिंदुओं का एक सेट है और मैं उस मॉडल को चुनने के लिए के-फोल्ड क्रॉस-मान्यता के साथ मॉडल का चयन करता हूं जो डेटा को सामान्य करता है। एनαN

मॉडल चयन के लिए, मैं प्रत्येक उम्मीदवार के लिए k- गुना क्रॉस-सत्यापन चलाकर, उदाहरण के लिए, पर एक खोज (जैसे एक ग्रिड खोज) कर सकता हूं । क्रॉस-सत्यापन में प्रत्येक तह में, मैं सीखे हुए मॉडल साथ समाप्त होता हूं । βαα βα

क्रॉस-वैलिडेशन की बात यह है कि इनमें से प्रत्येक तह के लिए मैं जांच सकता हूं कि क्या सीखा मॉडल ओवरफिट था, इसे "अनदेखी डेटा" पर परीक्षण करके। परिणामों के आधार पर, मैं मॉडल को चुन सकता था जो कि पैरामीटर लिए सीखा गया था जो ग्रिड खोज में क्रॉस सत्यापन के दौरान सामान्यीकृत होता है।α सबसे अच्छाβbestαbest

अब, का कहना है कि मॉडल चयन के बाद , मैं उपयोग करना चाहते हैं सब मेरी डेटासेट में अंक और उम्मीद है कि एक बेहतर मॉडल सीखते हैं। इसके लिए मैं उस मॉडल के अनुरूप पैरामीटर उपयोग कर सकता हूं, जिसे मैंने मॉडल चयन के दौरान चुना था, और फिर संपूर्ण डेटासेट पर प्रशिक्षण के बाद, मुझे एक नया सीखा मॉडल । समस्या यह है कि, अगर मैं प्रशिक्षण के लिए अपने डेटासेट में सभी बिंदुओं का उपयोग करें, है मैं जांच नहीं कर सकता है, तो इस नए सीखा मॉडल overfits किसी भी अनदेखी डेटा पर। इस समस्या के बारे में सोचने का सही तरीका क्या है?अल्फाएस टी β यू एल एल β यू एल एलNαbestβfull βfull


2
लगभग एक सटीक डुप्लिकेट: आंकड़े.stackexchange.com/questions/52274 बहुत सारे योग्य उत्तरों के साथ। शायद इन धागों का विलय हो जाना चाहिए लेकिन मुझे यकीन नहीं है कि यह किस दिशा में है। दोनों ने जवाब स्वीकार किए हैं जो बहुत अच्छे हैं।
अमीबा

जवाबों:


111

क्रॉस-वैलिडेशन के बारे में सोचने का तरीका मॉडल के प्रदर्शन का अनुमान लगाने के बजाय मॉडल के निर्माण के लिए एक विधि का उपयोग करके प्राप्त प्रदर्शन का अनुमान लगाना है।

यदि आप किसी मॉडल के हाइपरपामेटर्स ( s) का अनुमान लगाने के लिए क्रॉस-वैलिडेशन का उपयोग करते हैं और फिर उन मॉडल को पूरे डेटासेट में फिट करने के लिए उन हाइपर-पैरामीटर्स का उपयोग करते हैं, तो यह ठीक है, बशर्ते कि आप यह पहचान लें कि क्रॉस-वेलिडेशन का अनुमान है प्रदर्शन की संभावना (संभवतः काफी हद तक) आशावादी पक्षपाती होने की संभावना है। ऐसा इसलिए है क्योंकि क्रॉस-मान्यता प्रदर्शन को कम करने के लिए मॉडल (हाइपर-मापदंडों) के हिस्से को चुना गया है, इसलिए यदि क्रॉस-वैधीकरण आंकड़े में गैर-शून्य संस्करण है (और यह होगा) ओवर-फिटिंग की संभावना है मॉडल चयन मानदंड।α

यदि आप हाइपर-मापदंडों को चुनना चाहते हैं और परिणामी मॉडल के प्रदर्शन का अनुमान लगाते हैं, तो आपको एक नेस्टेड क्रॉस-वेलिडेशन करने की आवश्यकता है, जहां मॉडल के प्रदर्शन का आकलन करने के लिए बाहरी क्रॉस-सत्यापन का उपयोग किया जाता है, और प्रत्येक गुना क्रॉस में- सत्यापन का उपयोग प्रत्येक तह में अलग से हाइपर-मापदंडों को निर्धारित करने के लिए किया जाता है। आप हाइपर-मापदंडों को चुनने के लिए पूरे सेट पर क्रॉस-वैलिडेशन का उपयोग करके अंतिम मॉडल का निर्माण करते हैं और फिर अनुकूलित हाइपर-मापदंडों का उपयोग करके पूरे डेटासेट पर क्लासिफायरियर का निर्माण करते हैं।

यह निश्चित रूप से कम्प्यूटेशनल रूप से महंगा है, लेकिन इसके लायक है क्योंकि अनुचित प्रदर्शन अनुमान द्वारा पेश किए गए पूर्वाग्रह बड़े हो सकते हैं। मेरा पेपर देखिए

GC Cawley और NLC टैलबोट, मॉडल चयन में ओवर-फिटिंग और प्रदर्शन मूल्यांकन में बाद के चयन पूर्वाग्रह, जर्नल ऑफ मशीन लर्निंग रिसर्च, 2010। रिसर्च, वॉल्यूम। 11, पीपी। 2079-2107, जुलाई 2010. ( www , पीडीएफ )

हालांकि, मॉडल चयन में ओवर-फिटिंग करना अभी भी संभव है (नेस्टेड क्रॉस-वैलिडेशन सिर्फ आपको इसके लिए परीक्षण करने की अनुमति देता है)। एक विधि जो मुझे उपयोगी लगी है वह है क्रॉस-वेलिडेशन त्रुटि के लिए एक नियमितीकरण शब्द जोड़ना जो अति-पैरामीटर मॉडल में परिणाम के लिए हाइपर-पैरामीटर मानों को दंडित करता है, देखें

GC Cawley और NLC टैलबोट, हाइपर-मापदंडों के बेसेसियन नियमितीकरण के माध्यम से मॉडल चयन में ओवर-फिटिंग को रोकना, जर्नल ऑफ़ मशीन लर्निंग रिसर्च, वॉल्यूम 8, पृष्ठ 841-861, अप्रैल 2007। ( www , पीडीएफ )

तो आपके प्रश्न के उत्तर हैं (i) हां, आपको अपने अंतिम मॉडल का उत्पादन करने के लिए पूर्ण डेटासेट का उपयोग करना चाहिए क्योंकि आप जितना अधिक डेटा का उपयोग करते हैं, वह उतना ही सामान्य होने की संभावना है, लेकिन (ii) सुनिश्चित करें कि आप निष्पक्ष प्रदर्शन अनुमान प्राप्त करते हैं नेस्टेड क्रॉस-वैलिडेशन और संभावित रूप से मॉडल चयन में ओवर-फिटिंग से बचने के लिए क्रॉस-वैलिडेशन स्टेटिस्टिक को दंडित करने पर विचार करें।


3
+1: प्रश्न का उत्तर दें: "यदि आप किसी मॉडल (αs) के हाइपरपैरामीटर का अनुमान लगाने के लिए क्रॉस-वैलिडेशन का उपयोग करते हैं और फिर उन मॉडल को पूरे डेटासेट में फिट करने के लिए उन हाइपर-मापदंडों का उपयोग करते हैं, तो यह ठीक है ..."
नील जी

4
@soufanom, नहीं, मॉडल के संबंध में विकल्प बनाने के लिए "प्रारंभिक प्रयोगों" का उपयोग ओवर-फिटिंग में होने की संभावना है और लगभग निश्चित रूप से प्रदर्शन विश्लेषण में एक आशावादी पूर्वाग्रह का परिचय देगा। प्रदर्शन विश्लेषण के लिए उपयोग किए जाने वाले क्रॉस-सत्यापन को प्रत्येक तह में स्वतंत्र रूप से मॉडल को फिट करने में इस्तेमाल किए गए हर कदम को दोहराना होगा। मेरे पेपर के प्रयोगों से पता चलता है कि कर्नेल मॉडल इस तरह के पूर्वाग्रह के प्रति बहुत संवेदनशील हो सकते हैं, इसलिए सभी संभव कठोरता के साथ मॉडल का चयन और प्रदर्शन मूल्यांकन करना महत्वपूर्ण है।
डिक्रान मार्सुपियल

3
कर्नेल विधियों के लिए, जैसे एसवीएम, अक्सर बिना किसी कम्प्यूटेशनल लागत के छुट्टी-एक-आउट क्रॉस-सत्यापन करना संभव होता है (मेरे उत्तर में सूचीबद्ध कागजात देखें)। मैं प्रदर्शन मूल्यांकन के लिए k- गुना क्रॉस-सत्यापन में निहित, हाइपर-मापदंडों को ट्यूनिंग के लिए इस "आभासी" छुट्टी-एक-आउट क्रॉस-सत्यापन का उपयोग करता हूं। तब लागत काफी उचित है। मेरी राय में यह किसी भी प्रक्रिया का उपयोग करने के लिए स्वीकार्य नहीं है जहां प्रदर्शन मूल्यांकन हाइपर-मापदंडों के ट्यूनिंग द्वारा किसी भी तरह से पक्षपाती है। यह एक विश्वसनीय अनुमान प्राप्त करने के लिए कम्प्यूटेशनल व्यय के लायक है।
डिक्रान मार्सुपियल

2
@DikranMarsupial। मुझे आपके उत्तर में तीसरा पैराग्राफ नहीं मिला। यदि मैं क्रॉस-वैलिडेशन को नेस्ट करता हूं, तो मुझे बाहरी सीवी के प्रत्येक फोल्ड के लिए हाइपरपरमेटर्स का एक अलग सेट मिलेगा (यानी मुझे मापदंडों के ग्रिड पर इनर सीवी चलाने से हाइपरपैरमीटर का एक सेट मिलता है )। फिर मैं हाइपरपरमेटर्स का सबसे अच्छा सेट कैसे चुनूं?
एमेलियो वाज़केज़-रीना

1
क्रॉस-वैलिडेशन अनिवार्य रूप से विधि के बजाय, किसी मॉडल को फिट करने की विधि के प्रदर्शन का अनुमान लगाने का एक साधन है। इसलिए प्रदर्शन अनुमान प्राप्त करने के लिए नेस्टेड क्रॉस-वैलिडेशन करने के बाद, पूरे डेटासेट का उपयोग करके अंतिम मॉडल का पुनर्निर्माण करें, उस प्रक्रिया का उपयोग करके जिसे आपने क्रॉस-वेलिडेट किया है (जिसमें हाइपर-मापदंडों का चयन भी शामिल है)।
डिक्रान मार्सुपियल जूल

23

बस @ mark999 द्वारा उत्तर में जोड़ने के लिए, मैक्स कुह्न के caretपैकेज (वर्गीकरण और प्रतिगमन प्रशिक्षण) बूटस्ट्रैप क्रॉस सत्यापन या एन-गुना सीवी और कुछ अन्य योजनाओं के साथ-साथ मॉडल चयन के लिए आर में सबसे व्यापक स्रोत है।

rmsपैकेज की महानता की अवहेलना करने के लिए नहीं , लेकिन caretआप आर में उपलब्ध हर सीखने की विधि को बहुत अधिक फिट करते हैं, जबकि validateकेवल rmsतरीकों (मुझे लगता है) के साथ काम करता है ।

caretपैकेज प्रक्रिया डेटा, फिट पूर्व और किसी भी लोकप्रिय मॉडल का मूल्यांकन करने के लिए एक एकल बुनियादी सुविधाओं है, इसलिए यह सभी तरीकों के लिए उपयोग करने के लिए आसान है और कई प्रदर्शन उपायों की चित्रमय मूल्यांकन (कुछ है कि अगले overfit समस्या का मॉडल चयन काफी प्रभावित करते हैं हो सकता है के रूप में प्रदान करता है अच्छी तरह से) अपने ग्रिड और चर महत्व पर।

पैकेज विगनेट्स आरंभ करने के लिए देखें (यह बहुत उपयोग करने के लिए सरल है)
डाटा Preprocessing
कैरट के साथ वैरिएबल चयन
कैरट के साथ मॉडल बिल्डिंग
चर महत्व

आप पैकेज के बारे में अधिक जानकारी और विशिष्ट कार्यान्वयन उदाहरणों के लिए कैरेट वेबसाइट भी देख सकते हैं:
आधिकारिक वेबसाइट


धन्यवाद। क्या आप जानते हैं कि, मॉडल चयन के बाद (जिसे कॉल करके किया जाता है train), संपूर्ण डेटासेट के साथ प्रशिक्षित करने का एक तरीका है?
एमिलियो वाज़क्वेज़-रीना

यकीन नहीं होता है कि यह एक अच्छा विचार है या आप ऐसा क्यों करना चाहते हैं, लेकिन आप बस अंतिम मॉडल को ट्रेन द्वारा पूर्ण डेटा सेट पर लौटा सकते हैं।
मोमो

16

मेरा मानना ​​है कि फ्रैंक हरेल क्रॉस सत्यापन के बजाय बूटस्ट्रैप सत्यापन की सिफारिश करेंगे। बूटस्ट्रैप सत्यापन आपको पूर्ण डेटा सेट पर फिट किए गए मॉडल को मान्य करने की अनुमति देगा, और क्रॉस सत्यापन की तुलना में अधिक स्थिर है। आप इसे validateहरेल के rmsपैकेज में आर का उपयोग करके कर सकते हैं ।

अधिक जानकारी के लिए एफ्रॉन और टिबशिरानी की पुस्तक "रिग्रेशन मॉडलिंग रणनीतियाँ" को हार्लेल और / या "एन इंट्रोडक्शन टू द बूटस्ट्रैप" देखें।


9
"खराब सीवी" के बारे में अगले मिथक को छोड़ने के लिए, यह एक शब्दावली समस्या है - हैरेल की "क्रॉस वेलिडेशन" का अर्थ है एन-गुना सीवी, और "बूटस्ट्रैप सत्यापन" का अर्थ है सीवी को फिर से खोलना। जाहिर है मैं मानता हूं कि यह दूसरा स्वाद अधिक स्थिर और समग्र अच्छा है, लेकिन यह भी एक प्रकार का क्रॉस सत्यापन है।

1
mark999 या @mbq, क्या आप इस बात पर विचार करेंगे कि बूटस्ट्रैप किसी को पूर्ण डेटासेट पर फिट किए गए मॉडल को मान्य करने की अनुमति कैसे देगा?
एमिलियो वाज़क्वेज़-रीना

1
@ user27915816 अच्छी तरह से, सिद्धांत रूप में; क्रॉस-मान्यता के पीछे का विचार यह है कि आप परीक्षण करते हैं कि क्या दी गई प्रशिक्षण पद्धति मज़बूती से एक सेट पर बहुत अच्छे मॉडल बना रही है जो अंतिम एक के समान है, और, यदि हां, तो इस अवलोकन को एक मूक मान्यताओं के साथ पूर्ण सेट के लिए सामान्यीकृत करें कि कुछ भी अजीब नहीं होगा और आपके द्वारा उपयोग की जाने वाली CV विधि किसी भी तरह से पक्षपाती नहीं है। यह निश्चित रूप से लगभग हमेशा काफी अच्छा है, फिर भी आप कभी भी यह सुनिश्चित नहीं कर सकते हैं कि आपके द्वारा बनाए गए सभी डेटा पर निर्मित मॉडल ओवरफीड नहीं है।

14

मुझे लगता है कि आपके पास यहां विभिन्न प्रश्नों का एक समूह है:

समस्या यह है कि, यदि मैं प्रशिक्षण के लिए अपने डेटासेट के सभी बिंदुओं का उपयोग करता हूं, तो मैं यह नहीं जान सकता कि क्या यह नया सीखा हुआ मॉडल overfull ओवरफिट है!

बात यह है, आप केवल एक चीज के लिए (एक) सत्यापन कदम का उपयोग कर सकते हैं: या तो पैरामीटर अनुकूलन के लिए, (x) या मूल्यांकन सत्यापन के प्रदर्शन के लिए।

इसलिए, यदि आप क्रॉस वेलिडेशन (या किसी अन्य प्रकार के डेटा-संचालित पैरामीटर निर्धारण) द्वारा पैरामीटर ऑप्टिमाइज़ेशन करते हैं, तो आपको परीक्षण नमूनों की आवश्यकता होती है जो उन प्रशिक्षण और अनुकूलन नमूनों से स्वतंत्र हैं। डिक्रान इसे नेस्टेड क्रॉस वेलिडेशन कहते हैं, दूसरा नाम डबल क्रॉस वेलिडेशन है। या, ज़ाहिर है, एक स्वतंत्र परीक्षण सेट।

तो यहाँ इस पोस्ट के लिए सवाल है: क्या k- गुना क्रॉस-सत्यापन के बाद पूरे डेटासेट के साथ प्रशिक्षित करना अच्छा है? या αbest के लिए क्रॉस-वेलिडेशन स्प्लिट्स में सीखी गई किसी एक मॉडल के साथ रहना बेहतर है?

क्रॉस सत्यापन मॉडल में से एक का उपयोग करना आमतौर पर पूर्ण सेट पर प्रशिक्षण से भी बदतर है (कम से कम यदि आपका सीखने की अवस्था का प्रदर्शन = f (nsamples) अभी भी बढ़ रहा है। व्यवहार में, यह है: यदि यह नहीं था, तो आप शायद सेट होते)। एक स्वतंत्र परीक्षण सेट।)

यदि आप क्रॉस सत्यापन मॉडल (समान मापदंडों के साथ) के बीच बड़े बदलाव का निरीक्षण करते हैं, तो आपके मॉडल अस्थिर हैं। उस मामले में, मॉडल को एकत्रित करना मदद कर सकता है और वास्तव में पूरे डेटा पर प्रशिक्षित एक मॉडल का उपयोग करने से बेहतर हो सकता है ।

अपडेट: इस एकत्रीकरण के पीछे विचार यह है जीतना प्रतिस्थापन (पार सत्यापन) के बिना resampling के बजाय प्रतिस्थापन के साथ resampling के लिए आवेदन किया (बूटस्ट्रैप / आउट-ऑफ-बूटस्ट्रैप सत्यापन)।

यहां एक पेपर है, जहां हमने इस तकनीक का उपयोग किया है:
बेलेइट्स, सी। एंड सैल्जर, आर .: छोटे नमूना आकार की स्थितियों में रसायनमितीय मॉडल की स्थिरता का आकलन और सुधार, गुदा बायोएनल केम, 390, 1261-1271 (2008)।
DOI: 10.1007 / s00216-007-1818-6

शायद सबसे महत्वपूर्ण बात, मैं अपने डेटासेट में सभी बिंदुओं के साथ कैसे प्रशिक्षण ले सकता हूं और फिर भी ओवरफिटिंग से लड़ सकता हूं?

"सर्वश्रेष्ठ" मॉडल के लिए अनुमत स्वतंत्रता की डिग्री के साथ बहुत रूढ़िवादी होने के नाते, यानी अनुकूलन क्रॉस सत्यापन परिणामों पर (यादृच्छिक) अनिश्चितता को ध्यान में रखकर। यदि df वास्तव में क्रॉस सत्यापन मॉडल के लिए उपयुक्त हैं, तो संभावना अच्छी है कि वे बड़े प्रशिक्षण सेट के लिए बहुत अधिक नहीं हैं । नुकसान यह है कि पैरामीटर अनुकूलन वास्तव में कई परीक्षण है। आपको गलती से अच्छे दिखने वाले पैरामीटर सेटों की रक्षा करने की आवश्यकता है।


...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...क्या आप इसे थोड़ा और समझा सकते हैं? उदाहरण के लिए, यदि मैं 10-k क्रॉस वैरिफाइड सेटअप में लॉजिस्टिक रिग्रेशन चला रहा हूं और गुणांक के 10 सेट के साथ समाप्त होता है, तो क्या आप अंतिम मॉडल बनाने के लिए कोएफ़ अनुमानों को एकत्र करने की सलाह देते हैं? यदि हां, तो यह कैसे किया जा सकता है, बस साधन ले रहा है?
ज़ुर्बर्ब 27'14

@cbeleites आप पर विस्तृत कर सकते हैं If the d.f. are actually appropriate for the cross validation models। मेरी समझ में आप यह तर्क दे रहे हैं कि संपूर्ण डेटा सेट की तुलना में ट्रेन / सत्यापन सेट बहुत बड़े नहीं हैं, क्या मैं सही हूं?
jpcgandre

1
@jpcgandre: आगे के उपयोग के लिए सरोगेट मॉडल में से एक का चयन करना वास्तव में एक डेटा-संचालित मॉडल चयन है, जिसका अर्थ है कि आपको सत्यापन के बाहरी स्वतंत्र स्तर की आवश्यकता है। और सामान्य तौर पर, जब तक आपके पास पर्याप्त मामले नहीं हैं, तो आप वास्तव में परीक्षण के आधार पर सांख्यिकीय रूप से सार्थक मॉडल तुलना कर सकते हैं1k

1
इससे भी महत्वपूर्ण बात: पुनरावृत्त क्रॉस सत्यापन सरोगेट मॉडल हाइपरपरमेटर्स के समान सेट को साझा करते हैं। यही है, वे सभी महत्वपूर्ण हैं जो आपको महत्वपूर्ण हैं, लेकिन प्रशिक्षण और परीक्षण मामलों का मनमाना चयन। वास्तव में "अच्छा" मॉडल का चयन करना मुख्य रूप से एक अच्छा परीक्षण / प्रशिक्षण सेट संयोजन का चयन करना चाहिए - जो मौलिक रूप से वह है जो हम आमतौर पर नहीं चाहते हैं: हम एक ऐसा विकल्प चाहते हैं जो अच्छी तरह से सामान्य हो रहा है और इस प्रकार न केवल अनुकूल मामलों के लिए काम कर रहा है। इस दृष्टिकोण से, "सामान्य" क्रॉस सत्यापन से सरोगेट मॉडल का चयन करने से मुझे कोई मतलब नहीं है।
cbeleites

1
@jpcgandre: (df) मेरा तर्क है कि पर प्रशिक्षण के लिए उपयुक्त एक मॉडल जटिलता चुनना11k

6

आप जो करते हैं वह क्रॉस वेलिडेशन नहीं है, बल्कि कुछ प्रकार के स्टोकेस्टिक अनुकूलन हैं।

सीवी का विचार वस्तुओं के एक सबसेट पर मॉडल के निर्माण के कई दौरों और शेष लोगों पर परीक्षण करके अनदेखी डेटा पर एक प्रदर्शन का अनुकरण करना है। सभी राउंड के कुछ औसत परिणाम पूरे सेट पर प्रशिक्षित मॉडल के प्रदर्शन का अनुमान है

आपके मॉडल चयन के मामले में, आपको प्रत्येक पैरामीटर सेट के लिए एक पूर्ण CV करना चाहिए, और इस प्रकार प्रत्येक सेटअप के लिए एक पूर्ण-पूर्ण-सेट प्रदर्शन सन्निकटन प्राप्त करना चाहिए, इसलिए वह चीज़ जो आप चाहते थे।

हालांकि, ध्यान दें कि यह बिल्कुल गारंटी नहीं है कि सबसे अच्छा अनुमानित सटीकता वाला मॉडल वास्तव में सबसे अच्छा होगा - आप पूरे मॉडल चयन प्रक्रिया को पार करने के लिए यह देख सकते हैं कि पैरामीटर स्पेस में कुछ रेंज मौजूद है जिसके लिए अंतर मॉडल सटीकता महत्वपूर्ण नहीं हैं।


2
β

@AmV यदि ऐसा है, तो ठीक है - जैसा कि मैंने लिखा है, CV पहले से ही पूर्ण सेट परिदृश्य का परीक्षण करता है, आप नए डेटा के बिना अधिक नहीं कह सकते। फिर से, आप अधिकतम नेस्टेड सीवी को यह देखने के लिए कर सकते हैं कि क्या मॉडल के चयन से ही ओवरफिटिंग नहीं हुई है (यदि चयन बहुत अच्छा सुधार देता है या डेटा शोर है, तो इसका जोखिम काफी बड़ा है)।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.