एकाधिक आउटपुट प्रतिगमन के लिए तंत्रिका नेटवर्क


21

मेरे पास 34 इनपुट कॉलम और 8 आउटपुट कॉलम वाले डेटासेट हैं।

समस्या को हल करने का एक तरीका 34 आउटपुट लेना और प्रत्येक आउटपुट कॉलम के लिए व्यक्तिगत प्रतिगमन मॉडल बनाना है।

मुझे आश्चर्य है कि क्या यह समस्या सिर्फ एक मॉडल का उपयोग करके हल की जा सकती है विशेष रूप से न्यूरल नेटवर्क का उपयोग करके।

मैंने मल्टीलेयर परसेप्ट्रॉन का उपयोग किया है लेकिन इसे लीनियर रिग्रेशन की तरह कई मॉडल की जरूरत है। अनुक्रम से अनुक्रम एक व्यवहार्य विकल्प हो सकता है?

मैं TensorFlow का उपयोग कर रहा हूं। मेरे पास कोड है, लेकिन मुझे लगता है कि यह समझना अधिक महत्वपूर्ण है कि मैं बहुपरत अवधारणात्मक सिद्धांत के संदर्भ में क्या याद कर रहा हूं।

मैं समझता हूं कि यदि आपके पास एक आउटपुट नोड है तो यह एक आउटपुट प्रदान करेगा। यदि आपके पास 10 आउटपुट नोड्स हैं तो यह एक बहु श्रेणी की समस्या है। आप 10 आउटपुट में से उच्चतम संभावना वाले वर्ग को चुनते हैं। लेकिन मेरे मामले में यह निश्चित है कि एक ही इनपुट के लिए 8 आउटपुट होंगे।

आइए बताते हैं, इनपुट्स के एक सेट के लिए आपको किसी चीज़ (X, Y, Z) का 3D समन्वय मिलेगा। जैसे, इनपुट्स = {1,10,5,7} आउटपुट = {1,2,1}। तो उसी इनपुट {1,10,5,7} के लिए मुझे X मान Y मान के लिए मॉडल बनाने की आवश्यकता है और Z. एक समाधान में MLP का उपयोग करके 3 अलग-अलग मॉडल हैं। लेकिन मैं यह देखना चाहूंगा कि क्या मेरे पास एक मॉडल हो सकता है। इसलिए मैंने seq2seq का उपयोग करने के बारे में सोचा। क्योंकि एनकोडर इनपुट की एक श्रृंखला लेता है और डिकोडर आउटपुट की श्रृंखला प्रदान करता है। लेकिन ऐसा लगता है कि टेंसोफ़्लो में seq2seq फ्लोट वैल्यू को संभाल नहीं सकता है। मैं हालांकि इस बारे में गलत हो सकता हूं।


आपको लगता है कि बहुपरत एनसेप्टन मॉडल और TensorFlow को समझने में कुछ समस्याएँ हैं - इनके बारे में आपके कथन गलत हैं। हालाँकि, यह स्पष्ट नहीं है कि आपके पास वह गलतफहमी क्यों है, जिसका अर्थ है कि एक उत्तर आपको इसे ठीक करने में मदद नहीं कर सकता है। एक एकल एनएन मॉडल में उदाहरण 8 प्रतिगमन आउटपुट की भविष्यवाणी करना अधिकांश एनएन फ्रेमवर्क में बहुत आसान है, आपके मामले में अनुक्रमों की कोई आवश्यकता नहीं है। इसलिए मुझे लगता है कि यह देखने के लिए महत्वपूर्ण हो सकता है कि आपका अंतिम पैराग्राफ आपकी मदद करने के लिए किस पर आधारित है - क्या आप उन विचारों में आने के लिए जो कुछ भी देख चुके हैं या करने की कोशिश कर रहे हैं उसका कुछ विवरण जोड़ सकते हैं?
नील स्लेटर

क्या आपके लिए एक एनएन मॉडल का उपयोग करके 8 प्रतिगमन आउटपुट प्राप्त करना एक उत्तर देना संभव होगा? धन्यवाद।
सजीशन

शायद, यदि आप अपने प्रश्न को संपादित करके कुछ चीजें समझाते हैं: 1) किस ढांचे में? 2) अब तक आपका कोड (या डिज़ाइन, यदि आपके पास कोई कोड नहीं है) क्या है? 3) क्या आप खुद को ऐसा करने से रोक रहे हैं? आप का उपयोग करने के लिए कुछ के साथ उत्तर देने के लिए मुझे 1 और 2 की आवश्यकता है। आपकी समस्या क्या है, इसे समझने और समाधान बताने के लिए मुझे 3 की आवश्यकता है।
नील स्लेटर

1. तन्यता। 2. मेरे पास कोड है, लेकिन मुझे लगता है कि यह समझना अधिक महत्वपूर्ण है कि मैं बहुपरत अवधारणात्मक सिद्धांत के संदर्भ में क्या याद कर रहा हूं। मैं समझता हूं कि यदि आपके पास एक आउटपुट नोड है तो यह एक आउटपुट प्रदान करेगा। यदि आपके पास 10 आउटपुट नोड्स हैं तो यह एक बहु श्रेणी की समस्या है। आप 10 आउटपुट में से उच्चतम संभावना वाले वर्ग को चुनते हैं। लेकिन मेरे मामले में यह निश्चित है कि एक ही इनपुट के लिए 8 आउटपुट होंगे। मुझे एक अलग उदाहरण दिखाते हैं, चलिए बताते हैं, इनपुट के एक सेट के लिए आपको किसी चीज़ (X, Y, Z) का 3 डी समन्वय मिलेगा। जैसे, इनपुट्स = {1,10,5,7} आउटपुट = {1,2,1}
sjishan

तो उसी इनपुट {1,10,5,7} के लिए मुझे X मान Y मान के लिए मॉडल बनाने की आवश्यकता है और Z. एक समाधान में MLP का उपयोग करके 3 अलग-अलग मॉडल हैं। लेकिन मैं यह देखना चाहूंगा कि क्या मेरे पास एक मॉडल हो सकता है। इसलिए मैंने seq2seq का उपयोग करने के बारे में सोचा। क्योंकि एनकोडर इनपुट की एक श्रृंखला लेता है और डिकोडर आउटपुट की श्रृंखला प्रदान करता है। लेकिन ऐसा लगता है कि टेंसोफ़्लो में seq2seq फ्लोट वैल्यू को संभाल नहीं सकता है। मैं हालांकि इस बारे में गलत हो सकता हूं।
17

जवाबों:


14

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

कोई भी तंत्रिका नेटवर्क ढांचा ऐसा कुछ करने में सक्षम है।

ऐसा करने की कुंजी यह याद रखना है कि अंतिम परत में रैखिक सक्रियण होना चाहिए (अर्थात बिल्कुल सक्रिय नहीं होना चाहिए)।

आपकी आवश्यकताओं के अनुसार, इनपुट परत का आकार एक वेक्टर (34,) और आउटपुट (8,) होगा।

अद्यतन : प्रतिगमन समस्याओं के लिए उपयोग किए जाने वाले सामान्य हानि फ़ंक्शन का अर्थ है चुकता त्रुटि (MSE)। यहाँ Keras का उपयोग कर बहुआयामी प्रतिगमन का एक उदाहरण है ; नेटवर्क एक MLP नहीं है, लेकिन विचार को दर्शाने के लिए यह ठीक होना चाहिए।


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

4

आप इसे बहुत ही सरलता से पायथन में लागू कर सकते हैं।
आपका एक्स प्रशिक्षण का संग्रह होगा x, y, z निर्देशांक।
आपका वाई परीक्षण x, y, z निर्देशांक का संग्रह होगा।

from sklearn import cross_validation                     
from sklearn.neural_network import MLPRegressor   

model = MLPRegressor(solver='lbfgs',alpha=0.001,hidden_layer_sizes=(150,))
cross_validation.cross_val_score(model, X, Y,scoring='mean_squared_error')

0

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

यदि आप केरस का उपयोग कर रहे हैं, तो ऐसा करने का तरीका अंतिम आउटपुट परत के रूप में एक घनी परत को जोड़कर है: model.add(Dense(8, activation='linear'))

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.