সেটের সমস্ত পয়েন্টের জন্য নিকটতম প্রতিবেশী কেটের দূরত্ব গণনা করা হচ্ছে


9

একটি মেশিন লার্নিং অ্যাপ্লিকেশনের জন্য, আমার গ্রুপটির ইউক্লিডিয়ান দূরত্বটি গণনা করা দরকার kএকটি সেট মধ্যে নিকটতম প্রতিবেশী X প্রতিটির জন্য, প্রত্যেকটির জন্য x(XY)Rd (জন্য d 5 এবং প্রায় 100 এর মধ্যে এবং |X||Y|কয়েক মিলিয়ন পর্যন্ত কয়েক শত)। আমরা বর্তমানে নিষ্ঠুর শক্তি ব্যবহার করছিO(d|X||XY|) একটি কেডি-ট্রি চালু বা স্পষ্ট এক Xযা কখন d উচ্চ এবং |X|তুলনামূলকভাবে কম কখনও জয় হয় না। (সবকিছুই স্মৃতিতে রয়েছে))

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

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


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

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

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

কি kসাধারণত আপনার অ্যাপ্লিকেশনগুলিতে?
সুরেশ ভেঙ্কট

1
@ সুরেশভেঙ্কট আমরা সাধারণত একটি ব্যবহার করি kপ্রায় 3 এর মধ্যে, কখনও কখনও কিছুটা বড়।
ডগল

উত্তর:


10

এখানে একটি সাধারণ কৌশল যা কার্যকর হতে পারে is এলোমেলো নমুনা বিবেচনা করুন যা সম্ভাব্যতা 1 / কে দিয়ে প্রতিটি পয়েন্টকে বাছাই করে। এটি যাচাই করা সহজ যে ভাল সম্ভাবনার সাথে আপনার নিকটতম নিকটতম প্রতিবেশীর একজন নমুনায় থাকবে। নমুনায় নিকটতম-প্রতিবেশীকে গণনা করুন। এই ও (কে লগ এন) বার পুনরাবৃত্তি করুন। উচ্চ সম্ভাবনার সাথে কে এর নিকটতম পয়েন্টগুলিO(klogn)পয়েন্টগুলি গণনাগুলি আপনার প্রশ্নের নিকটস্থ নিকটতম প্রতিবেশী are সুতরাং, কে নিকটতম প্রতিবেশী সন্ধান করা সমানO(klogn) নিকটতম প্রতিবেশী প্রশ্ন।

সংক্ষেপে, নিকটতম প্রতিবেশী প্রশ্নের উত্তরগুলির জন্য আমাকে একটি দ্রুত ডেটা কাঠামো দিন, এবং আমি আপনাকে কে-নিকটতম প্রতিবেশীর একটি দ্রুত ডেটা-কাঠামো দিতে পেরে খুশি হব।


দুর্দান্ত কৌশল। বিভিন্ন কোয়েরি পয়েন্টগুলির জন্য নমুনাগুলি পুনরায় ব্যবহার করা ঠিক হবে, তাই না? সুতরাং গণনাkসেটের প্রতিটি পয়েন্টের জন্য নিকটতম-প্রতিবেশী, আমাকে কেবল ডেটা স্ট্রাকচার তৈরি করতে হবে O(klogn)বার।
ডগল

1
নমুনাগুলি পুনরায় ব্যবহার করা জটিল, কারণ তখন আপনার প্রয়োজন হয় যে কোনও স্থির নমুনা যে কোনও প্রশ্নের জন্য কাজ করে (পরিমাপটি উল্টে যায়) এবং সম্ভাবনাগুলি পরিবর্তিত হবে would সাধারণ ধারণাটি হ'ল বৃহত্তর আকারের নমুনাগুলির একটি সেট তৈরি করা (এটি # প্রশ্নের উপর নির্ভর করে) এবং সেগুলি ব্যবহার করে যদি তা কোনও সমস্যা হয়।
সুরেশ ভেঙ্কট

@ সুরেশভেঙ্কট আহ, অবশ্যই। আমি বসে বসে প্রকৃত সম্ভাব্যতাগুলি খুঁজে বের করব। ধন্যবাদ সবাইকে!
ডুগল

যদি তুমি করো O(klog(1/δ)) নমুনা, তারপরে প্রতিটি ক্যোয়ারী সম্ভাব্যতার সাথে সাফল্য লাভ করে 1δ। লক্ষ্য করুন, এই কৌশলটি প্রথম ঝলক দেখানোর চেয়ে কিছুটা ভাল is আপনার কাছে রয়েছেO(klogn) নমুনা, আকার প্রতিটি O(n/k) (উচ্চ সম্ভাবনার সাথে যদি kখুব বড় নয়)। যার অর্থ প্রতিটি নমুনার জন্য আরও ভাল ক্যোয়ারী সময়।
সারিল হ্যার-পেলেড

3

"স্থানীয়তা-সংবেদনশীল হ্যাশ" ব্যবহার করে একটি সস্তা আনুমানিক সমাধান হ'ল প্রতিটি বিন্দুটিকে কিছুটা আন্তঃবিবাহিত রূপে রূপান্তর করা:

[এক্সএক্সএক্সএক্স, ইয়ে, জেডজেড] -> এক্সজাইজজিকজ

তারপরে প্রড্রোসেসিংয়ের জন্য রেডিক্স সাজান sort

জিজ্ঞাসা করতে আপনার পয়েন্টটি বেছে নিন এবং যান k উভয় দিক পয়েন্ট একটি আকার পেতে 2kসেট; তারপর নিতেkthআপনার পয়েন্ট নিকটতম। আরো দেখুন এই কাগজ কনর আর কুমার।

আরো দেখুন এই কাগজ ক্যালাহান এবং Kosaraju দ্বারা।

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