স্কেলেবল ব্লুম ফিল্টারগুলি কীভাবে কাজ করে?


15

আমি স্কেবলযোগ্য ব্লুম ফিল্টারগুলি পড়ছিলাম এবং বুঝতে পারি না যে প্রতিবার কীভাবে কোনও घटकের ব্লুম ফিল্টার পূরণ হয়, তার সাথে আরও বড় আকারের একটি নতুন ব্লুম ফিল্টার যুক্ত হয়।

প্রাথমিকভাবে তৈরি ফিল্টারগুলিতে সেট বিটগুলিতে যে উপাদানগুলি অবদান রেখেছিল তাদের উপস্থিতি সন্ধান করা যাবে না। সম্ভবত আমি এই বুঝতে আমার ভুল?

আমি বেসিক ব্লুম ফিল্টার বুঝতে পারি। যাইহোক, আমি গতিশীল ব্লুম ফিল্টারগুলির চারপাশে আমার মাথা গুটিয়ে রাখতে পারি না।

উত্তর:


7

আমি এটি কীভাবে কসাই দিতে পারি তা দেখার জন্য এটি একটি শট দেওয়ার চেষ্টা করি। :-)

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

সম্ভাবনাটি কী তা নিয়ন্ত্রণ এবং অপ্টিমাইজ করার চেষ্টা করার আগে প্রদত্ত ব্লুম ফিল্টার আকারের সম্ভাবনাটি কী তা নির্ধারণ করতে পারি।

প্রথমে আমরা বিটফিল্ডটি বিভক্ত করি আমাদের কাছে কতগুলি হ্যাশ ফাংশন রয়েছে (বিটগুলির মোট সংখ্যা / হ্যাশ ফাংশনগুলির সংখ্যা = স্লাইস) বি বি কে টুকরোগুলি পেতে যা প্রতিটি হ্যাশ ফাংশনকে উপস্থাপন করে তাই প্রতিটি উপাদান সর্বদা কে বি বিট দ্বারা বর্ণিত হয়।

আপনি যদি স্লাইসের সংখ্যা বা বিলে বিট সংখ্যা প্রতি স্লাইস বৃদ্ধি করেন তবে মিথ্যা ধনাত্মক হওয়ার সম্ভাবনা হ্রাস পাবে।

এটি আরও অনুসরণ করে যে উপাদানগুলি যুক্ত হওয়ার সাথে সাথে আরও বিট 1 সেট করা হয়, তাই মিথ্যা ধনাত্মকতা বৃদ্ধি পায়। আমরা এটিকে প্রতিটি ফালি "পূরণ অনুপাত" হিসাবে উল্লেখ করি।

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

সুতরাং, ব্লুম ফিল্টারটিতে মিথ্যা ধনাত্মক হওয়ার সম্ভাবনা কীভাবে বেছে নেওয়া যায় তা আমরা কীভাবে আবিষ্কার করব? আমরা স্লাইসের সংখ্যাটি সংশোধন করতে পারি (যা পূরণের অনুপাতকে প্রভাবিত করবে)।

আমাদের কতগুলি স্লাইস থাকা উচিত তা নির্ধারণের জন্য, আমরা একটি স্লাইসের অনুকূল ফিল ভেরির অনুপাতটি দিয়ে শুরু করি। যেহেতু ভরাট অনুপাতটি একটি স্লাইসে বিটের সংখ্যা দ্বারা নির্ধারিত হয় যা 1 বিটের সংখ্যার তুলনায় 1 যা বিট 0, সুতরাং আমরা নির্ধারণ করতে পারি যে প্রতিটি বিট (100% - (এক টুকরোতে 1 / বিট) এর সম্ভাব্যতার সাথে আনসেট থাকবে না )। যেহেতু আমরা একাধিক আইটেম sertedোকাতে যাচ্ছি, আমাদের খ্যাতি সমস্যা সহ আরও একটি অনুমান রয়েছে এবং আমরা প্রত্যাশিত পূরণের অনুপাতের মধ্যে জিনিসগুলি প্রসারিত করি যা (100% - ((100% - (এক টুকরো 1 / বিট))) ^ "উপাদানগুলি "োকানো"))। ঠিক আছে, দেখা যাচ্ছে যে এটি অন্য সমীকরণের সাথে খুব মিল। কাগজে, তারা পূরণের অনুপাতটিকে অন্য সমীকরণের সাথে সম্পর্কিত করে তাই এটি টেলর সিরিজের (1-e ^ (- n / m)) সাথে দুর্দান্তভাবে ফিট করে। এর সাথে কিছুটা ফিউজিংয়ের পরে, এটি দেখা যাচ্ছে যে সর্বোত্তম পূরণের অনুপাত সর্বদা প্রায় 50% থাকে,

সুতরাং, যেহেতু কোনও ফিল্টারের সম্ভাবনা হ'ল ভরাট অনুপাতটি স্লাইসের সংখ্যায় উত্থিত হয়, তাই আমরা 50% পূরণ করতে পারি এবং পি = (50%) ^ কে বা কে = লগ 2 (1 / পি) পেতে পারি। এরপরে আমরা কোনও স্কেলযোগ্য ব্লুম ফিল্টারের ফিল্টারগুলির তালিকাতে প্রদত্ত ফিল্টারের জন্য আমাদের তৈরি হওয়া ফালিগুলির সংখ্যা গণনা করতে এই ফাংশনটি ব্যবহার করতে পারি।

    def slices_count(false_positive_probability):
        return math.ceil(math.log(1 / false_positive_probability, 2))

সম্পাদনা: এটি লেখার পরে, আমি টিউওসিপি ভল্ট 1, পিপি 442-445-তে বর্ধিত সিস্টেম ভিত্তিক গতিশীল মেমরির বরাদ্দ পড়তে পড়তে "পঞ্চাশ শতাংশ নিয়ম" এর একটি উল্লেখ পেয়েছিলাম (1) -e ^ (- N / মি))। নুথ একটি কাগজকে "পঞ্চাশ শতাংশ নিয়ম পুনর্বিবেচনা করেছেন" ধারণাটির কিছুটা পটভূমিতে উল্লেখ করেছেন ( পিডিএফ এখানে উপলব্ধ )।


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

1
আরে @ জেফবার্জেস, আপনি দুটি ধারণাটি একইরকম যে কমপক্ষে উত্সাহী তা খুঁজে পাচ্ছেন না?
জোন বুনহর্স্ট

4

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

আপনার কাছে এখনও সবচেয়ে খারাপ ক্ষেত্রে মিথ্যা ইতিবাচক গ্যারান্টি রয়েছে তা নিশ্চিত করার জন্য, জ্যামিতিকভাবে হ্রাস হওয়া মিথ্যা ইতিবাচক হারের সাথে নতুন ফিল্টার যুক্ত করা হয়। উদাহরণস্বরূপ, প্রথম ফিল্টার মিথ্যা ইতিবাচক হার p, দ্বিতীয় rp, তৃতীয় r^2p, ইত্যাদি মাপযোগ্য পুষ্প ফিল্টার উপর একটি মিথ্যা ইতিবাচক সম্ভাবনা তারপর ইউনিয়ন আবদ্ধ দ্বারা বেষ্টিত হয়: sum_{k>=0} r^k p = p/(1-r)


3
এই সূত্রগুলিতে 'আর' কী উপস্থাপন করে?
zslayton

1

আমি স্কেবলযোগ্য ব্লুম ফিল্টারগুলি পড়ছিলাম এবং বুঝতে পারছিলাম না প্রতিবার কীভাবে কোনও घटकের ব্লুম ফিল্টার পূরণ হয়, তার সাথে আরও বড় আকারের একটি নতুন ব্লুম ফিল্টার যুক্ত হয়।

প্রাথমিকভাবে তৈরি ফিল্টারগুলিতে সেট বিটগুলিতে যে উপাদানগুলি অবদান রেখেছিল তাদের উপস্থিতি সন্ধান করা যাবে না। সম্ভবত আমি এই বুঝতে আমার ভুল?

হাই,
প্রথম স্তরের ফিল্টারটির বিট ক্ষেত্রটি সম্পৃক্ত না হওয়া পর্যন্ত প্রাথমিক ধারণাটি প্রথম ফিল্টারটিতে যুক্ত করা হয়। স্যাচুরেটড হওয়ার অর্থ প্রতিটি বিট ব্যবহৃত হয় না , তবে এর অর্থ হ'ল ফিল্টারটিতে এমন অনেকগুলি এন্ট্রি রয়েছে যা অতিরিক্ত এন্ট্রিগুলি অনেকগুলি মিথ্যা ধনাত্মক তৈরি করে।

স্যাচুরেশনের দিক থেকে, কোনও নতুন আইটেম স্যাচুরেটর ফিল্টারে যুক্ত করা হবে না, তবে একটি তাজা এবং বৃহত্তর সাব-ফিল্টার (দ্বিতীয় স্তরের ফিল্টার) এ যুক্ত হবে।

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

আপনি আমার ব্লগ পোস্টটি পড়তে চাইতে পারেন যা জাভাতে একটি স্কেলযোগ্য ব্লুম ফিল্টার বাস্তবায়ন এবং এটি কীভাবে বিশদে কাজ করে সে সম্পর্কে একটি বিবরণ রয়েছে।

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