तंत्रिका नेटवर्क में बाइनरी और निरंतर इनपुट के मिश्रण से कैसे निपटें?


14

मैं R में nnet पैकेज का उपयोग कर रहा हूं ताकि कॉन्डो (व्यक्तिगत परियोजना) के लिए अचल संपत्ति की कीमतों का अनुमान लगाने के लिए एक ANN बनाने का प्रयास किया जा सके। मैं इसके लिए नया हूं और मेरे पास गणित की पृष्ठभूमि नहीं है इसलिए कृपया मेरे साथ नंगे हों।

मेरे पास इनपुट चर हैं जो बाइनरी और निरंतर दोनों हैं। उदाहरण के लिए कुछ बाइनरी चर जो मूल रूप से हां / नहीं थे, तंत्रिका जाल के लिए 1/0 में परिवर्तित हो गए थे। अन्य चर निरंतर की तरह हैं Sqft

इनपुट डेटा का नमूना

मैंने 0-1 के पैमाने पर सभी मूल्यों को सामान्य कर दिया है। हो सकता है Bedroomsऔर Bathroomsसामान्य नहीं होना चाहिए क्योंकि उनकी सीमा केवल 0-4 है?

क्या ये मिश्रित इनपुट ANN के लिए एक समस्या पेश करते हैं? मैंने ठीक परिणाम प्राप्त कर लिया है, लेकिन निकट परीक्षा में एएनएन ने कुछ चरों के लिए जो वजन चुना है, वह समझ में नहीं आता है। मेरा कोड नीचे है, कोई सुझाव?

ANN <- nnet(Price ~ Sqft + Bedrooms + Bathrooms + Parking2 + Elevator + 
            Central.AC + Terrace + Washer.Dryer + Doorman + Exercise.Room + 
            New.York.View,data[1:700,], size=3, maxit=5000, linout=TRUE, decay=.0001)

अद्यतन: नीचे दिए गए टिप्पणियों के आधार पर प्रत्येक मूल्य वर्ग के लिए अलग-अलग क्षेत्रों में बाइनरी इनपुट को तोड़ने के बारे में, मेरा कोड अब दिखता है:

ANN <- nnet(Price ~ Sqft + Studio + X1BR + X2BR + X3BR + X4BR + X1Bath
        + X2Bath + X3Bath + X4bath + Parking.Yes + Parking.No + Elevator.Yes + Elevator.No 
        + Central.AC.Yes + Central.AC.No + Terrace.Yes + Terrace.No + Washer.Dryer.Yes 
        + Washer.Dryer.No + Doorman.Yes + Doorman.No + Exercise.Room.Yes + Exercise.Room.No 
        + New.York.View.Yes + New.York.View.No + Healtch.Club.Yes + Health.Club.No,
    data[1:700,], size=12, maxit=50000, decay=.0001)

उपरोक्त कोड में छिपे हुए नोड्स 12 हैं, लेकिन मैंने 3 से 25 तक छिपे हुए नोड्स की एक श्रृंखला की कोशिश की है और सभी मूल पैरामीटर की तुलना में बदतर परिणाम देते हैं जो मैंने पोस्ट किए गए मूल कोड में ऊपर दिए थे। मैंने इसे लीनियर आउटपुट = ट्रू / गलत के साथ आज़माया है।

मेरा अनुमान है कि मुझे एननेट को अलग तरीके से फीड करने की जरूरत है क्योंकि यह बाइनरी इनपुट की ठीक से व्याख्या नहीं कर रहा है। या तो वह, या मुझे इसे विभिन्न मापदंडों को देने की आवश्यकता है।

कोई विचार?


1
तंत्रिका नेटवर्क इनपुट के रूप में द्विआधारी या श्रेणीबद्ध डेटा का उपयोग करने का मानक तरीका संकेतक वैक्टर के लिए क्षेत्र का विस्तार करना है। उदाहरण के लिए, यदि आपके पास एक ऐसा क्षेत्र है जो 1,2, या 3 मान ले सकता है, तो 1 का विस्तार [1,0,0], 2 -> [0,1,0], और 3 -> [तक किया जाएगा 0,0,1]। वास्तविक मूल्यवान इनपुट को आम तौर पर रखा जाता है।
user1149913

1
अब जब आप इसका उल्लेख करते हैं, तो मुझे उत्तर के लिए मेरी खोज के दौरान इसे पढ़ने की याद आती है। इसलिए चूंकि सूचना स्रोत सीएसवी फ़ाइल पर है, इसलिए मुझे वास्तव में प्रत्येक बाइनरी इनपुट के लिए नए फ़ील्ड्स को समायोजित करने के लिए कॉलम जोड़ने की आवश्यकता है? उदाहरण के लिए, यदि बेडरूम इनपुट 0-4 से है, तो ऊपर दिए गए आपके उदाहरण का उपयोग करके मैं 4 अतिरिक्त कॉलम बनाऊंगा ('0' बेडरूम के बाद से कुल 5) स्टूडियो और 3BR कॉन्डो को 0,0,0,1 के रूप में व्यक्त किया जाएगा। , 0?
क्रिस ऑस्ट्रॉन्ग

जवाबों:


8

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

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

एक इनपुट का योगदान अन्य आदानों के सापेक्ष इसकी परिवर्तनशीलता पर बहुत अधिक निर्भर करेगा।

अनियंत्रित श्रेणीबद्ध चरों के लिए - आपको बाइनरी संकेतक में तोड़ना होगा । वे अन्यथा सार्थक नहीं हैं।


1
लेकिन आंकड़े भी देखें ।stackexchange.com / questions
kjetil b halvorsen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.