मैंने अभी पर्यवेक्षित शिक्षण एल्गोरिदम के प्रोटोटाइप कार्यान्वयन के साथ समाप्त किया है, जो स्वचालित रूप से हमारे कंपनी डेटाबेस (लगभग 5 मिलियन आइटम) में सभी वस्तुओं को स्पष्ट टैग असाइन कर रहा है।Agile: मशीन लर्निंग प्रोजेक्ट के लिए उपयोगकर्ता कहानियां?
परिणाम अच्छे लगते हैं, और मुझे उत्पादन कार्यान्वयन परियोजना की योजना बनाने के लिए आगे बढ़ने दिया गया है।
मैंने पहले इस तरह का काम किया है, इसलिए मुझे पता है कि सॉफ्टवेयर के कार्यात्मक घटक कैसे हैं। मुझे डेटा लाने के लिए वेब क्रॉलर के संग्रह की आवश्यकता है। मुझे क्रॉल किए गए दस्तावेज़ों से विशेषताओं को निकालने की आवश्यकता है। उन दस्तावेजों को "प्रशिक्षण सेट" और "वर्गीकरण सेट" में अलग करने की आवश्यकता है, और प्रत्येक दस्तावेज़ से फीचर-वेक्टर निकालने की आवश्यकता है। वे फीचर वैक्टर क्लस्टर में स्वयं संगठित होते हैं, और क्लस्टर को रीबैलेंसिंग ऑपरेशंस की एक श्रृंखला के माध्यम से पारित किया जाता है। आदि आदि आदि
तो मैंने समय के अनुमान के साथ लगभग 30 अद्वितीय विकास/तैनाती कार्यों के साथ एक योजना बनाई है। विकास का पहला चरण - कुछ उन्नत सुविधाओं को अनदेखा करना जो हम लंबे समय तक करना चाहते हैं, लेकिन अभी तक विकास कार्यक्रम में इसे बनाने के लिए पर्याप्त प्राथमिकता नहीं है - लगभग दो महीने के काम के लिए तैयार है । (ध्यान रखें कि मेरे पास पहले से ही एक कामकाजी प्रोटोटाइप है, इसलिए अंतिम कार्यान्वयन परियोजना से शुरू होने से काफी आसान है।)
मेरे प्रबंधक ने कहा कि योजना उसके लिए अच्छी लग रही है, लेकिन उसने पूछा कि क्या मैं पुनर्गठन कर सकता हूं कुछ कारणों से उपयोगकर्ता कहानियों में कार्य: (1) हमारे प्रोजेक्ट प्रबंधन सॉफ्टवेयर पूरी तरह से उपयोगकर्ता कहानियों के आसपास व्यवस्थित है; (2) हमारी सभी शेड्यूलिंग व्यक्तिगत उपयोगकर्ता शेड्यूलिंग कार्यों की बजाय, संपूर्ण उपयोगकर्ता कहानियों को स्पिंट में फ़िट करने पर आधारित होती है; (3) अन्य टीमों - जैसे वेब डेवलपर्स - ने फुर्तीली पद्धतियों का बहुत अच्छा उपयोग किया है, और उन्हें सभी सॉफ्टवेयर सुविधाओं को उपयोगकर्ता कहानियों के रूप में मॉडलिंग से लाभ हुआ है।
तो मैं परियोजना के शीर्ष स्तर पर कोई उपयोगकर्ता कहानी बनाई:
प्रणाली का एक उपयोगकर्ता के रूप में, मैं, श्रेणी के द्वारा वस्तुएं खोजेंगे, ताकि मैं आसानी से सबसे अधिक प्रासंगिक आइटम प्राप्त कर सकते हैं करना चाहते हैं एक विशाल, जटिल डेटाबेस के भीतर।
या हो सकता है एक बेहतर इस सुविधा के लिए उच्च-स्तरीय कहानी होगा:
एक सामग्री संपादक के रूप में, मैं अपने आप हमारे डेटाबेस में वस्तुओं के लिए स्पष्ट पदनाम बनाना चाहते हैं, ताकि ग्राहकों को आसानी से कर सकते हैं हमारे विशाल, जटिल डेटाबेस के भीतर उच्च मूल्य डेटा पाएं।
लेकिन यह वास्तविक समस्या नहीं है।
मेरे लिए मुश्किल हिस्सा, यह पता लगाने के लिए है कि बाकी मशीन लर्निंग आर्किटेक्चर के लिए अधीनस्थ उपयोगकर्ता कहानियां कैसे बनाएं।
बिंदु में मामला ... मुझे पता है कि एल्गोरिदम के लिए दो प्रमुख वास्तुशिल्प उपखंडों की आवश्यकता होती है: (ए) प्रशिक्षण, और (बी) वर्गीकरण। और मुझे पता है कि वास्तुकला के प्रशिक्षण हिस्से को क्लस्टर-स्पेस के निर्माण की आवश्यकता है।
मैंने पढ़ा है कि सभी चुस्त विकास साहित्य साहित्य से संकेत मिलता है कि एक उपयोगकर्ता कहानी "सबसे कम संभव कार्यान्वयन होना चाहिए जो किसी भी व्यावसायिक मूल्य प्रदान करता है"। और अंत उपयोगकर्ता सॉफ्टवेयर के एक टुकड़े को डिजाइन करते समय यह बहुत समझ में आता है। छोटे से शुरू करें, और फिर उपयोगकर्ताओं को अतिरिक्त कार्यक्षमता की मांग करते समय मूल्य वृद्धि जोड़ें।
लेकिन क्लस्टर-स्पेस, और अपने आप में, शून्य व्यापार मूल्य प्रदान करता है।न ही क्रॉलर, या फीचर-एक्सट्रैक्टर। आंशिक प्रणाली में कोई व्यावसायिक मूल्य नहीं है (अंतिम उपयोगकर्ता के लिए नहीं, या कंपनी के लिए आंतरिक भूमिकाओं में से किसी के लिए)। एक प्रशिक्षित क्लस्टर-स्पेस केवल क्रॉलर और फीचर एक्स्ट्रेक्टर के साथ ही संभव है, और केवल प्रासंगिक है यदि हम एक साथ क्लासिफायरफायर भी विकसित करते हैं।
मुझे लगता है यह उपयोगकर्ता कहानियों बनाने के लिए संभव हो जाएगा जहां कहानियों में उपयोगकर्ताओं के रूप में प्रणाली अधिनियम के अधीनस्थ घटकों:
के रूप में एक की देखरेख सीखने क्लस्टर अंतरिक्ष निर्माण दिनचर्या, मैं उपभोग करने के लिए चाहते हैं एक फीचर एक्स्ट्रैक्टर से डेटा, ताकि मैं अस्तित्व में रह सकूं।
लेकिन यह वास्तव में अजीब लगता है। यह मुझे अपने उपयोगकर्ता की कहानियों को मॉडल करने के लिए डेवलपर (या हमारे उपयोगकर्ताओं, या किसी अन्य हितधारकों, उस मामले के लिए) के रूप में मुझे क्या लाभ प्रदान करता है?
हालांकि मुख्य कहानी को आर्किटेक्चरल-घटक सीमाओं (क्रॉलर, ट्रेनर, वर्गीकृत, आदि) के साथ आसानी से विभाजित किया जा सकता है, मैं किसी उपयोगकर्ता के परिप्रेक्ष्य से किसी भी उपयोगी अपघटन के बारे में नहीं सोच सकता।
आप क्या सोचते हैं? परिष्कृत, अविभाज्य, गैर-उपयोगकर्ता-सामना करने वाले घटकों के लिए आप Agile उपयोगकर्ता कहानियों की योजना कैसे बनाते हैं?
वर्गीकरण के शीर्ष स्तर पर "स्पष्ट परीक्षण" के संबंध में, निश्चित रूप से कुछ स्पष्ट परीक्षण हैं, और मैं पहले से ही विभिन्न सटीकता के विभिन्न प्रकारों को माप सकता हूं। लेकिन एक बार जब मैं घटकों में डिजाइन तोड़ता हूं, तो परीक्षण बहुत कम स्पष्ट हो जाते हैं। "वर्गीकरण" से अलगाव में "फीचर निष्कर्षण" का परीक्षण करना बहुत मुश्किल है क्योंकि वर्गीकरण के परिणाम निकाले गए विशेषताओं के लिए सफलता मानदंड को परिभाषित करते हैं। सिस्टम का कोई भी हिस्सा मापने योग्य सही या गलत नतीजे उत्पन्न करता है, जब तक कि उन घटकों को पूरी प्रणाली में इकट्ठा नहीं किया जाता है! – benjismith