আমি একটি ডেটাসেটে শিখরগুলি কীভাবে খুঁজে পাব?


47

যদি আমার কাছে এমন ডেটা সেট থাকে যা নীচের মতো গ্রাফ তৈরি করে তবে আমি কীভাবে আলগোরিদিমভাবে দেখানো শিখরের এক্স-মানগুলি নির্ধারণ করব (এই ক্ষেত্রে তিনটি):

এখানে চিত্র বর্ণনা লিখুন


13
আমি ছয়টি স্থানীয় ম্যাক্সিমা দেখছি। আপনি কোন তিনটি উল্লেখ করছেন? :-)। (অবশ্যই এটা সুস্পষ্ট - আমার মন্তব্য খোঁচা একটি "শিখর" আরো সঠিকভাবে সংজ্ঞায়িত করতে উত্সাহিত করা হয়, কারণ এটা একটা ভাল অ্যালগরিদম তৈরি করতে কী।)
whuber

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

2
আমি মোড ট্যাগ যুক্ত করেছি, এই কয়েকটি প্রশ্নের কয়েকটি পরীক্ষা করে দেখুন, তাদের আগ্রহের উত্তর থাকবে।
অ্যান্ডি

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

হতে পারে এটি কারণ আমার ডেটা সত্যিই গোলমাল, তবে নীচের উত্তর দিয়ে আমার কোনও সাফল্য হয়নি। যদিও, আমি এই উত্তর দিয়ে সাফল্য পেয়েছি: stackoverflow.com/a/16350373/84873
ড্যানিয়েল

উত্তর:


35

একটি সাধারণ পদ্ধতির ডেটা মসৃণ করা এবং তারপরে মসৃণতার সাথে স্থানীয় সর্বাধিক ফিল্টারের তুলনা করে শিখর সন্ধান করা । ইন R:

argmax <- function(x, y, w=1, ...) {
  require(zoo)
  n <- length(y)
  y.smooth <- loess(y ~ x, ...)$fitted
  y.max <- rollapply(zoo(y.smooth), 2*w+1, max, align="center")
  delta <- y.max - y.smooth[-c(1:w, n+1-1:w)]
  i.max <- which(delta <= 0) + w
  list(x=x[i.max], i=i.max, y.hat=y.smooth)
}

এর রিটার্ন মানটিতে স্থানীয় ম্যাক্সিমার ( x) - যা প্রশ্নের উত্তর দেয় - এবং x- এবং y- অ্যারেগুলিতে সূচকগুলি যেখানে এই স্থানীয় ম্যাক্সিমাটি ঘটে i) অন্তর্ভুক্ত করে ( )।

পরিস্থিতিতে দুটি টি পরামিতি সুর করতে হবে: w স্থানীয় সর্বাধিক গণনা করতে ব্যবহৃত উইন্ডোর অর্ধ প্রস্থ। (এর মান ডেটার অ্যারের দৈর্ঘ্যের অর্ধেকের চেয়ে কম হওয়া উচিত)) ছোট মানগুলি ছোট ছোট স্থানীয় চাপগুলিকে বেছে নেবে যেখানে বৃহত্তর মানগুলি সেগুলির উপরে চলে যাবে। আরেকটি - এই কোডটিতে স্পষ্ট নয় - spanএটি loessমসৃণতার যুক্তি । (এটি সাধারণত শূন্য এবং একের মধ্যে থাকে; এটি এক্স মানের মানের পরিসীমা হিসাবে একটি উইন্ডো প্রস্থকে প্রতিবিম্বিত করে।) বৃহত্তর মানগুলি ডেটাটিকে আরও আক্রমণাত্মকভাবে মসৃণ করবে, স্থানীয় ঝাঁকগুলি পুরোপুরি অদৃশ্য হয়ে যাবে।

এই টিউনিংটি কার্যকরভাবে দেখতে, আসুন ফলাফলগুলি প্লট করার জন্য একটি সামান্য পরীক্ষা ফাংশন তৈরি করুন:

test <- function(w, span) {
  peaks <- argmax(x, y, w=w, span=span)

  plot(x, y, cex=0.75, col="Gray", main=paste("w = ", w, ", span = ", span, sep=""))
  lines(x, peaks$y.hat,  lwd=2) #$
  y.min <- min(y)
  sapply(peaks$i, function(i) lines(c(x[i],x[i]), c(y.min, peaks$y.hat[i]),
         col="Red", lty=2))
  points(x[peaks$i], peaks$y.hat[peaks$i], col="Red", pch=19, cex=1.25)
}

এখানে কিছু কৃত্রিম, কিছুটা গোলমাল করা ডেটা প্রয়োগ করা হয়েছে exper

x <- 1:1000 / 100 - 5
y <- exp(abs(x)/20) * sin(2 * x + (x/5)^2) + cos(10*x) / 5 + rnorm(length(x), sd=0.05)
par(mfrow=c(3,1))
test(2, 0.05)
test(30, 0.05)
test(2, 0.2)

প্লট

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

লক্ষ্য করুন এন্ড পয়েন্ট স্থানীয় ম্যাক্সিমা হয় না সনাক্ত হয়েছে। এগুলি পৃথকভাবে পরিদর্শন করা যেতে পারে। (এটি সমর্থন করার জন্য, argmaxস্মুথড ই-মানগুলি প্রদান করে))


সাধারণ উদ্দেশ্যে কাজের জন্য আরও আনুষ্ঠানিক মডেলিংয়ের চেয়ে এই পদ্ধতির বিভিন্ন সুবিধা রয়েছে:

  • এটি ডেটার কোনও প্রাক-ধারণিত মডেল গ্রহণ করে না।

  • এটি ডেটা বৈশিষ্ট্যের সাথে মানিয়ে নিতে পারে।

  • এটিতে আগ্রহী যে ধরণের শিখর রয়েছে তা সনাক্ত করতে এটি রূপান্তর করা যেতে পারে।


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

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

3
হে(এন)

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

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

1

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

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


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

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

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

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

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

1

সিগন্যাল প্রসেসিংয়ে একটি ক্লাসিক শিখর সনাক্তকরণ পদ্ধতি নিম্নরূপ:

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

আরেকটি পদ্ধতি যা কাজ করে তা হ'ল ভারী স্মুথড (লো-পাস বা মিডিয়ান ফিল্টারড) এর বিরুদ্ধে তীব্রভাবে হাইপাস ফিল্টার করা সংকেতটির তুলনা করা এবং পদক্ষেপ 3 প্রয়োগ করা।

আশাকরি এটা সাহায্য করবে.

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