मशीन लर्निंग मॉडल या सिफ़ारिश प्रणाली में भूगोल या ज़िप कोड का प्रतिनिधित्व कैसे करें?


24

मैं एक मॉडल का निर्माण कर रहा हूं और मुझे लगता है कि भौगोलिक लक्ष्य मेरे लक्ष्य चर की भविष्यवाणी करने में बहुत अच्छा होने की संभावना है। मेरे पास मेरे प्रत्येक उपयोगकर्ता का ज़िप कोड है। मैं पूरी तरह से इस बात के बारे में निश्चित नहीं हूँ कि मेरे मॉडल में एक भविष्यवक्ता विशेषता के रूप में ज़िप कोड को शामिल करने का सबसे अच्छा तरीका है। हालाँकि ज़िप कोड एक नंबर है, लेकिन अगर नंबर ऊपर या नीचे जाता है तो इसका कोई मतलब नहीं है। मैं सभी 30,000 ज़िप कोडों को दूर कर सकता हूं और फिर उन्हें सुविधाओं या नए कॉलम (जैसे, {user_1: {61822: 1, 62118: 0, 62444: 0, आदि)} के रूप में शामिल कर सकता हूं। हालांकि, ऐसा लगता है कि यह एक टन जोड़ देगा। मेरे मॉडल के लिए सुविधाएँ।

इस स्थिति को संभालने के सर्वोत्तम तरीके पर कोई विचार?


1
बस एक विचार .. लेकिन, अगर ज़िपकोड को भौगोलिक रूप से वितरित किया जाता है, तो आप भौगोलिक रूप से मानचित्र में ज़िपकोड का प्रतिनिधित्व कर सकते हैं और उनके स्थान के साथ उनका प्रतिनिधित्व कर सकते हैं। इसके साथ ही आप यह भी देख सकते हैं कि कौन से ज़िपकोड बंद हैं ..
मैनुअल

जवाबों:


14

जिप कोड डेटा के मेरे पसंदीदा उपयोगों में से एक जिपकोड के आधार पर जनसांख्यिकीय चर को देखना है जो व्यक्तिगत स्तर पर उपलब्ध नहीं हो सकता है ...

उदाहरण के लिए, http://www.city-data.com/ के साथ आप आय वितरण, आयु सीमा आदि को देख सकते हैं, जो आपको अपने डेटा के बारे में कुछ बता सकता है। ये निरंतर चर अक्सर दूरदर्शी ज़िप कोड पर आधारित होने की तुलना में कहीं अधिक उपयोगी होते हैं, कम से कम अपेक्षाकृत कम मात्रा में डेटा के लिए।

इसके अलावा, ज़िप कोड पदानुक्रमित हैं ... यदि आप पहले दो या तीन अंक लेते हैं, और उन पर आधारित, आप कुछ क्षेत्रीय जानकारी रखते हैं, जो आपको व्यक्तिगत ज़िप की तुलना में अधिक डेटा मिलता है।

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


2
आप बेन फ्राई के जिप्डबॉस पर पदानुक्रम का एक अच्छा दृश्य प्राप्त कर सकते हैं ।
दिमित्री वी। मास्टरोव

जो आप इस साइट से स्वतंत्र रूप से ज़िप स्तर डेटा (आय आदि) प्राप्त करने में सक्षम हैं? मैं यह देखने में सक्षम नहीं था कि यह कैसे करना है।
B_Miner

इस तरह के URL: city-data.com/zips/02108.html यह CSV की तरह अच्छी तरह से स्वरूपित नहीं है, इसलिए आपको regexes / scraping इत्यादि का उपयोग करना होगा। अमेरिकी जनगणना में कुछ अच्छी तरह से fomatted data census.gov.epcd/www/zipstats है। .html और factfinder2.census.gov/faces/nav/jsf/pages/index.xhtml लेकिन उनके पास चौड़ाई नहीं है।
जो

18

2 अच्छे विकल्प हैं जो मैंने देखे हैं:

  1. प्रत्येक ज़िपकोड को एक डमी चर में परिवर्तित करें। यदि आपके पास बहुत अधिक डेटा है, तो यह एक त्वरित और आसान समाधान हो सकता है, लेकिन आप नए ज़िप कोड के लिए भविष्यवाणियां नहीं कर पाएंगे। यदि आप सुविधाओं की संख्या के बारे में चिंतित हैं, तो आप मॉडल में से कुछ ज़िपकोड्स को छोड़ने के लिए अपने मॉडल में कुछ नियमितीकरण जोड़ सकते हैं।
  2. चर के रूप में ज़िपकोड के केंद्र बिंदु के अक्षांश और देशांतर का उपयोग करें। यह पेड़-आधारित मॉडल में वास्तव में अच्छी तरह से काम करता है, क्योंकि वे अक्षांश / देशांतर ग्रिड को उन क्षेत्रों में काट सकते हैं जो आपके लक्ष्य चर के लिए प्रासंगिक हैं। यह आपको नए ज़िपकोड के लिए भविष्यवाणियां करने की भी अनुमति देगा, और सही पाने के लिए अधिक डेटा की आवश्यकता नहीं है। हालाँकि, यह रैखिक मॉडल के लिए अच्छा काम नहीं करेगा।

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


निश्चित रूप से 2प्रस्ताव के लिए जाना जाएगा ।
औरलैब्स

# 2 एक GAM
Affine

4

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

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


4

यदि आप रिकॉर्ड्स के बीच की दूरी की गणना कर रहे हैं, जैसा कि क्लस्टरिंग या K-NN में, उनके कच्चे रूप में zipcodes के बीच की दूरी जानकारीपूर्ण हो सकती है। भौगोलिक दृष्टि से ०२१३ 02, ०५१३ ९ के करीब है।


रैंडम फ़ॉरेस्ट जैसे ट्री मॉडल के लिए भी - जो कुछ मायनों में K-NN के समान हैं
Captain_ahab

3

आप अपने ज़िप कोड को नाममात्र चर (स्ट्रिंग / कारक) में बदल सकते हैं। हालाँकि, जहाँ तक मुझे याद है, ज़िप कोड में काउंटी, क्षेत्र, आदि जैसी अन्य जानकारी हो सकती है, तो मैं क्या करूँगा कि ज़िप कोड जानकारी को कैसे समझे और इसे कई विशेषताओं में डिकोड करे।

वैसे भी ज़िप कोड को एक संख्यात्मक चर के रूप में देना एक अच्छा विचार नहीं है क्योंकि कुछ मॉडल संख्यात्मक आदेश या दूरियों को सीखने के लिए कुछ के रूप में मान सकते हैं।


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

3

मैं ज़िप कोड स्तर पर आपके मॉडल के अवशेषों का एक कोरोप्लेथ मानचित्र बनाऊंगा।

परिणाम को एक स्थानिक अवशिष्ट मानचित्र कहा जाता है और यह आपको अपने मॉडल में शामिल करने के लिए एक नया व्याख्यात्मक चर चुनने में मदद कर सकता है। इस दृष्टिकोण को खोजपूर्ण स्थानिक डेटा विश्लेषण (ईएसडीए) कहा जाता है।

एक संभावित वर्कफ़्लो:

  1. प्रत्येक ज़िप कोड के लिए औसत अवशिष्ट मिलता है
  2. अवशिष्टों के भौगोलिक वितरण को देखने के लिए एक चेरोप्लेथ मानचित्र बनाएं
  3. एक नए व्याख्यात्मक चर द्वारा समझाया जा सकता है कि पैटर्न के लिए देखो। उदाहरण के लिए, यदि आप सभी उपनगरीय या दक्षिणी या समुद्र तट के zipcodes को उच्च अवशेषों के साथ देखते हैं तो आप संबंधित zipcode Grouping द्वारा परिभाषित एक क्षेत्रीय डमी चर जोड़ सकते हैं, या यदि आप उच्च आय वाले zipcodes के लिए उच्च अवशिष्ट देखते हैं, तो आप एक आय चर जोड़ सकते हैं।

-2

आप उपरोक्त तकनीकों का उपयोग करके ज़िपकोड को संक्षिप्त कर सकते हैं, लेकिन मुझे एक विकल्प सुझाएंगे। मान लीजिए कि हमारे पास बाइनरी क्लास लेबल हैं। और डेटा में हमारे पास "n" ज़िप कोड हैं। अब हम डेटा में प्रत्येक पिनकोड की घटना की संभावना लेते हैं, बशर्ते कुछ वर्ग लेबल (या तो 1 या शून्य)। तो, हम एक zipcode "j" के लिए कहते हैं ------ >>>> हमें एक संभावना P_j मिलती है: नहीं। "जे" के होने की घटनाओं के "कुल" की संख्या नहीं है, जब क्लास लेबल 1 या 0. है। इस तरह से हम इसे एक बहुत अच्छी व्यावहारिक व्याख्या में बदल सकते हैं।


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