ailiteracynepal 🇳🇵
पाठ आकार

अध्याय ४ · खण्ड II · 26 मिनेट

वितरण, आउटलायर, र तिनले लुकाउने कुरा

स्तम्भको आकार — यसको वितरण — ले तपाईंलाई अपेक्षा गर्न के, असामान्य के, र के बिग्रिएको छ बताउँछ। आउटलायरहरू इमानदार चरम, डाटा त्रुटि, वा एक स्तम्भमा दुई जनसङ्ख्या मिसिएको सङ्केत हुन सक्छन्। तिनलाई छुट्ट्याउनु निर्णय हो।

स्तम्भ सङ्ख्याको सूचीभन्दा बढी हो — यसको आकार छ। अधिकांश मानहरू कुनै केन्द्रीय बिन्दु वरिपरि थुप्रन्छन्। केही धेरै माथि, केही धेरै तल। त्यो थुप्रिने ढाँचा स्तम्भको वितरण हो, र यसलाई राम्रोसँग पढ्नाले तपाईंलाई सामान्य के हो, असामान्य के हो, र तपाईंले हेरिरहेको कुरा वास्तवमा एक जनसङ्ख्या हो कि एक देखिने दुई हो बताउँछ। आउटलायर यो दृश्यबाट स्वाभाविक रूपमा झर्छन् — र तिनसँग के गर्ने सिक्नु आधुनिक डाटा काममा कम सिकाइने सीप मध्ये एक हो।

वितरण हेर्ने

स्तम्भको वितरण देख्ने सबैभन्दा छिटो तरिका हिस्टोग्राम प्लट गर्ने हो। हिस्टोग्रामले मानहरूको दायरालाई बाल्टीमा बाँड्छ र प्रत्येक बाल्टीमा कति मान पर्छन् गन्छ।

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("data/clean/loans.csv")
df["amount"].hist(bins=50)
plt.xlabel("Loan amount (NPR)")
plt.ylabel("Number of loans")
plt.title("Loan amount distribution")
plt.show()

देखापर्ने आकारले एक हेराइमा तपाईंलाई धेरै बताउँछ।

तपाईंले चिन्ने आकारहरू

सममित (घन्टी-आकार)। “सामान्य” वितरण — अधिकांश मान औसत नजिक थुप्रन्छन्, झन्डै बराबर सङ्ख्या माथि र तल, सममित रूपमा घट्दै। उचाइ, शरीरको तापक्रम, मापन त्रुटि प्रायः यस्तै देखिन्छन्। औसत र मध्यिका झन्डै बराबर हुन्छन्।

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

बायाँ-बाङ्गो। ऐनामा चित्र — अधिकांश मान ठूला छन्, साना मानको लामो पुच्छरसहित। कम सामान्य; तपाईं कहिलेकाहीं घटना-समय डाटामा देख्नुहुन्छ (जस्तै ग्राहक चर्न नभएसम्म बाँच्ने)।

द्विमोडल। दुई शिखर। प्रायः एक स्तम्भमा दुई जनसङ्ख्या मिसिएको सङ्केत — साना व्यक्तिगत ऋण र ठूला व्यवसाय ऋण एउटै amount स्तम्भमा, वा धेरै फरक औसत भएका दुई विद्यालयका परीक्षा अङ्क संयोजन।

समान। दायरामा झन्डै बराबर फैलिएका मान। कहिलेकाहीं प्राकृतिक (जस्तै लटरी नम्बर), तर वास्तविक डाटामा प्रायः स्तम्भ बकवास हो वा तपाईंले गल्तीले ID हेरिरहनुभएको छ भन्ने सङ्केत।

वितरणको आकारले सही अर्को चरण सुझाव दिन्छ। सममित → औसत अर्थपूर्ण छ, मानक विचलन अर्थपूर्ण छ। बाङ्गो → मध्यिका बढी अर्थपूर्ण छ, प्रतिशतिक औसतभन्दा बढी इमानदार छन्। द्विमोडल → तपाईंले कुनै मोडेलिङअघि डाटालाई दुई अन्तर्निहित जनसङ्ख्यामा बाँड्नुपर्ने हुनसक्छ।

सानो नेपाली उदाहरण

माइक्रोफाइनान्स ऋण डाटासेट। हामी रकम वितरण प्लट गर्छौं र देख्छौं:

अधिकांश ऋण रु 10,000 र रु 50,000 बीच थुप्रन्छन्।
दोस्रो सानो थुप्रो रु 200,000 र रु 500,000 बीच बस्छ।
लामो पातलो पुच्छर रु 4,500,000 सम्म फैलिन्छ।

एउटा चार्टमा तीन सङ्केत:

  1. दुई थुप्रो द्विमोडल वितरण हुन् — सम्भवतः “व्यक्तिगत माइक्रोफाइनान्स” र “साना-व्यवसाय” ऋण, एक स्तम्भमा मिसिएका। अर्को चरणमा बाँड्न लायक।
  2. रु 4.5M पुच्छर — 4.5 मिलियनसम्मका केही मान — सम्भवतः वास्तविक छ तर असामान्य। कि वास्तविक उच्च-मूल्य व्यवसाय ऋण, कि पूर्ण रूपमा फरक डाटासेटका पङ्क्ति। छानबिन गर्नुहोस्।
  3. पहिलो थुप्रोमा मास सान्द्रता आफैभित्र दायाँ-बाङ्गो छ। पूरै स्तम्भको औसत भ्रामक हुनेछ; मध्यिकाले “सामान्य ऋण कस्तो देखिन्छ” को धेरै सत्य कथा भन्छ।

तपाईंले एक हिस्टोग्रामबाट पन्ध्र सेकेन्डमा तीनै पढ्नुहुन्छ।

आउटलायर — चार प्रकार

आउटलायर त्यो मान हो जुन बाँकी वितरणबाट टाढा छ। वाक्यांशले धेरै फरक चार स्थिति ओगट्छ, र हरेकका लागि सही कार्य फरक छ।

1. डाटा-प्रविष्टि त्रुटि। कसैले 124.5 को सट्टा 1245 टाइप गर्‍यो। मान सन्दर्भमा असम्भव छ। कार्य: फ्ल्यागसहित सुधार वा हटाउनुहोस्।

2. एकाइ त्रुटि। अरू 500000 हुँदा ऋण रकम 5 हो — झन्डै निश्चित लाखमा प्रविष्ट तर रुपैयाँमा भण्डारण गरिएको। मान वास्तविक हो तर एकाइ गलत हो। कार्य: पत्ता लगाउनुहोस् र रूपान्तरण गर्नुहोस् (अध्याय 3 खण्ड 3 का ढाँचा)।

3. दुर्लभ तर वैध चरम। अधिकांश साना माइक्रोफाइनान्स ऋणको डाटासेटमा वास्तविक रु 4.5 करोड ऋण। मान वास्तविक र सही छ। कार्य: मोडेल केका लागि हो आधारमा यसलाई मोडेलमा समावेश गर्ने कि नगर्ने निर्णय गर्नुहोस्। यदि मोडेल माइक्रोफाइनान्स डिफल्ट पूर्वानुमान गर्न हो भने, रु 4.5 करोड ऋण गलत जनसङ्ख्या हो — हटाउनुहोस्। यदि मोडेल सबै बैङ्क ऋण पूर्वानुमान गर्न हो भने, समावेश गर्नुहोस् तर सम्भवतः स्केल गर्नुहोस्।

4. संरचनात्मक समस्याको सङ्केत। सबै आउटलायर एक जिल्ला वा एक महिनामा थुप्रन्छन्। त्यहाँ अरूत्र नहुने केही भइरहेको छ। मान वास्तविक हो तर कथा प्रकट गर्छ। कार्य: मोडेलिङअघि छानबिन गर्नुहोस्।

चारलाई छुट्ट्याउनु न्यायगत काम हो। औजारले तपाईंलाई भेट्न मद्दत गर्छन्; केवल सोचले के गर्ने निर्णय गर्छ।

आउटलायर सस्तोमा पत्ता लगाउने

दुई मानक नियम। न त विश्वव्यापी हो — दुवै सुरुवात बिन्दु हुन्।

IQR नियम। अन्तरचतुर्थांश दायरा (IQR) 25 औं र 75 औं प्रतिशतिकबीचको फैलावट हो। Q1 भन्दा 1.5×IQR तल वा Q3 भन्दा माथि कुनै पनि कुरा आउटलायरका रूपमा फ्ल्याग गरिन्छ।

q1 = df["amount"].quantile(0.25)
q3 = df["amount"].quantile(0.75)
iqr = q3 - q1

mask = (df["amount"] < q1 - 1.5 * iqr) | (df["amount"] > q3 + 1.5 * iqr)
outliers = df[mask]
print(f"{len(outliers)} potential outliers")
print(outliers[["amount", "vendor", "district"]].head(10))

IQR नियम बाङ्गो वितरणप्रति सहनशील छ र अधिकांश ऋण, कारोबार, र राजस्व स्तम्भका लागि सही पहिलो प्रहार हो।

z-स्कोर नियम। मानको z-स्कोर औसतबाट कति मानक विचलन टाढा बस्छ हो। |z| > 3 भएको जुनसुकैलाई फ्ल्याग गरिन्छ।

mean = df["amount"].mean()
std = df["amount"].std()
df["z"] = (df["amount"] - mean) / std
outliers = df[df["z"].abs() > 3]

Z-स्कोर सममित वितरणका लागि उचित छन् तर बाङ्गोले धोका दिन्छ। बाङ्गो स्तम्भका लागि IQR प्राथमिकता दिनुहोस्; सममितका लागि कुनै पनि चल्छ।

स्क्याटर प्लट, छोटकरीमा, आउटलायरका लागि

एक स्तम्भलाई अर्कोसँग स्क्याटर प्लट — जस्तै तिर्ने दिनसँग ऋण रकम — ले एकैचोटि दुई आयाममा आउटलायर देखाउँछ। दुवै स्तम्भमा असामान्य पङ्क्ति (धेरै उच्च रकम र धेरै थोरै तिर्ने दिन) चम्किन्छ, र एकमा मात्र असामान्य पङ्क्तिभन्दा बढी चाखलाग्दो छ।

df.plot.scatter(x="amount", y="repayment_days", alpha=0.3)
plt.show()

alpha=0.3 (पारदर्शिता) घनो स्क्याटर प्लटका लागि आवश्यक छ — बिनै, डट ओभरल्याप गर्छन् र मास वास्तवमा कहाँ छ देख्न सक्नुहुन्न।

अन्त्यमा के गर्ने

उपयोगी निर्णय प्रवाहचित्र:

  1. वितरण प्लट गर्नुहोस्। आकार नोट गर्नुहोस्।
  2. द्विमोडल भए, छानबिन गर्नुहोस् — सम्भवतः दुई जनसङ्ख्या मिसिएका।
  3. IQR-आधारित आउटलायर फ्ल्याग गणना गर्नुहोस्। फ्ल्याग गरिएका पङ्क्ति हेर्नुहोस्।
  4. आउटलायरको हरेक थुप्रोका लागि, सोध्नुहोस्: डाटा त्रुटि, एकाइ त्रुटि, वास्तविक चरम, वा संरचनात्मक सङ्केत?
  5. हरेक थुप्रोका लागि निर्णय कागजात गर्नुहोस्। फ्ल्याग गरिएका पङ्क्ति मेटाउनुको सट्टा अलग्गै बचाउनुहोस्।

तपाईं यो प्रति डाटासेट प्रति स्तम्भ एक पटक गर्नुहुन्छ। पहिलो पटक एक घण्टा लाग्छ। दशौं पटक दश मिनेट लाग्छ। यो वास्तविक डाटासेटलाई इमानदार राख्ने अनुशासन हो।

आफ्नो बुझाइ जाँच्नुहोस्

Quick check

तपाईंले नेपाली ई-कमर्स डाटासेटमा ग्राहक उमेरको हिस्टोग्राम प्लट गर्नुभयो र दुई स्पष्ट शिखर देख्नुहुन्छ — एउटा 22 वर्ष वरिपरि र अर्को 38 वर्ष वरिपरि, बीचमा स्पष्ट गहिराइसँग। सम्भावित व्याख्या के हो?

Quick check

ऋण डाटासेटमा दायाँ-बाङ्गो loan_amount स्तम्भ छ ठूला मानको लामो पुच्छरसहित। IQR नियमले लगभग 8% पङ्क्तिलाई आउटलायर — अधिकांश ठूला-मानको पुच्छर — फ्ल्याग गर्छ। सबैभन्दा विचारशील कार्य के हो?

अब के आउँछ

तपाईं एकल स्तम्भको वितरण पढ्न सक्नुहुन्छ। अर्को खण्डले दोस्रो आयाम थप्छ: स्तम्भ बीच को सम्बन्ध। ऋण रकम तिर्ने दिनसँग कसरी सम्बन्धित छ? विद्यार्थी गन्ती जिल्लासँग कसरी सम्बन्धित छ? स्क्याटर प्लट, सहसम्बन्ध, र वास्तविक सङ्केतलाई सहयोगबाट छुट्ट्याउने ध्यानवान् आँखा — त्यो अध्याय 4 को अन्तिम टुक्रा हो।