डेटा लगाने में पड़ोसी जानकारी का उपयोग करना या ऑफ-डेटा (आर में) खोजना।


13

मेरे पास इस धारणा के साथ डेटासेट है कि निकटतम पड़ोसी सर्वश्रेष्ठ भविष्यवक्ता हैं। बस दो तरफा ढाल का एक आदर्श उदाहरण है-

यहाँ छवि विवरण दर्ज करें

मान लीजिए कि हमारे पास ऐसा मामला है जहां कुछ मूल्य गायब हैं, हम आसानी से पड़ोसियों और प्रवृत्ति के आधार पर भविष्यवाणी कर सकते हैं।

यहाँ छवि विवरण दर्ज करें

आर में अनुरूप डेटा मैट्रिक्स (वर्कआउट के लिए डमी उदाहरण):

miss.mat <- matrix (c(5:11, 6:10, NA,12, 7:13, 8:14, 9:12, NA, 14:15, 10:16),ncol=7, byrow = TRUE)
miss.mat 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    5    6    7    8    9   10   11
[2,]    6    7    8    9   10   NA   12
[3,]    7    8    9   10   11   12   13
[4,]    8    9   10   11   12   13   14
[5,]    9   10   11   12   NA   14   15
[6,]   10   11   12   13   14   15   16

नोट्स: (1) लापता मूल्यों की संपत्ति को यादृच्छिक माना जाता है , यह कहीं भी हो सकता है।

(2) सभी डेटा पॉइंट्स सिंगल वैरिएबल से हैं, लेकिन उनके मान को उनके neighborsसाथ पंक्ति और स्तंभ से प्रभावित माना जाता है । इसलिए मैट्रिक्स में स्थिति महत्वपूर्ण है और इसे अन्य चर के रूप में माना जा सकता है।

कुछ स्थितियों में मेरी आशा है कि मैं कुछ ऑफ-वैल्यू (गलतियाँ हो सकती है) और सही पूर्वाग्रह (केवल उदाहरण के लिए, डमी डेटा में ऐसी त्रुटि उत्पन्न कर सकता हूं) की भविष्यवाणी कर सकता हूं:

> mat2 <- matrix (c(4:10, 5, 16, 7, 11, 9:11, 6:12, 7:13, 8:14, 9:13, 4,15, 10:11, 2, 13:16),ncol=7, byrow = TRUE)
> mat2

    [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    4    5    6    7    8    9   10
[2,]    5   16    7   11    9   10   11
[3,]    6    7    8    9   10   11   12
[4,]    7    8    9   10   11   12   13
[5,]    8    9   10   11   12   13   14
[6,]    9   10   11   12   13    4   15
[7,]   10   11    2   13   14   15   16

उपरोक्त उदाहरण सिर्फ उदाहरण हैं (नेत्रहीन रूप से उत्तर दिए जा सकते हैं) लेकिन वास्तविक उदाहरण अधिक भ्रमित हो सकता है। मैं देख रहा हूं कि क्या इस तरह के विश्लेषण करने के लिए मजबूत तरीका है। मुझे लगता है कि यह संभव होना चाहिए। इस प्रकार का विश्लेषण करने के लिए उपयुक्त विधि क्या होगी? इस प्रकार के विश्लेषण के लिए कोई भी आर प्रोग्राम / पैकेज सुझाव?

यहाँ छवि विवरण दर्ज करें


क्या आप मान सकते हैं कि लापता डेटा मार्च (रुबिन (1976) की शब्दावली में) है?
user603

हां, मानों को यादृच्छिक (MAR) पर गायब माना जा सकता है। मेरे हाल के संपादन देखें।
rdorlearn

जवाबों:


7

प्रश्न तरीके का उपयोग करने के लिए पूछता है निकटतम पड़ोसियों एक में मजबूत पहचान करने के लिए जिस तरह से और सही स्थानीय बाहरी कारकों के कारण। ठीक ऐसा क्यों नहीं?

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

(लचीलापन इतना महत्वपूर्ण क्यों है? क्योंकि इस तरह की कोई भी प्रक्रिया कुछ स्थानीय व्यवहारों की पहचान करने का एक अच्छा मौका है, जैसा कि "आउटलाइंग" किया जा रहा है। इस प्रकार, ऐसी सभी प्रक्रियाओं को स्मूदी माना जा सकता है । वे स्पष्ट रूप से आउटलेर के साथ कुछ विस्तार को समाप्त करेंगे। विश्लेषक विस्तार को बनाए रखने और स्थानीय बाहरी लोगों का पता लगाने में विफल रहने के बीच व्यापार बंद पर कुछ नियंत्रण की आवश्यकता है।)

इस प्रक्रिया का एक और लाभ यह है कि इसमें मानों के आयताकार मैट्रिक्स की आवश्यकता नहीं होती है। वास्तव में, यह ऐसे डेटा के लिए उपयुक्त स्थानीय चिकनी का उपयोग करके अनियमित डेटा पर भी लागू किया जा सकता है ।

R, साथ ही अधिकांश पूर्ण-विशेषताओं वाले आँकड़ों के पैकेज में कई मजबूत स्थानीय स्मूदीज़ बनाए गए हैं, जैसे कि loess। निम्नलिखित उदाहरण का उपयोग करके संसाधित किया गया था। मैट्रिक्स में पंक्तियाँ और स्तंभ हैं - लगभग प्रविष्टियाँ। यह एक जटिल फ़ंक्शन का प्रतिनिधित्व करता है जिसमें कई स्थानीय एक्स्ट्रामा के साथ-साथ अंकों की एक पूरी पंक्ति होती है जहां यह अलग नहीं होता है (एक "क्रीज")। से अधिक अंकों के लिए - "अतिशयोक्ति" माना जाने वाला एक बहुत ही उच्च अनुपात - गॉसियन त्रुटियों को जोड़ा गया था, जिसका मानक विचलन मूल डेटा के मानक विचलन का केवल है। यह सिंथेटिक डेटासेट वास्तविक डेटा की कई चुनौतीपूर्ण विशेषताओं को प्रस्तुत करता है।49 4000 5 % 1 / 20794940005%1/20

आंकड़े

ध्यान दें कि ( Rसम्मेलनों के अनुसार ) मैट्रिक्स की पंक्तियों को ऊर्ध्वाधर स्ट्रिप्स के रूप में खींचा जाता है। अवशिष्टों को छोड़कर, सभी चित्र, उनके मूल्यों में छोटे बदलाव प्रदर्शित करने में मदद करने के लिए पहाड़ी हैं। इसके बिना, लगभग सभी स्थानीय आउटलेयर अदृश्य होंगे!

"Imputed" (फिक्स्ड अप) की तुलना "Real" (मूल बिना पढ़े हुए) चित्रों से करने पर, यह स्पष्ट होता है कि आउटलेयर को हटाने से क्रीज़ की कुछ चिकनी हो गई हैं, लेकिन सभी नहीं, क्रीज़ से (जो कि नीचे से चलती है , ; यह "रेजिड्यूल्स" प्लॉट में प्रकाश सियान एंगल्ड स्ट्राइप के रूप में स्पष्ट है।( 49 , 30 )(0,79)(49,30)

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

BTW, इस कोड ने आउटलेयर में से केवल की खोज की, जो पेश किए गए थे। यह प्रक्रिया की विफलता नहीं है। क्योंकि आउटलेर्स सामान्य रूप से वितरित किए गए थे, उनमें से लगभग आधे शून्य - या उससे कम आकार के करीब थे , अंतर्निहित मानों की तुलना में से अधिक की रेंज में - उन्होंने सतह में कोई पता लगाने योग्य परिवर्तन नहीं किया। 200 3 6001022003600

#
# Create data.
#
set.seed(17)
rows <- 2:80; cols <- 2:50
y <- outer(rows, cols, 
           function(x,y) 100 * exp((abs(x-y)/50)^(0.9)) * sin(x/10) * cos(y/20))
y.real <- y
#
# Contaminate with iid noise.
#
n.out <- 200
cat(round(100 * n.out / (length(rows)*length(cols)), 2), "% errors\n", sep="")
i.out <- sample.int(length(rows)*length(cols), n.out)
y[i.out] <- y[i.out] + rnorm(n.out, sd=0.05 * sd(y))
#
# Process the data into a data frame for loess.
#
d <- expand.grid(i=1:length(rows), j=1:length(cols))
d$y <- as.vector(y)
#
# Compute the robust local smooth.
# (Adjusting `span` changes the neighborhood size.)
#
fit <- with(d, loess(y ~ i + j, span=min(1/2, 125/(length(rows)*length(cols)))))
#
# Display what happened.
#
require(raster)
show <- function(y, nrows, ncols, hillshade=TRUE, ...) {
  x <- raster(y, xmn=0, xmx=ncols, ymn=0, ymx=nrows)
  crs(x) <- "+proj=lcc +ellps=WGS84"
  if (hillshade) {
    slope <- terrain(x, opt='slope')
    aspect <- terrain(x, opt='aspect')
    hill <- hillShade(slope, aspect, 10, 60)
    plot(hill, col=grey(0:100/100), legend=FALSE, ...)
    alpha <- 0.5; add <- TRUE
  } else {
    alpha <- 1; add <- FALSE
  }
  plot(x, col=rainbow(127, alpha=alpha), add=add, ...)
}

par(mfrow=c(1,4))
show(y, length(rows), length(cols), main="Data")

y.res <- matrix(residuals(fit), nrow=length(rows))
show(y.res, length(rows), length(cols), hillshade=FALSE, main="Residuals")
#hist(y.res, main="Histogram of Residuals", ylab="", xlab="Value")

# Increase the `8` to find fewer local outliers; decrease it to find more.
sigma <- 8 * diff(quantile(y.res, c(1/4, 3/4)))
mu <- median(y.res)
outlier <- abs(y.res - mu) > sigma
cat(sum(outlier), "outliers found.\n")

# Fix up the data (impute the values at the outlying locations).
y.imp <- matrix(predict(fit), nrow=length(rows))
y.imp[outlier] <- y[outlier] - y.res[outlier]

show(y.imp, length(rows), length(cols), main="Imputed")
show(y.real, length(rows), length(cols), main="Real")

whuber: क्या मैं इसे सही ढंग से समझता हूं कि आप यह मानते हैं कि आउटलेर अलग सेल हैं? यदि हां, तो क्या आप जानते हैं कि इस धारणा के उल्लंघन के लिए यह कितना संवेदनशील है?
user603

@ user603 मुझे नहीं लगता कि आउटलेयर अलग-थलग हैं - उनमें से कई उदाहरण नहीं हैं - लेकिन मैं यह मानता हूं कि किसी भी स्थानीय पड़ोस में आउटलेयर का अनुपात इतना कम है कि वे स्थानीय स्मूथ को नहीं तोड़ेंगे। यकीनन, अगर इस तरह के आउटलेर के बहुत बड़े अनुपात के साथ कोई पड़ोस है, तो उन्हें अब स्थानीय आउटलेर नहीं माना जा सकता है!
whuber

1
@ user603 बिल्कुल! लेकिन ऐसा लगता है कि हमें उस स्थिति से बाहर ले जाएगा, जहां "निकटतम पड़ोसी सर्वश्रेष्ठ भविष्यवक्ता हैं।" उस संबंध में, डेटा को संसाधित करते समय हम जो कुछ भी करते हैं वह इस स्थानीय भविष्यवाणी को संरक्षित करना चाहिए। यदि एक कॉलम में अपने पड़ोसी की तुलना में "बहुत अलग पैमाने" होता है, तो यह स्थिति इस धारणा को बहुत दृढ़ता से उल्लंघन करेगी। (मैं भी स्तंभों पर आपका ध्यान पर आश्चर्य:। पर फिर से पढ़ने सवाल है, मैं स्तंभों और पंक्तियों की भूमिका में किसी भी विषमता का पता नहीं लगा सकते हैं)
whuber

1
@ user603 मुझे लगता है कि अब मैं देख रहा हूं कि आप कहां से आ रहे हैं: कोई भी मामले के मैट्रिक्स (= पंक्तियों) और विशेषताओं (या "फ़ील्ड" या "कारक" या "चर", सभी कॉलम में) से निपटने के रूप में प्रश्न को समझ सकता है ; मामलों को -डायनामिक स्पेस में (अनियमित रूप से स्थानित) बिंदुओं के रूप में देखा जा सकता है; और यह कि "निकटतम पड़ोसियों" को इस स्थान पर एक प्राकृतिक मीट्रिक के रूप में समझा जाता है। यह मेरा और दोनों व्याख्याओं की तुलना में पूरी तरह से अलग व्याख्या है, आसानी से संबंधित नहीं हो सकता है, क्योंकि आपके लापता मूल्य या आउटलेयर इन बिंदुओं के बहुत ही स्थानों को प्रभावित करते हैं । p
whuber

1
@ जब तक यह महान समाधान है, धन्यवाद - मैं कम से कम कुछ लापता मूल्यों को पेश करने की कोशिश कर रहा था, जो हमेशा वास्तविक स्थिति है - लापता का मिश्रण (उदाहरण के लिए 50 लापता मूल्य) और आउटलेर (100 आउटलेर)। उत्तेजित करनेवाला !
rdorlearn

4

मैं आपको इस लेख पर एक नज़र डालने की सलाह दूंगा [को ०]। समस्या यह है कि यह पता लगाने के लिए आपके द्वारा दिए गए विवरण को अच्छी तरह से फिट करता है, सिवाय इसके कि लेखक द्वारा प्रस्तावित विधि एनएन-इनपुट की तुलना में थोड़ी अधिक परिष्कृत है (हालांकि यह शुरुआती बिंदु के समान कुछ का उपयोग करता है)।

(कुल , मैं मान कि , द्वारा डेटा मैट्रिक्स को मानकीकृत किया गया है: प्रत्येक कॉलम को विश्लेषण के पूर्व-प्रसंस्करण चरण में पागल द्वारा विभाजित किया गया है)XXnp

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

प्रत्येक पुनरावृत्ति का पहला चरण डेटा प्रतिरूपण चरण है। यह ईएम एल्गोरिथ्म के रूप में किया जाता है: लापता कोशिकाओं को उस मूल्य से भर दिया जाता है जो उनके पास होने की उम्मीद है (यह ई-चरण है)।

दो चरण पुनरावृत्त प्रक्रिया के दूसरे भाग में, एक पिछले चरण से प्राप्त संवर्धित डेटा के लिए एक (मजबूत) पीसीए फिट बैठता है। की एक वर्णक्रमीय अपघटन में यह परिणाम में (बीच के एक अनुमान), एक द्वारा orthogonal मैट्रिक्स और एक से विकर्ण मैट्रिक्स ( साथ ) है, जो robustified, पीसीए आधारित, एम-कदम का एक प्रकार है।XXttRppkLLkkDDkp

कागज को संक्षेप में प्रस्तुत करने के लिए, यहाँ सामान्य एल्गोरिथ्म है जो वे प्रस्तावित करते हैं:

  • सेट । एक अनुमान प्राप्त करें जहां लापता तत्व प्रारंभिक अनुमानों से भरे हुए हैं। प्रत्येक गुम सेल के लिए, ये प्रारंभिक अनुमान पंक्ति-वार के औसत और (मूल डेटा मैट्रिक्स) के ग़ैर-लुप्त तत्वों के कॉलम-वार मध्यस्थ हैं ।l=0WW0XX

  • फिर, अभिसरण तक करें:

    ए। पर मजबूत PCA करें और अनुमान प्राप्त करेंWWl(ttl,LLl,DDl)

    ख। सेटl=l+1

    सी। उपयोगYYl=LLl1(WWl1ttl1)(LLl1)

    घ। के लापता तत्वों को भरें जो वे मॉडल पर आधारित होने की उम्मीद करते हैं (ईएम एल्गोरिथ्म के ई चरण में) और इसी अनुपलब्ध तत्वों के संगत प्रविष्टियों द्वारा ।WWlWWlN(ttl1,LLl1DDl1(LLl1))YYl

Iterate (a-> c) जब तक कुछ सीमा से छोटा है। अंतिम पुनरावृत्ति में प्राप्त अनुमानित पैरामीटर के वेक्टर को रूप में संग्रहीत किया जाता है ।||WWl1WWl||F(tt,LL,DD)

विचार यह है कि प्रत्येक पुनरावृत्ति पर, डेटा के लिए मॉडल तेजी से आगे की ओर बढ़ता है। भोले, प्रारंभिक अनुमान, जबकि मजबूत एम कदम आउटलेर्स को फिटेड पैरामीटर को प्रभावित करने से रोकता है।(ttl1,LLl1DDl1)

यह दृष्टिकोण आपको प्रतिरूपण की गुणवत्ता की जांच करने के लिए नैदानिक ​​उपकरण का एक मेजबान भी देता है। उदाहरण के लिए, आप से कई ड्रा निकाल सकते हैं लेकिन इस बार आपके डेटा के ग़ैर लुप्त तत्वों के लिए -मेट्रिक्स और देखें कि उत्पन्न (काउंटर-तथ्यात्मक) डेटा का वितरण गैर-लापता कोशिकाओं में से प्रत्येक के लिए मनाया मूल्य से कितना मेल खाता है।N(ttl1,LLDD(LL))

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

  • [०] सेर्निल्स एस। और वेरडनक, टी। (२००))। आउटलेयर और अनुपलब्ध तत्वों वाले डेटा के लिए प्रमुख घटक विश्लेषण। कम्प्यूटेशनल स्टेटिस्टिक्स एंड डेटा एनालिसिस वॉल्यूम: 52 इश्यू: 3 पेज: 1712-1727।

धन्यवाद, मेरा उद्देश्य यहाँ है कि आउटलेर्स का अनुमान लगाना नहीं है (इस अर्थ में कि वे वितरण से दूर हैं) बल्कि ऑफ-वैल्यू (आउटलेयर) पैटर्न के अनुरूप नहीं हैं।
rdorlearn

मुझे लगता है कि आपने मेरे जवाब को गलत समझा। यह दृष्टिकोण किसी भी मूल्य के लिए भविष्यवाणी का उत्पादन करेगा, लेकिन बाहरी लोगों को बहुत अच्छी तरह से भविष्यवाणी नहीं की जाएगी: ऐसा इसलिए है क्योंकि उन्हें पीसीए फिट को प्रभावित करने की अनुमति नहीं है। मैं आपको पेपर पढ़ने की सलाह देता हूं।
user603

धन्यवाद, दृष्टिकोण दिलचस्प लगता है और अनुमान भी अच्छा काम कर सकता है। लेकिन उचित कोड के बिना लागू करना मुश्किल होगा - कम से कम मेरे लिए बहुत परिष्कृत!
rdorlearn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.