समस्या: जब ऑक्टेव में सामान्यता चालू है, शून्य-भिन्नता इनपुट div-zero त्रुटियों का कारण बनता है
प्रश्न: क्या vectorised डेटा के साथ काम करते समय div-zero को नियंत्रित करने के लिए एक अच्छा (आर) तरीका है?
उदाहरण: इनपुट एक मैट्रिक्स है जिसमें कॉलम में एकाधिक डेटासेट हैं:
एक्स = [1 3.5 7.5 9; 1 4 8 9; 1 4.5 8.5 9]
तो X
में तीन श्रृंखलाएं हैं: x_1 = [1,1,1]
, x_2 = [7.5, 8, 8.5]
, और x_3 = [9 9, 9]
। प्रत्येक सेट को सामान्य करने के लिए वेक्टरविज़ेशन का इस्तेमाल करते हुए निम्नलिखित दृष्टिकोण समझदार लगता है:
mu = mean (x); सिग्मा = एसटीडी (एक्स); X_norm = (1 /। सिग्मा)। * (एक्स - म्यू);
हालांकि, उपरोक्त दृष्टिकोण असफल हो जायेगा क्योंकि दोनों x_1
और x_3
के पास शून्य विचरण होता है और इसलिए विभाजन-दर-शून्य त्रुटियां उत्पन्न होती हैं ।
शून्य विचरण डेटा की मेरी पसंदीदा संभाल 1 से सिग्मा सेट करना है। वर्तमान में मैं निम्नलिखित कल्ग का उपयोग कर रहा हूं:
डेटासेट_ आकार + लंबाई (सिग्मा); अनुक्रमणिका = 1 के लिए: डेटासेट_आकार यदि सिग्मा (इंडेक्स) == 0 सिग्मा (इंडेक्स) = 1; एंडीफ़ एंड
नोट्स:
- विभाजन और घटाव कार्यों में, दो बार यहां उपयोग किया जा रहा है
- यह उदाहरण ओक्टेव में आधारित है , लेकिन सवाल समान रूप से MATLAB पर लागू हो सकता है।
- यह उदाहरण उदाहरण के लिए सरल है - 'वास्तविक' उपयोग में अधिक, बड़ा डेटासेट होगा
- यह उदाहरण होगा
- प्रासंगिक लग रहा था, लेकिन (जैसा कि नाम सुझाता है) z-score की गणना करने के लिए बेहतर अनुकूल है ... / Ul>
क्यों ऐसा नहीं है?
mu = mean (x); सिग्मा = एसटीडी (एक्स); सिग्मा (सिग्मा == 0) = 1; % // zeros X_norm = (1 / sigma) को निकालने के लिए इस लाइन को जोड़ें। * (एक्स - म्यू);
या, कुछ कार्यों को सहेजने के लिए:
म्यू = मतलब (एक्स); सिग्मा = एसटीडी (एक्स); इंडस्ट्रीज़ = सिग्मा ~ = 0; % // शून्य मानों का पता लगाएं X_norm = X - mu; X_norm (:, इंड) = X_norm (:, इंडस्ट्रीज़) ./ सिग्मा (इंडस्ट्रीज़);
सामान्य में, यह
सिग्मा (सिग्मा और लेफ्टिनेंट; = tol) = 1 का उपयोग करने के लिए बेहतर हो सकता है;
पहले दृष्टिकोण में, या
इंडस्ट्रीज़ = सिग्मा> टोल; किसी भी सहिष्णुता tol
(उदाहरण के लिए tol = 1e-10
) के लिए शून्य में करीब />
मानों का पता लगाएं। )। यह अनुप्रयोगों में एक बेहतर तरीका है, जहां परिमित-सटीक त्रुटियों को शून्य के बजाय 1e-15
जैसे मूल्य उत्पन्न कर सकते हैं।
Comments
Post a Comment