সর্বাধিক ছড়িয়ে থাকা অবস্থানগুলি কীভাবে সন্ধান করবেন?


9

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

এটি করার জন্য কোনও সংজ্ঞায়িত পদ্ধতি আছে? কোনও আর-প্যাকেজে থাকতে পারে?

প্রত্যেককে এটি শেখার দুর্দান্ত জায়গাটি করার জন্য ধন্যবাদ!

/ ক্রিস


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

এইটা একটা ভালো প্রশ্ন. আমি ভাবছি যদিও শিরোনামটি "স্প্রেড আউট" থেকে "বিচ্ছিন্ন" বা "দূরবর্তী" এ পরিবর্তিত হতে পারে। অথবা এর জন্য আরও একটি আনুষ্ঠানিক শব্দ থাকতে পারে?
কर्क কুইকেনডাল

উত্তর:


10

সহজ প্রশ্ন, কঠিন সমাধান।

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

একটি উপায় হ'ল প্রথমে স্টোরের অবস্থানগুলি ক্লাস্টার করা । প্রতিটি ক্লাস্টারের মধ্যে ক্লাস্টার সেন্টারের নিকটবর্তী দোকানটি নির্বাচন করুন।

সত্যিকারের দ্রুত ক্লাস্টারিং পদ্ধতি হ'ল কে-মানে । এটি একটি Rসমাধান যা এটি ব্যবহার করে।

scatter <- function(points, nClusters) {
    #
    # Find clusters.  (Different methods will yield different results.)
    #
    clusters <- kmeans(points, nClusters)
    #
    # Select the point nearest the center of each cluster.
    #
    groups <- clusters$cluster
    centers <- clusters$centers
    eps <- sqrt(min(clusters$withinss)) / 1000
    distance <- function(x,y) sqrt(sum((x-y)^2))
    f <- function(k) distance(centers[groups[k],], points[k,])
    n <- dim(points)[1]
    radii <- apply(matrix(1:n), 1, f) + runif(n, max=eps)
    # (Distances are changed randomly to select a unique point in each cluster.)
    minima <- tapply(radii, groups, min)
    points[radii == minima[groups],]
}

আর্গুমেন্টগুলি হ'ল scatterস্টোরের অবস্থানগুলির তালিকা ( এন হিসাবে বাই 2 ম্যাট্রিক্স) এবং নির্বাচনের জন্য স্টোরের সংখ্যা (যেমন, 200)। এটি অবস্থানগুলির একটি অ্যারে প্রদান করে।

এর প্রয়োগের উদাহরণ হিসাবে, চলুন n = 1000 এলোমেলোভাবে অবস্থিত স্টোরগুলি তৈরি করি এবং সমাধানটি দেখতে কেমন তা দেখুন:

# Create random points for testing.
#
set.seed(17)
n <- 1000
nClusters <- 200
points <- matrix(rnorm(2*n, sd=10), nrow=n, ncol=2)
#
# Do the work.
#
system.time(centers <- scatter(points, nClusters))
#
# Map the stores (open circles) and selected ones (closed circles).
#
plot(centers, cex=1.5, pch=19, col="Gray", xlab="Easting (Km)", ylab="Northing")
points(points, col=hsv((1:nClusters)/(nClusters+1), v=0.8, s=0.8))

এই গণনাটি 0.03 সেকেন্ড সময় নিয়েছে:

ব্যক্তিত্ব

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

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

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


বাহ, ভাল এবং চিত্তাকর্ষক। এটি একটি সমাধান যা আমি এখন ব্যবহার করতে পারি, আমি অনেক কিছু শিখেছি এবং কোথায় জানি অধ্যয়ন চালিয়ে যেতে হবে তা আমি জানি। আপনাকে অনেক ধন্যবাদ! এবং একটি দুর্দান্ত সপ্তাহান্তে আছে!
ক্রিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.