জেনেরিক সময় সিরিজের অনলাইন আউটলেট সনাক্তকরণের জন্য সাধারণ অ্যালগরিদম


88

আমি প্রচুর সময়ের সিরিজ নিয়ে কাজ করছি। এই সময়ের সিরিজটি মূলত প্রতি 10 মিনিটে আসে নেটওয়ার্ক পরিমাপ এবং এর মধ্যে কিছুগুলি পর্যায়ক্রমিক (যেমন ব্যান্ডউইথ) হয়, অন্যদিকে কিছু থাকে না (যেমন রাউটিং ট্র্যাফিকের পরিমাণ)।

একটি অনলাইন "আউটলেট সনাক্তকরণ" করার জন্য আমি একটি সাধারণ অ্যালগরিদম চাই। মূলত, আমি প্রতিটি সময়ের সিরিজের পুরো historicalতিহাসিক ডেটা মেমরির (বা ডিস্কে) রাখতে চাই এবং আমি কোনও লাইভ দৃশ্যে যে কোনও আউটরিয়ার সনাক্ত করতে চাই (প্রতিটি সময় একটি নতুন নমুনা ধরা পরে)। এই ফলাফলগুলি অর্জন করার সর্বোত্তম উপায় কী?

আমি বর্তমানে কিছুটা গোলমাল মুছে ফেলতে মুভিং এভারেজ ব্যবহার করছি, তবে তারপরে আর কী হবে? পুরো ডেটা সেটের বিপরীতে স্ট্যান্ডার্ড বিচ্যুতি, পাগল ইত্যাদির মতো সাধারণ জিনিসগুলি ভাল কাজ করে না (টাইম সিরিজটি স্থির রয়েছে বলে ধরে নিতে পারি না), এবং আমি আরও কিছু "নির্ভুল" চাই, যেমন একটি কালো রঙের বাক্স:

ডাবল আউটিলার_ডিটেকশন (ডাবল * ভেক্টর, ডাবল ভ্যালু);

যেখানে ভেক্টর হ'ল doubleতিহাসিক তথ্য সম্বলিত দ্বিগুণ অ্যারে এবং প্রত্যাবর্তন মান হ'ল নতুন নমুনার "মান" এর অসাধারণ স্কোর।


1
কেবল স্পষ্টতার জন্য, এখানে এসও এর মূল প্রশ্নটি রয়েছে: stackoverflow.com/questions/3390458/…
ম্যাট পার্কার

1
আমি মনে করি পোস্টাররা যদি অন্য এসই সাইটে একই প্রশ্ন পোস্ট করে থাকে তবে প্রশ্নের অংশ হিসাবে লিঙ্কগুলি পোস্ট করতে উত্সাহিত করা উচিত।

হ্যাঁ, আপনি পুরোপুরি ঠিক বলেছেন। পরের বার আমি উল্লেখ করব যে বার্তাটি ক্রসপোস্টেড।
gianluca

আমি আপনাকে পৃষ্ঠার ডানদিকে অন্যান্য সম্পর্কিত লিঙ্কগুলিও পরীক্ষা করে দেখার পরামর্শ দিচ্ছি। এটি একটি জনপ্রিয় প্রশ্ন এবং এটি আগে বিভিন্ন ধরণের প্রশ্নে উঠে এসেছে। যদি তারা সন্তোষজনক না হয় তবে আপনার অবস্থার সুনির্দিষ্ট সম্পর্কে আপনার প্রশ্নটি আপডেট করা ভাল।
অ্যান্ডি ডব্লিউ

ভাল ধরা, অ্যান্ডি! এই প্রশ্নটি অন্য একটির সাথে মিশ্রিত করা যাক।
whuber

উত্তর:


75

এখানে একটি সাধারণ আর ফাংশন যা সময় সিরিজের আউটলিয়ারগুলি খুঁজে পাবেন (এবং optionচ্ছিকভাবে তাদের কোনও প্লটের মধ্যে দেখান)। এটি মৌসুমী এবং অ-মৌসুমী সময় সিরিজ পরিচালনা করবে। মূল ধারণাটি হ'ল প্রবণতা এবং মৌসুমী উপাদানগুলির দৃ .় অনুমান এবং তাদের বিয়োগ করা। তারপরে অবশিষ্টাংশগুলিতে অনুসন্ধানকারীদের সন্ধান করুন। রেসিডুয়াল আউটলিয়ারদের জন্য পরীক্ষা স্ট্যান্ডার্ড বক্সপ্লোটের মতোই - উপরের এবং নীচের কোয়ার্টাইলগুলির উপরে বা নীচে 1.5IQR এর চেয়ে বেশি পয়েন্টগুলি বহিরাগত বলে ধরে নেওয়া হয়। এই প্রান্তিকের উপরে / নীচে আইকিউআরগুলির সংখ্যা একটি আউটলেটর "স্কোর" হিসাবে ফিরে আসে। সুতরাং স্কোরটি যেকোন ধনাত্মক সংখ্যা হতে পারে এবং অ-বহিরাগতদের জন্য শূন্য হবে।

আমি বুঝতে পেরেছি আপনি আর এ প্রয়োগ করছেন না, তবে আমি প্রায়শই একটি আর ফাংশন শুরু করার জন্য একটি ভাল জায়গা পাই। তারপরে টাস্কটি হ'ল ভাষাটি যা প্রয়োজন তা অনুবাদ করে।

tsoutliers <- function(x,plot=FALSE)
{
    x <- as.ts(x)
    if(frequency(x)>1)
        resid <- stl(x,s.window="periodic",robust=TRUE)$time.series[,3]
    else
    {
        tt <- 1:length(x)
        resid <- residuals(loess(x ~ tt))
    }
    resid.q <- quantile(resid,prob=c(0.25,0.75))
    iqr <- diff(resid.q)
    limits <- resid.q + 1.5*iqr*c(-1,1)
    score <- abs(pmin((resid-limits[1])/iqr,0) + pmax((resid - limits[2])/iqr,0))
    if(plot)
    {
        plot(x)
        x2 <- ts(rep(NA,length(x)))
        x2[score>0] <- x[score>0]
        tsp(x2) <- tsp(x)
        points(x2,pch=19,col="red")
        return(invisible(score))
    }
    else
        return(score)
}

আমার কাছ থেকে +1, দুর্দান্ত। সুতরাং> 1.5-এক্স আন্ত-কোয়ার্টাইল পরিসরটি কি সময় নির্ভর নির্ভর সিরিজের জন্য কোনও আউটলারের সম্মতি সংজ্ঞা? এটি একটি স্কেল-স্বতন্ত্র রেফারেন্স ভাল লাগবে।
ডগ

আউটলেট টেস্টটি অবশিষ্টাংশগুলিতে রয়েছে, তাই আশা করি সময়-নির্ভরতা কম। আমি কোন sensক্যমত্য সম্পর্কে জানি না, তবে বক্সপ্লটগুলি প্রায়শই আউটিলার সনাক্তকরণের জন্য ব্যবহৃত হয় এবং যুক্তিযুক্তভাবে ভালভাবে কাজ করে বলে মনে হয়। কেউ যদি ফাংশনটিকে একটু ফ্যানসিয়ার করতে চান তবে আরও ভাল পদ্ধতি রয়েছে।
রব হ্যান্ডম্যান

সত্যিই আপনার সহায়তার জন্য আপনাকে ধন্যবাদ, আমি সত্যিই প্রশংসা করি। আমি এখন কাজে বেশ ব্যস্ত, তবে যত তাড়াতাড়ি সম্ভব আপনার মতো পদ্ধতির পরীক্ষা করতে যাচ্ছি, এবং আমি এই বিষয়টি সম্পর্কে আমার চূড়ান্ত বিবেচনা নিয়ে ফিরে আসব। একটি মাত্র চিন্তা করেছিল: আপনার ফাংশনে, আমি যা দেখছি তা থেকে আমাকে নিজেই সময় সিরিজের ফ্রিকোয়েন্সি নির্দিষ্ট করতে হবে (এটি নির্মাণ করার সময়), এবং theতুরতা উপাদানটি কেবল তখনই বিবেচনা করা হয় যখন ফ্রিকোয়েন্সি 1 এর চেয়ে বেশি হয় কোনও শক্ত উপায় আছে কি? এই স্বয়ংক্রিয়ভাবে মোকাবেলা করতে?
gianluca

1
হ্যাঁ, আমি ধরে নিয়েছি যে ফ্রিকোয়েন্সিটি পরিচিত এবং নির্দিষ্ট করা আছে। স্বয়ংক্রিয়ভাবে ফ্রিকোয়েন্সি অনুমান করার পদ্ধতি রয়েছে তবে এটি কার্যকরীভাবে জটিল করে তুলবে। যদি আপনার ফ্রিকোয়েন্সিটি অনুমান করার প্রয়োজন হয় তবে এ সম্পর্কে একটি পৃথক প্রশ্ন জিজ্ঞাসা করার চেষ্টা করুন - এবং আমি সম্ভবত একটি উত্তর সরবরাহ করব! তবে এটিতে আমার একটি মন্তব্যে আরও বেশি জায়গা প্রয়োজন।
রব হ্যান্ডম্যান

2
@ মার্সিন, আমি নিজেই এটিকে ছুরিকাঘাত করার পরামর্শ দিচ্ছি। আপনার সমাধানটি gist.github.com এ পেস্ট করুন এবং আপনার কাজ শেষ হওয়ার পরে অন্যেরা আপনার কাজ পরীক্ষা করার জন্য একটি প্রশ্ন পোস্ট করুন?
কেন উইলিয়ামস

27

একটি ভাল সমাধানের মধ্যে বেশ কয়েকটি উপাদান থাকবে:

  • ননস্টেশনারিটি অপসারণ করতে একটি প্রতিরোধী, চলমান উইন্ডোটি মসৃণ ব্যবহার করুন।

  • মূল ডেটাটি পুনরায় প্রকাশ করুন যাতে মসৃণতার সাথে সম্মানিত অবশিষ্টাংশগুলি প্রায় প্রতিসাম্যিকভাবে বিতরণ করা হয়। আপনার ডেটা প্রকৃতি দেওয়া, সম্ভবত তাদের স্কোয়ার শিকড় বা লগারিদমগুলি প্রতিসম অবশিষ্টাংশ দেয়।

  • অবশিষ্টাংশগুলিতে নিয়ন্ত্রণ চার্ট পদ্ধতিগুলি বা কমপক্ষে নিয়ন্ত্রণ চার্টের চিন্তাভাবনা প্রয়োগ করুন।

শেষের হিসাবে যতটা যায়, কন্ট্রোল চার্ট চিন্তা করে যে "প্রচলিত" প্রান্তিকের 2 টি এসডি বা 1.5 ভাগ আইকিউআর কোয়ার্টাইলের বাইরে খুব খারাপ কাজ করে কারণ তারা অনেকগুলি মিথ্যা বহিরাগত-নিয়ন্ত্রণ-সংকেতকে ট্রিগার করে। লোকেরা সাধারণত নিয়ন্ত্রণ চার্টের কাজে 3 এসডি ব্যবহার করেন, কোয়ার্টাইলের বাইরে আইকিউআর থেকে 2.5 (বা এমনকি 3) বারের চেয়ে ভাল সূচনা পয়েন্ট হতে পারে।

আমি রব হ্যান্ডম্যানের সমাধানটির প্রকৃতিটি কম-বেশি রূপরেখা দিয়েছিলাম যেখানে এটিতে দুটি প্রধান পয়েন্ট যুক্ত করছি: ডেটাটিকে পুনরায় প্রকাশ করার সম্ভাবনা প্রয়োজন এবং কোনও বহিরাগতকে সংকেত দেওয়ার ক্ষেত্রে আরও রক্ষণশীল হওয়ার বুদ্ধি। আমি নিশ্চিত নই যে লস কোনও অনলাইন ডিটেক্টরের জন্য ভাল, যদিও এটি শেষ পয়েন্টগুলিতে ভাল কাজ করে না। পরিবর্তে আপনি চলন্ত মিডিয়ান ফিল্টার (টুকির প্রতিরোধী স্মুথিংয়ের মতো) এর মতো সাধারণ কিছু ব্যবহার করতে পারেন। যদি আউটলিয়াররা ফেটে না আসে, আপনি একটি সংকীর্ণ উইন্ডো ব্যবহার করতে পারেন (সম্ভবত 5 টি পয়েন্ট, যা 5 এর একটি গ্রুপের মধ্যে কেবল 3 বা আরও বেশি বিদেশী বিস্ফোরণে ভেঙে যাবে)।

আপনি একবার ডেটাটির একটি ভাল পুনঃপ্রকাশটি নির্ধারণ করার জন্য বিশ্লেষণটি সম্পাদন করার পরে, আপনাকে পুনঃপ্রকাশটি পরিবর্তন করার সম্ভাবনা কম। সুতরাং, আপনার অনলাইন ডিটেক্টরটিকে কেবলমাত্র সাম্প্রতিকতম মানগুলি (সর্বশেষতম উইন্ডো) উল্লেখ করতে হবে কারণ এটি পূর্বের ডেটাটি মোটেই ব্যবহার করবে না। আপনার যদি দীর্ঘকালীন সিরিজ থাকে তবে প্রক্রিয়াটি উন্নত করতে আপনি স্বতঃসংশ্লিষ্টতা এবং মৌসুমতা বিশ্লেষণ করতে আরও এগিয়ে যেতে পারেন (যেমন প্রতিদিন বা সাপ্তাহিক ওঠানামা পুনরুক্তি করা) improve


3
এটি ব্যবহারিক বিশ্লেষণের জন্য একটি অসাধারণ উত্তর। কোয়ার্টাইলের বাইরে 3 আইকিউআর চেষ্টা করার প্রয়োজন কখনও ভাবেন নি।
জন রবার্টসন

3
@ জন, 1.5 আইকিউআর হ'ল টুকির মূল পরামর্শটি একটি বক্সপ্লোটে দীর্ঘতম হুইস্কারগুলির জন্য এবং 3 আইকিউআর পয়েন্টগুলি "বহিরাগতদের" হিসাবে চিহ্নিত করার জন্য তাঁর প্রস্তাবনা (একটি জনপ্রিয় 60০ এর বাক্যাংশের ফেলা)। এটি অনেকগুলি বক্সপ্লোট অ্যালগরিদমে অন্তর্নির্মিত। এই সুপারিশটি তাত্ত্বিকভাবে হোয়াগলিন, মোস্টেলার, এবং টুকি, অবিচলিত শক্তিশালী এবং অনুসন্ধানের ডেটা বিশ্লেষণে বিশ্লেষণ করা হয়েছে।
whuber

এটি বিশ্লেষণের চেষ্টা করছি এমন সময় সিরিজের ডেটা নিশ্চিত করে। উইন্ডো গড় এবং একটি উইন্ডো স্ট্যান্ডার্ড বিচ্যুতি। ((x - গড়) / এসডি)> 3 টি এমন পয়েন্ট হিসাবে মনে হচ্ছে যা আমি বিদেশী হিসাবে পতাকাঙ্কিত করতে চাই। ভাল অন্তত আউটলিয়ার হিসাবে সতর্কতা, আমি চরম ত্রুটি অপ্রত্যাচারক হিসাবে 10 এসডি এর চেয়ে বেশি কিছু পতাকাঙ্কিত করি। আমি যে সমস্যাটি চালাচ্ছি তা হ'ল আদর্শ উইন্ডোর দৈর্ঘ্য কত? আমি 4-8 ডেটা পয়েন্টের মধ্যে যে কোনও কিছু নিয়ে খেলছি।
জোশ পিক

1
@ নিও আপনার সেরা বাজি হতে পারে আপনার ডেটার একটি উপসেট নিয়ে পরীক্ষা করা এবং বাকী পরীক্ষায় আপনার সিদ্ধান্তগুলি নিশ্চিত করা। আপনি আরও একটি আনুষ্ঠানিক ক্রস-বৈধকরণ পরিচালনা করতে পারেন (তবে সমস্ত মানের আন্তঃনির্ভরতার কারণে সময় সিরিজের ডেটাগুলির সাথে বিশেষ যত্নের প্রয়োজন)।
whuber

17

(এই উত্তরটি বকেয়া ইভেন্টগুলি সনাক্তকরণে একটি সদৃশ (এখন বন্ধ) প্রশ্নের জবাব দিয়েছে , যা গ্রাফিকাল আকারে কিছু তথ্য উপস্থাপন করেছে presented


আউটলেট সনাক্তকরণ ডেটার প্রকৃতি এবং আপনি সেগুলি সম্পর্কে কী ধরে নিতে ইচ্ছুক তার উপর নির্ভর করে। সাধারণ উদ্দেশ্য পদ্ধতি শক্তিশালী পরিসংখ্যানের উপর নির্ভর করে। এই পদ্ধতির স্পিরিটি হ'ল ডেটায়ের সিংহভাগ এমনভাবে চিহ্নিত করা যায় যা কোনও বিদেশী দ্বারা প্রভাবিত হয় না এবং তারপরে এমন কোনও স্বতন্ত্র মানগুলিকে নির্দেশ করে যা সেই বৈশিষ্ট্যটির মধ্যে খাপ খায় না।

যেহেতু এটি একটি সময়ের সিরিজ, এটি চলমান ভিত্তিতে বিদেশীদের সনাক্ত করতে (পুনরায়) প্রয়োজনের জটিলতা যুক্ত করে। যদি সিরিজটি উদ্ঘাটন হিসাবে এটি করা হয়, তবে আমাদের কেবল ভবিষ্যতের ডেটা নয়, সনাক্তকরণের জন্য পুরানো ডেটা ব্যবহার করার অনুমতি দেওয়া হচ্ছে! তদতিরিক্ত, বহুবার পুনরাবৃত্তি পরীক্ষার বিরুদ্ধে সুরক্ষা হিসাবে, আমরা এমন একটি পদ্ধতি ব্যবহার করতে চাই যাতে খুব কম মিথ্যা ইতিবাচক হার রয়েছে।

এই বিবেচনাগুলি ডেটাগুলির উপর একটি সহজ, শক্তিশালী মুভিং উইন্ডো আউটলেট পরীক্ষা চালানোর পরামর্শ দেয় । অনেকগুলি সম্ভাবনা রয়েছে তবে একটি সহজ, সহজে বোঝা যায় এবং সহজেই প্রয়োগ করা একটি চলমান এমএডি: মিডিয়ান থেকে মধ্যমা পরম বিচ্যুতি ভিত্তিক। এটি একটি স্ট্যান্ডার্ড বিচ্যুতির অনুরূপ তথ্যের মধ্যে ভিন্নতার একটি দৃ of়তম মাপদণ্ড। একটি বহির্মুখী শিখরটি বেশিরভাগ এমএডি বা মাঝের চেয়ে আরও বেশি হবে।

Rx=(1,2,,n)n=1150y

# Parameters to tune to the circumstances:
window <- 30
threshold <- 5

# An upper threshold ("ut") calculation based on the MAD:
library(zoo) # rollapply()
ut <- function(x) {m = median(x); median(x) + threshold * median(abs(x - m))}
z <- rollapply(zoo(y), window, ut, align="right")
z <- c(rep(z[1], window-1), z) # Use z[1] throughout the initial period
outliers <- y > z

# Graph the data, show the ut() cutoffs, and mark the outliers:
plot(x, y, type="l", lwd=2, col="#E00000", ylim=c(0, 20000))
lines(x, z, col="Gray")
points(x[outliers], y[outliers], pch=19)

প্রশ্নে বর্ণিত লাল বক্ররের মতো একটি ডেটাসেটে প্রয়োগ করা হয়েছে, এটি এই ফলাফলটি প্রকাশ করে:

পটভূমি

ডেটাটি লাল রঙে, মিডিয়ানের 30 দিনের উইন্ডোতে দেখানো হয়েছে + ধূসর রঙের মধ্যে 5 * এমএডি থ্রেশহোল্ডগুলি এবং বিদেশীরা - যা কেবল ধূসর বক্ররেখার উপরে data ডেটা মানগুলি - কালো রঙে in

(থ্রেশহোল্ডটি কেবলমাত্র প্রাথমিক উইন্ডোটির শেষে গণনা করা যেতে পারে initial প্রাথমিক উইন্ডোর সমস্ত তথ্যের জন্য প্রথম প্রান্তিক ব্যবহার করা হয়: এজন্য ধূসর বক্ররেখা x = 0 এবং x = 30 এর মধ্যে সমতল))

প্যারামিটারগুলি পরিবর্তনের প্রভাবগুলি হ'ল (ক) এর মান বৃদ্ধি করা windowধূসর বক্ররেখা মসৃণ করে এবং (খ) বৃদ্ধি thresholdধূসর বক্ররেখা উত্থাপন করে। এটি জানার মাধ্যমে, কেউ ডেটার প্রাথমিক বিভাগে নিয়ে যেতে পারে এবং দ্রুত প্যারামিটারগুলির মানগুলি সনাক্ত করতে পারে যা বাকী ডেটা থেকে বহির্মুখী শিখরকে সর্বোত্তম করে দেয়। বাকী ডেটা পরীক্ষা করার জন্য এই প্যারামিটার মানগুলি প্রয়োগ করুন। যদি কোনও প্লট দেখায় যে পদ্ধতি সময়ের সাথে সাথে আরও খারাপ হচ্ছে, তার অর্থ ডেটার প্রকৃতি পরিবর্তন হচ্ছে এবং পরামিতিগুলিকে পুনরায় টিউনিংয়ের প্রয়োজন হতে পারে।

এই পদ্ধতিটি ডেটা সম্পর্কে কতটা অনুমান করে তা লক্ষ্য করুন: তাদের সাধারণত বিতরণ করতে হবে না; তাদের কোনও পর্যায়ক্রমিকতা প্রদর্শন করার প্রয়োজন নেই; এমনকি তাদের অ-নেতিবাচক হতে হবে না। সকল এটা ধরে নেয় যে ডেটা সময়ের যুক্তিসঙ্গতভাবে অনুরূপ উপায়ে আচরণ এবং পার্শ্ববর্তী পীক ডেটার বাকি তুলনায় দৃশ্যত বেশী যে হয়।


যদি কেউ পরীক্ষা করতে চান (বা এখানে প্রদত্ত একটিটির সাথে অন্য কোনও সমাধানের তুলনা করুন), এখানে কোডটি আমি প্রশ্নের মধ্যে দেখানো মত ডেটা তৈরি করতে ব্যবহার করেছি।

n.length <- 1150
cycle.a <- 11
cycle.b <- 365/12
amp.a <- 800
amp.b <- 8000

set.seed(17)
x <- 1:n.length
baseline <- (1/2) * amp.a * (1 + sin(x * 2*pi / cycle.a)) * rgamma(n.length, 40, scale=1/40)
peaks <- rbinom(n.length, 1,  exp(2*(-1 + sin(((1 + x/2)^(1/5) / (1 + n.length/2)^(1/5))*x * 2*pi / cycle.b))*cycle.b))
y <- peaks * rgamma(n.length, 20, scale=amp.b/20) + baseline

এটি একটি সত্যিই আকর্ষণীয় সমাধান এবং আমি প্রশংসা করি যে আমি আর ব্যবহার না করে এটি প্রয়োগ করতে পারি (কেবলমাত্র একটি ওয়েব অ্যাপ্লিকেশনটিতে সরল জাভাস্ক্রিপ্ট ব্যবহার করে)। ধন্যবাদ!
hgoebl

15

যদি আপনি কোনও নির্দিষ্ট পদ্ধতির সাথে অনুমানগুলি সম্পর্কে উদ্বিগ্ন হন তবে এক পদ্ধতির মধ্যে রয়েছে বিভিন্ন সংকেত নিয়ে বিভিন্ন সংখ্যক শিখাকে প্রশিক্ষণ দেওয়া, তারপরে ছড়িয়ে পড়া পদ্ধতিগুলি ব্যবহার করুন এবং বহির্মুখী শ্রেণিবদ্ধকরণের জন্য আপনার শিখার কাছ থেকে "ভোট" দিয়ে সমষ্টি করুন।

বিটিডাব্লু, সমস্যাটি কিছু পদ্ধতির উল্লেখ করার কারণে এটি পড়া বা স্কিমিংয়ের পক্ষে উপযুক্ত।


5

আমি অনুমান করছি পরিশীলিত সময় সিরিজের মডেলটি এই পদ্ধতিটি ব্যবহার করে বিদেশী সনাক্ত করতে সময় লাগে বলে আপনার পক্ষে কাজ করবে না। অতএব, এখানে কার্যনির্বাহী:

  1. দিনের ,তিহাসিক তথ্যের ম্যানুয়াল বিশ্লেষণের ভিত্তিতে প্রথমে একটি বেসলাইন 'স্বাভাবিক' ট্র্যাফিকের ধরণগুলি স্থাপন করুন যা দিনের সময়, সপ্তাহের দিন বনাম উইকএন্ড, বছরের মাস ইত্যাদি হিসাবে বিবেচিত হয় for

  2. বহিরাগতদের সনাক্ত করতে কিছু সাধারণ প্রক্রিয়া (উদাহরণস্বরূপ, কার্লোস দ্বারা প্রস্তাবিত গড়ের গড়) এর সাথে এই বেসলাইনটি ব্যবহার করুন।

আপনি কিছু ধারণার জন্য পরিসংখ্যান প্রক্রিয়া নিয়ন্ত্রণ সাহিত্যও পর্যালোচনা করতে চাইতে পারেন ।


1
হ্যাঁ, আমি ঠিক তাই করছি: এখন অবধি আমি নিজেই সিগন্যালকে পিরিয়ডে বিভক্ত করেছি, যাতে তাদের প্রত্যেকের জন্য আমি একটি আত্মবিশ্বাসের ব্যবধানটি সংজ্ঞায়িত করতে পারি যার মধ্যে সংকেতটি স্থির বলে মনে করা হয়, এবং তাই আমি স্ট্যান্ডার্ড পদ্ধতিগুলি ব্যবহার করতে পারি স্ট্যান্ডার্ড বিচ্যুতি হিসাবে, ... আসল সমস্যাটি হ'ল যে সমস্ত সংকেত বিশ্লেষণ করতে হবে তার প্রত্যাশিত প্যাটার্নটি আমি সিদ্ধান্ত নিতে পারছি না, এবং সে কারণেই আমি আরও বুদ্ধিমান কিছু খুঁজছি।
জিয়ানলুকা

এখানে একটি ধারণা দেওয়া হয়েছে: পদক্ষেপ 1: historicalতিহাসিক তথ্যের উপর ভিত্তি করে এক সময়ের ভিত্তিতে জেনেরিক টাইম সিরিজ মডেলটি প্রয়োগ এবং অনুমান করুন। এটি অফলাইনে করা যেতে পারে। পদক্ষেপ 2: ফলাফলকারীদের সনাক্ত করতে ফলাফলের মডেলটি ব্যবহার করুন। পদক্ষেপ 3: কিছুটা ফ্রিকোয়েন্সি (সম্ভবত প্রতি মাসে?) এ, সময় সিরিজের মডেলটি পুনরায় ক্যালিব্রেট করুন (এটি অফলাইনে করা যেতে পারে) যাতে আপনার ট্র্যাফিক 2 ধাপের বহিরাগতদের সনাক্তকরণ বর্তমান ট্র্যাফিকের নিদর্শনগুলির সাথে ধাপের বাইরে চলে না যায়। এটা কি আপনার প্রসঙ্গে কাজ করবে?

হ্যাঁ, এটি কার্যকর হতে পারে। আমি একই ধরণের পদ্ধতির কথা ভাবছিলাম (প্রতি সপ্তাহে বেসলাইনটি পুনর্নির্মাণ করা যা আপনার বিশ্লেষণ করার জন্য শত শত অবিচ্ছিন্ন সময় সিরিজ থাকলে সিপিইউ নিবিড় হতে পারে)। বিটিডাব্লু আসল কঠিন প্রশ্ন "গোলমাল, প্রবণতা অনুমান এবং seasonতুসত্তাকে বিবেচনা করে একটি সম্পূর্ণ জেনেরিক সিগন্যাল মডেলিংয়ের জন্য সেরা ব্ল্যাকবক্স-শৈলীর অ্যালগরিদম কোনটি?"। আফাইক, সাহিত্যের প্রতিটি পদ্ধতির জন্য সত্যই শক্ত "পরামিতি টিউনিং" পর্যায়ে প্রয়োজন এবং আমি যে একমাত্র স্বয়ংক্রিয় পদ্ধতি পেয়েছি তা হ্যান্ডম্যানের একটি এআরআইএমএ মডেল ( রবজাইন্ডম্যান / সোফটওয়্যার / ফরেস্টকাস্ট )। আমি কিছু অনুপস্থিত করছি?
জিয়ানলুকা

দয়া করে মনে রাখবেন আমি এই পরামিতিগুলি তদন্ত করার জন্য খুব বেশি অলস নই, মূল বিষয়টি হ'ল এই মানগুলি সংকেতের প্রত্যাশিত প্যাটার্ন অনুসারে সেট করা দরকার এবং আমার দৃশ্যে আমি কোনও অনুমান করতে পারি না।
gianluca

আরিমা মডেলগুলি ক্লাসিক সময়ের সিরিজ মডেল যা সময় সিরিজের ডেটা ফিট করতে ব্যবহার করা যেতে পারে। আমি আপনাকে আরিমা মডেলগুলির অ্যাপ্লিকেশনটি অনুসন্ধান করতে উত্সাহিত করব। আপনি রব অনলাইনে থাকার জন্য অপেক্ষা করতে পারেন এবং সম্ভবত তিনি কিছু ধারণা নিয়ে আসবেন।

5

মৌসুমে ডেটা এমনভাবে সামঞ্জস্য করুন যে কোনও সাধারণ দিন ফ্ল্যাটের কাছাকাছি দেখায়। আপনি আজ সন্ধ্যা :00:০০ টায় নমুনা নিতে পারেন এবং বিকাল ৫ টা ৪০ মিনিটে আগের ৩০ দিনের গড় বিয়োগ করতে বা ভাগ করতে পারেন। তারপরে বিদেশীদের জন্য N স্ট্যান্ডার্ড বিচ্যুতিগুলি (প্রাক-সমন্বিত ডেটা ব্যবহার করে মাপা) অতীত দেখুন। এটি সাপ্তাহিক এবং প্রতিদিনের জন্য আলাদাভাবে করা যেতে পারে "asonsতু।"


আবার, সিগন্যালটির মতো seasonতুরতা থাকার কথা যদি এটি বেশ ভালভাবে কাজ করে তবে আমি যদি সম্পূর্ণ ভিন্ন টাইম সিরিজটি ব্যবহার করি (অর্থাত্ সময়ের সাথে গড় টিসিপি রাউন্ড ট্রিপ সময়), এই পদ্ধতিটি কার্যকর হবে না (যেহেতু এটি আরও ভাল হবে) oneতিহাসিক ডেটাযুক্ত স্লাইডিং উইন্ডোটি ব্যবহার করে একটি সাধারণ বৈশ্বিক গড় এবং স্ট্যান্ডার্ড বিচ্যুতি নিয়ে সেটিকে পরিচালনা করতে)।
জিয়ানলুকা

1
আপনি যদি কোনও সাধারণ সময়ের সিরিজ মডেলটি প্রয়োগ করতে রাজি না হন (তবে এটি বিলম্বের ক্ষেত্রে বিবেচনা করে থাকে) তবে আমি হতাশাবোধবাদী যে আপনি একটি সাধারণ বাস্তবায়ন খুঁজে পাবেন যা একই সাথে সমস্ত ধরণের সময় সিরিজের জন্য কাজ করার পক্ষে যথেষ্ট সহজ।

অন্য মন্তব্য: আমি জানি একটি ভাল উত্তর হতে পারে "সুতরাং আপনি সিগন্যালের সময়কাল সম্পর্কে অনুমান করতে পারেন, এবং এটি অনুসারে অ্যালগরিদমটি স্থির করতে পারেন" তবে আমি এই অন্যান্য সমস্যার সঠিক কোনও সমাধান খুঁজে পাইনি (আমি একটি খেলেছি DFT এবং সময় বিশ্লেষণ autocorrelation ফাংশন ব্যবহার করে, কিন্তু আমার সময় সিরিজ ব্যবহার ভুতুড়ে বিশ্লেষণের সঙ্গে বিট করার সময় অনেক আওয়াজ থাকে এবং ধরনের পদ্ধতি কিছু সময় পাগল ফলাফল mosts) দিতে
Gianluca

আপনার শেষ মন্তব্যে একটি মন্তব্য: সে কারণেই আমি আরও জেনেরিক পদ্ধতির সন্ধান করছি, তবে আমার এক ধরণের "ব্ল্যাক বক্স" দরকার কারণ আমি বিশ্লেষিত সংকেত সম্পর্কে কোনও ধারণা নিতে পারি না, এবং তাই আমি এটি তৈরি করতে পারি না "শেখার অ্যালগরিদমের জন্য সেরা পরামিতি সেট" "
জিয়ানলুকা

@ জিগন্যালুকা যেমন আপনি অন্তর্নিহিত আরিমা কাঠামোটি অবহিত করেছেন তেমন বিসংবাদটি মাস্ক করতে পারেন। ভুল ফর্মুলেশন পিএফ সম্ভাব্য কারণ ভেরিয়েবল যেমন দিনের ঘন্টা, সপ্তাহের দিন, ছুটির প্রভাব ইত্যাদির কারণেও অনিয়মকে মাস্ক করা যায়। উত্তরটি মোটামুটি পরিষ্কার যে কার্যকরভাবে অসঙ্গতিগুলি সনাক্ত করতে আপনার একটি ভাল eqaution থাকা দরকার। বেকনকে উদ্ধৃত করার জন্য, "যেহেতু প্রকৃতির উপায়গুলি জানে সে আরও সহজেই তার বিচ্যুতিগুলি লক্ষ্য করতে পারে এবং অন্যদিকে, যে তার বিচ্যুতিগুলি জানে সে আরও সঠিকভাবে তার উপায়গুলি বর্ণনা করবে।"
আইরিশস্ট্যাট

3

রব হ্যান্ডম্যান দ্বারা বর্ণিত পদ্ধতির বিকল্প হোল্ট-উইন্টারস পূর্বাভাস ব্যবহার করা হবে । হল্ট-উইন্টার থেকে প্রাপ্ত আত্মবিশ্বাস ব্যান্ডগুলি আউটলিয়ারদের সনাক্ত করতে ব্যবহার করা যেতে পারে। এখানে একটি কাগজ রয়েছে যা "নেটওয়ার্ক মনিটরিংয়ের জন্য টাইম সিরিজে অ্যাবারেন্ট বিহেভিয়ার ডিটেকশন" এর জন্য হল্ট-উইন্টারগুলি কীভাবে ব্যবহার করবেন তা বর্ণনা করে। আরআরডিটুলের জন্য একটি বাস্তবায়ন এখানে পাওয়া যাবে


2

বর্ণালী বিশ্লেষণ স্থির সময় সিরিজের পর্যায়ক্রম সনাক্ত করে dete বর্ণালী ঘনত্বের প্রাক্কলনের উপর ভিত্তি করে ফ্রিকোয়েন্সি ডোমেন পদ্ধতির একটি পদ্ধতি যা আমি আপনার প্রথম পদক্ষেপ হিসাবে প্রস্তাব করব।

নির্দিষ্ট সময়ের জন্য যদি অনিয়ম মানে সেই সময়ের চেয়ে সাধারণের চেয়ে অনেক বেশি উচ্চতর শিখর তখন এরকম অনিয়মের সাথে সিরিজটি স্থির হবে না এবং বর্ণাল অ্যানালাইসিস উপযুক্ত হবে না। তবে ধরে নিচ্ছেন যে আপনি যে সময়সীমার অনিয়ম রয়েছেন তা নির্ধারণ করে দিতে হবে যে আপনি সাধারণ পিকের উচ্চতা কতটা নির্ধারণ করতে সক্ষম হন এবং তারপরে অনিয়মিত কেসগুলি নির্ধারণের জন্য সেই গড়ের উপরে কিছু স্তরে একটি চৌম্বক স্থাপন করতে পারেন।


2
আপনি কী ব্যাখ্যা করতে পারবেন যে কীভাবে এই সমাধান "স্থানীয় অনিয়ম" সনাক্ত করতে পারে? একটি কাজের উদাহরণ উপস্থাপন অত্যন্ত সহায়ক হবে। (সত্যি বলতে, আমি তোমাকে কারণ একটি ব্যায়াম আমি তোমাদের আবিষ্কার করবে আপনার পরামর্শের আউটলিয়ার সনাক্তকরণের জন্য কার্যকরী নয় বিশ্বাস নির্বাহ এই কাজটি পরামর্শ কিন্তু আমি ভুল হতে পারে ...।)
whuber

1
@ শুভ বর্ণালী বিশ্লেষণ কেবল সমস্ত শৃঙ্গগুলি কোথায় তা সনাক্ত করবে। পরবর্তী পদক্ষেপটি বর্ণালী বিশ্লেষণ এবং ডেটা থেকে অনুমান প্রশস্ততাগুলি থেকে নির্ধারিত ফ্রিকোয়েন্সিগুলির সাথে সাইন এবং কোসাইন শর্তাদি ব্যবহার করে একটি ইয়েম সিরিজ মডেল ফিট করা হবে। যদি অনিয়মের অর্থ খুব উচ্চ প্রশস্ততাযুক্ত পিকগুলি থাকে তবে আমি মনে করি প্রশস্ততার উপরে একটি প্রান্তিকতা উপযুক্ত হবে। যদি স্থানীয় অনিয়মের অর্থ দাঁড়ায় যে কোনও সময়ের জন্য প্রশস্ততা কখনও কখনও অন্যের তুলনায় উল্লেখযোগ্য পরিমাণে বড় হয় তবে সিরিজটি স্থির নয় এবং বর্ণালি বিশ্লেষণটি অপ্রকাশিত হবে না।
মাইকেল চেরনিক

1
আমি স্থিরতার অভাব সম্পর্কে এই সিদ্ধান্তে অনুসরণ করি না। উদাহরণস্বরূপ, নিয়মিত সাইনোসয়েডাল ওয়েভফর্ম এবং চিহ্নিত পোইসন পয়েন্ট প্রক্রিয়াটির যোগফল স্থির থাকবে তবে এটি আপনার পর্যায়ক্রমিক সময়ের কোনওটি প্রদর্শন করবে না। তবুও আপনি পিরিয়ডোগ্রামে কিছু শক্তিশালী শৃঙ্গগুলি খুঁজে পেতে পারেন তবে তারা আপনাকে পোইসন প্রক্রিয়া উপাদান দ্বারা প্রবর্তিত অনিয়মিত ডেটা পিকগুলির সাথে প্রাসঙ্গিক কিছু বলবে না।
হোবার

1
একটি স্থির সময় সিরিজের একটি ধ্রুবক গড় আছে has যদি পর্যায়ক্রমিক উপাদানগুলির শিখর সময়ের সাথে সাথে পরিবর্তন হতে পারে তবে এটি সময়ের সাথে সাথে পরিবর্তনের গড়কে ঘটাতে পারে এবং সেহেতু বীর্যগুলি অযৌক্তিক হবে।
মাইকেল চেরনিক

2

যেহেতু এটি একটি টাইম সিরিজের ডেটা, তাই একটি সাধারণ এক্সফোনেনশিয়াল ফিল্টার http://en.wikedia.org/wiki/Exponential_smooming ডেটাটিকে কমিয়ে দেবে। আপনার পুরানো ডেটা পয়েন্ট জমা করার দরকার নেই বলে এটি একটি খুব ভাল ফিল্টার। প্রতিটি নতুন স্মুথড ডেটা মানটিকে তার আনমুটেড মানের সাথে তুলনা করুন । বিচ্যুতিটি যখন কোনও নির্দিষ্ট পূর্বনির্ধারিত প্রান্তিক ছাড়িয়ে যায় (আপনি কীভাবে আপনার ডেটাতে একজন আউটলেটর বিশ্বাস করেন তার উপর নির্ভর করে), তবে আপনার আউটলেট সহজেই সনাক্ত করা যায়।

সিআই-তে রিয়েল-টাইম 16 বিটের নমুনার জন্য নিম্নলিখিতগুলি করবে (আমি বিশ্বাস করি এটি এখানে কোথাও পাওয়া যায় <ব্যাখ্যা - https://dsp.stackexchange.com/questions/378/ কি-is-test-best-first- order -আইর-আনুমানিক-থেকে-মুভিং-গড়-ফিল্টার >)

#define BITS2 2     //< This is roughly = log2( 1 / alpha ), depending on how smooth you want your data to be

short Simple_Exp_Filter(int new_sample) 
{static int filtered_sample = 0;
long local_sample = sample << 16; /*We assume it is a 16 bit sample */
filtered_sample += (local_sample - filtered_sample) >> BITS2;   
return (short) ((filtered_sample+0x8000) >> 16); //< Round by adding .5 and truncating.   
}


int main()
{
newly_arrived = function_receive_new_sample();
filtered_sample = Simple_Exp_Filter(newly_arrived);
if (abs(newly_arrived - filtered_sample)/newly_arrived > THRESHOLD)
    {
    //AN OUTLIER HAS BEEN FOUND
    }
 return 0;   
}

1

আপনি সর্বশেষ এন পরিমাপের স্ট্যান্ডার্ড বিচ্যুতি ব্যবহার করতে পারেন (আপনাকে একটি উপযুক্ত এন বাছাই করতে হবে)। একটি চলমান গড় থেকে কোনও পরিমাপ কত স্ট্যান্ডার্ড বিচ্যুতি হয় তা একটি ভাল অনিয়ম স্কোর।


আপনার প্রতিক্রিয়াটির জন্য আপনাকে ধন্যবাদ, তবে যদি সংকেতটি একটি উচ্চ মৌসুমীতা দেখায় (যেমন প্রচুর নেটওয়ার্ক পরিমাপ একই সাথে একটি দৈনিক এবং সাপ্তাহিক প্যাটার্ন দ্বারা চিহ্নিত করা হয়, উদাহরণস্বরূপ রাত্র বনাম দিন বা উইকএন্ড বনাম কার্যদিবস)? স্ট্যান্ডার্ড বিচ্যুতি ভিত্তিক একটি পদ্ধতির ক্ষেত্রে সে ক্ষেত্রে কার্যকর হবে না।
gianluca

উদাহরণস্বরূপ, যদি আমি প্রতি 10 মিনিটে একটি নতুন নমুনা পাই এবং আমি কোনও সংস্থার নেটওয়ার্ক ব্যান্ডউইদথ ব্যবহারের আউটলেট সনাক্তকরণ করছি, মূলত সন্ধ্যা at টায় এই পদক্ষেপটি নিচে নেমে আসবে (এটি একটি প্রত্যাশিত মোটামুটি স্বাভাবিক প্যাটার্ন) এবং একটি স্লাইডিং উইন্ডোতে গণনা করা একটি আদর্শ বিচ্যুতি ব্যর্থ হবে (কারণ এটি নিশ্চিতভাবে একটি সতর্কতা ট্রিগার করবে)। একই সময়ে, যদি পরিমাপটি বিকেল চারটায় (সাধারণ বেসলাইন থেকে বিচ্যুত হয়) নেমে আসে তবে এটি একটি আসল বাহিনী।
gianluca

1

আমি যা করি তা হ'ল ঘন্টা এবং দিন অনুসারে পরিমাপকে গোষ্ঠী করা এবং এর মানক বিচ্যুতির তুলনা করা। এখনও ছুটির দিন এবং গ্রীষ্ম / শীতের মৌসুমের মতো জিনিসগুলির জন্য সঠিক হয় না তবে বেশিরভাগ সময় এটি সঠিক হয়।

নেতিবাচকতাটি হ'ল পর্যাপ্ত পরিমাণে থাকার জন্য আপনাকে সত্যই এক বছর বা আরও বেশি পরিমাণে ডেটা সংগ্রহ করতে হবে যাতে স্টেডেদেভ বুঝতে শুরু করে।


আপনাকে ধন্যবাদ, আমি ঠিক এটাই এড়াতে চাইছিলাম (বেসলাইন হিসাবে প্রচুর নমুনা থাকা), কারণ আমি সত্যিই প্রতিক্রিয়াশীল পদ্ধতির (যেমন অনলাইন সনাক্তকরণ, সম্ভবত "নোংরা", বেসলাইনের 1-2 সপ্তাহের পরে) চাই
জিয়ানলুকা

0

আমি নীচের স্কিমটি পরামর্শ দিচ্ছি, যা এক বা একদিনে প্রয়োগযোগ্য হবে:

প্রশিক্ষণ

  • স্মৃতিতে যতটুকু নমুনা রাখতে পারেন তত সংগ্রহ করুন
  • প্রতিটি বৈশিষ্ট্যের জন্য স্ট্যান্ডার্ড বিচ্যুতি ব্যবহার করে সুস্পষ্ট আউটলিয়ারগুলি সরান
  • পারস্পরিক সম্পর্ক ম্যাট্রিক্স এবং প্রতিটি বৈশিষ্ট্যের গড় গণনা করুন এবং সঞ্চয় করুন
  • আপনার সমস্ত নমুনার মহালানোবিস দূরত্ব গণনা করুন এবং সঞ্চয় করুন

"বহিরাগততা" গণনা করা হচ্ছে:

যার একক নমুনার জন্য আপনি এর "বহিরাগততা" জানতে চান:

  • প্রশিক্ষণ থেকে কোভেরিয়েন্স ম্যাট্রিক্স এবং মহালানোবিস দূরত্ব s এর উপায়গুলি পুনরুদ্ধার করুন
  • আপনার নমুনার জন্য মহালানোবিস দূরত্ব "ডি" গণনা করুন
  • "ডি" পড়েছে এমন পারসেন্টাইল ফিরিয়ে আনুন (প্রশিক্ষণ থেকে মহালানোবিস দূরত্ব ব্যবহার করে)

এটি আপনার আউটরিয়ার স্কোর হবে: 100% একটি চূড়ান্ত আউটলেট।


গীত। মহালানোবিসের দূরত্ব গণনা করতে, কোভেরিয়েন্স ম্যাট্রিক্স নয়, পারস্পরিক সম্পর্ক ম্যাট্রিক্স ব্যবহার করুন। যদি নমুনা পরিমাপ ইউনিট এবং সংখ্যায় পৃথক হয় তবে এটি আরও দৃ is়।


0

যেহেতু একজনকে দ্রুত আউটলিয়ারদের গণনা করতে হবে, তার জন্য কেউ রব হ্যান্ডম্যান এবং মাহিতো সুগিয়ামার ধারণাটি ব্যবহার করতে পারেন ( https://github.com/BorgwardtLab/sampling-outlier-detection , গ্রন্থাগার (স্পাউটিয়ার), ফাংশন কিউএসপি) গণনা করতে নিম্নলিখিত হিসাবে outliers:

library(spoutlier)
rapidtsoutliers <- function(x,plot=FALSE,seed=123)
{
    set.seed(seed)
    x <- as.numeric(x)
    tt <- 1:length(x)
    qspscore <- qsp(x)
    limit <- quantile(qspscore,prob=c(0.95))
    score <- pmax((qspscore - limit),0)
    if(plot)
    {
        plot(x,type="l")
        x2 <- ts(rep(NA,length(x)))
        x2[score>0] <- x[score>0]
        tsp(x2) <- tsp(x)
        points(x2,pch=19,col="red")
        return(invisible(score))
    }
    else
        return(score)
}

0

অসঙ্গতি সনাক্তকরণের জন্য এমন সমীকরণ তৈরি করা দরকার যা প্রত্যাশা বর্ণনা করে। হস্তক্ষেপ সনাক্তকরণ একটি অ-কার্যকারিতা এবং কার্যকারিতা উভয় ক্ষেত্রেই উপলব্ধ। যদি কারও কাছে দামের মতো ভবিষ্যদ্বাণীকারী সিরিজ থাকে তবে জিনিসগুলি কিছুটা জটিল হয়ে উঠতে পারে। এখানে অন্যান্য প্রতিক্রিয়াগুলি দামের মতো ব্যবহারকারী নির্দিষ্ট প্রেডিক্টর সিরিজের জন্য দায়বদ্ধ কারণ হিসাবে বিবেচিত হবে না এবং এটি ত্রুটিযুক্ত হতে পারে। পরিমাণ বিক্রি ভাল দাম উপর সম্ভবত নির্ভর করে, সম্ভবত আগের দাম এবং সম্ভবত অতীতে বিক্রি পরিমাণ। অসঙ্গতি সনাক্তকরণের জন্য ভিত্তি (ডাল, মৌসুমি ডাল, স্তর শিফট এবং স্থানীয় সময়ের প্রবণতা) https://pdfs.semanticscholar.org/09c4/ba8dd3cc88289caf18d71e8985bdd11ad21c.pdf এ পাওয়া যায়


লিঙ্কটি কাজ করছে না, আপনি দয়া করে এটি ঠিক করতে পারেন। ধন্যবাদ
পঙ্কজ জোশী

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.