रेखीय प्रतिगमन के लिए ढाल वंश का उपयोग करने का मुख्य कारण कम्प्यूटेशनल जटिलता है: यह कुछ मामलों में ढाल वंश का उपयोग करके समाधान खोजने के लिए कम्प्यूटेशनल रूप से सस्ता (तेज) है।
आपने जो सूत्र लिखा है, वह बहुत ही सरल है, यहां तक कि कम्प्यूटेशनल रूप से भी, क्योंकि यह केवल एकतरफा मामले के लिए काम करता है, यानी जब आपके पास केवल एक ही चर होता है। मल्टीवेरिएट मामले में, आप कई कारकों का है जब, सूत्रों कागज पर थोड़ा और अधिक जटिल है और आवश्यकता बहुत अधिक गणना जब आप सॉफ्टवेयर में लागू:
यहाँ, आप की गणना करनी है मैट्रिक्स एक्स ' एक्स
β= ( एक्स)'एक्स)- 1एक्स'Y
एक्स'एक्सफिर इसे उल्टा करें (नीचे नोट देखें)। यह एक महंगी गणना है। आपके संदर्भ के लिए, डिज़ाइन (डिज़ाइन) मैट्रिक्स X में K + 1 कॉलम हैं जहां K भविष्यवाणियों की संख्या और टिप्पणियों की N पंक्तियाँ हैं। एक मशीन लर्निंग एल्गोरिदम में आप K> 1000 और N> 1,000,000 के साथ समाप्त हो सकते हैं।
मैट्रिक्स ही गणना करने के लिए एक छोटे से समय लगता है, तो आप को उलटने के लिए है
कश्मीर × कश्मीर मैट्रिक्स - यह महंगा है।
एक्स'एक्सक× के
इसलिए, ढाल वंश गणना पर बहुत समय बचाने की अनुमति देता है। इसके अलावा, जिस तरह से यह किया जाता है वह एक तुच्छ समानांतरकरण के लिए अनुमति देता है, अर्थात कई प्रोसेसर या मशीनों में गणना वितरित करता है। रैखिक बीजगणित समाधान को भी समानांतर किया जा सकता है लेकिन यह अधिक जटिल और अभी भी महंगा है।
इसके अतिरिक्त, कंप्यूटर के मेमोरी की आवश्यकताओं को कम करते हुए, जब आप मेमोरी में केवल अपने डेटा का एक टुकड़ा रखते हैं, तो ग्रेडिएंट डिसेंट के संस्करण होते हैं। कुल मिलाकर, अतिरिक्त बड़ी समस्याओं के लिए यह रैखिक बीजगणित समाधान की तुलना में अधिक कुशल है।
यह और भी महत्वपूर्ण हो जाता है क्योंकि आयामी बढ़ जाता है, जब आपके पास मशीन सीखने में हजारों चर होते हैं।
रिमार्क । मुझे आश्चर्य था कि Ng के व्याख्यानों में ढाल वंश पर कितना ध्यान दिया जाता है। वह इसके बारे में बात करने के लिए समय की मात्रा में खर्च करता है, शायद पूरे पाठ्यक्रम का 20%। मेरे लिए यह केवल एक कार्यान्वयन विवरण है, यह ठीक यही है कि आप इष्टतम कैसे खोजें। ऑप्टिमाइज़ेशन समस्या को तैयार करने में कुंजी महत्वपूर्ण है, और आपको यह कैसे पता चलता है कि यह अनुपयोगी है। मैं इसके बारे में बहुत ज्यादा चिंता नहीं करता। इसे कंप्यूटर विज्ञान के लोगों पर छोड़ दें, और एक सांख्यिकीविद् के रूप में आपके लिए क्या महत्वपूर्ण है, इस पर ध्यान केंद्रित करें।
यह कहने के बाद मुझे यह कहकर योग्य होना चाहिए कि समाधान एल्गोरिदम की कम्प्यूटेशनल जटिलता और संख्यात्मक स्थिरता को समझना वास्तव में महत्वपूर्ण है । मुझे अभी भी नहीं लगता कि आपको एल्गोरिदम के कार्यान्वयन और कोड का विवरण पता होना चाहिए। यह आमतौर पर एक सांख्यिकीविद् के रूप में आपके समय का सबसे अच्छा उपयोग नहीं है।
नोट 1 । मैंने लिखा है कि आपको मैट्रिक्स को दिमागी उद्देश्यों के लिए उलटना होगा और यह नहीं है कि आप आमतौर पर समीकरण को कैसे हल करते हैं। व्यवहार में, रैखिक बीजगणित की समस्याएं क्यूआर जैसे कुछ प्रकार के कारक का उपयोग करके हल की जाती हैं, जहां आप सीधे मैट्रिक्स को उल्टा नहीं करते हैं, लेकिन उत्तर पाने के लिए गणितीय रूप से कुछ अन्य समान जोड़तोड़ करते हैं। आप ऐसा करते हैं क्योंकि मैट्रिक्स उलटा कई मामलों में एक महंगा और संख्यात्मक रूप से अस्थिर ऑपरेशन है।
यह साइड इफेक्ट के रूप में ग्रेडिएंट डीसेंट अल्गोरिद्म को थोड़ा और फायदा देता है: यह तब भी काम करता है जब डिजाइन मैट्रिक्स में कोलीनियरिटी की समस्या होती है। सामान्य रेखीय बीजगणित मार्ग ऊपर उड़ जाएगा और ढाल वंशानुक्रम के लिए ढाल वंश भी चलते रहेंगे।