महीने और घंटे जैसी सुविधाओं को एन्कोडिंग या संख्यात्मक के रूप में एन्कोडिंग?


23

मशीन लर्निंग मॉडल में कारक या संख्यात्मक के रूप में महीने और घंटे जैसी सुविधाओं को एनकोड करना बेहतर है?

एक ओर, मुझे लगता है कि संख्यात्मक एन्कोडिंग उचित हो सकती है, क्योंकि समय एक आगे बढ़ने की प्रक्रिया है (पांचवें महीने के बाद छठे महीने), लेकिन दूसरी तरफ मुझे लगता है कि चक्रीय प्रकृति के कारण श्रेणीबद्ध एन्कोडिंग अधिक उचित हो सकता है साल और दिन (12 वें महीने के बाद पहले एक है)।

क्या इसके लिए एक सामान्य समाधान या सम्मेलन है?


मुझे आरएफ मॉडल में दिन (1 से 24) चर के घंटे को परिभाषित करने में एक ही मुद्दे का सामना करना पड़ा। अगर मैं वैरिएबल को श्रेणीबद्ध रूप में परिवर्तित करता हूं, तो VarImp फ़ंक्शन प्रत्येक घंटे के लिए महत्वपूर्ण मूल्य दिखाता है और यह बहुत अव्यवस्थित दिखता है। मैं बस सोच रहा हूं कि क्या 'दिन के घंटे' के प्रकार को संख्यात्मक चर को श्रेणीबद्ध में बदलना आवश्यक है?
महमूदुर रहमान

जवाबों:


19

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

( अधिक )


इस तरह की समस्या है क्योंकि अगर मैं करता हूं: पाप (पीआई * एक्स / 24) जहां एक्स [0, 23] में हमारे पास सुबह 6 बजे और शाम 6 बजे पाप के समान मूल्यांकन है (पीआई * 6/24) == पाप (अनुकरणीय * 18/24)। लेकिन ये पूरी तरह से अलग घंटे हैं
एरन मोशे

इस तरह से चक्र कर सकते हैं: पाप (पीआई * एक्स / 12)। धन्यवाद एरन:]
एरन मोशे

@EranMoshe फीई ऊपर दिए गए लिंक से पोस्ट करने के बजाय वे 2 * pi के एक कारक का उपयोग करते हैं, इसलिए यह पाप होगा (2 * pi * X / 12) - वे टिप्पणियों में इसके लिए कुछ तर्क देते हैं
tsando

और इसका (2 * pi X / 24) जो है (pi X / 12):] जैसा कि आप देख रहे हैं कि मैं एक ही समस्या से जूझ रहा हूं, जो blog.davidkaleko.com/feature-engineering-cyclical-features.html के लेखक हैं। के साथ संघर्ष किया गया था। और टिप्पणियों में आप देख सकते हैं "मैरियल जी" उसे ठीक कर रहा है जैसा कि मुझे पता चला है: पी * एक्स / 12 दिन के घंटे के लिए प्रसारित होगा। मुझे जो सीखने को मिला वह यह है कि 24 घंटे की अवधि को परिभाषित करने के लिए आपको इस के कॉस और पाप घटकों को लेना होगा! (आपको एक सच्चे सर्कल की ज़रूरत है, और सिर्फ एक आवधिक कार्य नहीं)
एरन मोशे

@ EranMoshe आह हाँ, अगर आप घंटों करना चाहते हैं तो इसे piX / 12 तक कम किया जा सकता है, लेकिन यदि आप महीनों करना चाहते हैं, तो यह 2piX / 12 यानी pi / 6 होगा। तो सामान्य तौर पर यह 2piX / अवधि
tsando

9

जवाब उस तरह के रिश्तों पर निर्भर करता है, जिन्हें आप समय सुविधा और लक्ष्य चर के बीच प्रतिनिधित्व करना चाहते हैं।

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

समय को एन्कोडिंग के रूप में वर्गीकृत करने से मॉडल को अधिक लचीलापन मिलता है, लेकिन कुछ मामलों में, मॉडल में अच्छी तरह से सीखने के लिए पर्याप्त डेटा नहीं हो सकता है। एक तकनीक जो उपयोगी हो सकती है, वह है कि कुछ संख्याओं में समूह मानों को एक साथ समूहित किया जाए, और सेट को एक श्रेणीगत विशेषता के रूप में उपयोग किया जाए।

कुछ उदाहरण समूह:

  • उपयोग के मामले के आधार पर, महीने के लिए, क्वार्टर या सीज़न में समूह। जैसे: जन-मार, अप्रैल-जून, आदि।
  • दिन के समय के लिए, दिन-ब-दिन बाल्टी में समूह: सुबह, शाम, आदि।
  • सप्ताह के दिनों के लिए, सप्ताह के दिन, सप्ताहांत में समूह।

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


4

मैं संख्यात्मक विशेषताओं का उपयोग करने की सलाह देता हूं।श्रेणीबद्ध विशेषताओं का उपयोग करने का अनिवार्य रूप से मतलब है कि आप दो श्रेणियों के बीच की दूरी को प्रासंगिक नहीं मानते हैं (उदाहरण के लिए श्रेणी 1 श्रेणी 2 के करीब है क्योंकि यह श्रेणी 3 के बराबर है)। यह निश्चित रूप से घंटों या महीनों का मामला नहीं है।

हालाँकि, आप जो मुद्दा उठाते हैं, वह यह है कि आप घंटों और महीनों का इस तरह से प्रतिनिधित्व करना चाहते हैं, जिसमें 12 11 के करीब हो। 1. इसे प्राप्त करने के लिए, मैं सुझाव देता हूं कि टिप्पणियों में सुझाव दिया गया था और उसका उपयोग करना संख्यात्मक विशेषताओं के रूप में घंटे / महीनों का उपयोग करने से पहले एक साइन / कोसाइन फ़ंक्शन।


3

यह निर्भर करता है कि आप किस एल्गोरिथ्म का उपयोग कर रहे हैं।

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

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


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

इस पोस्ट से: todatascience.com/ ... आपको निर्णय वाले पेड़ों के आधार पर किसी भी चीज के लिए एक गर्म का उपयोग नहीं करना चाहिए, जो कि मुझे बहुत मुश्किल लग रहा है।
एशले

1

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


1

@ आगरु द्वारा प्रदान किए गए उत्तर को फिर से लिखना । श्रेणीगत और संख्यात्मक विशेषताओं के बीच एक बड़ा अंतर यह है कि क्या संख्याओं का परिमाण तुलनात्मक है, यानी 2019 2018 से बड़ा है, या दिसंबर (12) मार्च (3) से बड़ा है? ज़रुरी नहीं। जबकि इन संख्याओं में अनुक्रमिक क्रम है, उनकी परिमाण तुलना नहीं है। इस प्रकार, एक श्रेणीगत मान में बदलने से अधिक समझ हो सकती है।

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