Isolation Forest, cut by cut


Data — 30 readings, a handful of them odd
Point to isolate — or click any point
One tree
The forest

দ্রষ্টব্য: "New tree" চাপা মানে অ্যালগরিদমটি পুরোপুরি চলে শেষ হওয়া। "Cut once" হলো তারই পুনঃপ্রদর্শন।

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

ওই সংখ্যাটিই path length। একা দূরে পড়ে থাকা কোনো পয়েন্ট দুই-তিনটি কাটেই আলাদা হয়ে যায়, কারণ প্রায় যেকোনো এলোমেলো রেখাই তাকে আলাদা করে দেয়। ভিড়ের মাঝখানে চাপা পড়া কোনো পয়েন্ট কাটের পর কাট টিকে যায়, কারণ এলোমেলো রেখা প্রায় সবসময়ই তাকে সঙ্গীদের সঙ্গেই রেখে দেয়। যে পয়েন্টগুলোকে আলাদা করা সহজ, সেগুলোই anomaly — পুরো অ্যালগরিদম এইটুকুই, আর এর কোথাও কোনো দূরত্ব নেই, কোনো mean নেই, ঘনত্বের কোনো হিসাবও নেই।

পরিভাষাএখানে এর অর্থ
Path lengthআপনার পয়েন্টটিকে একা করতে এই ট্রি-র কতগুলো কাট লেগেছে
The forest100টি ট্রি, প্রতিটির নিজস্ব এলোমেলো কাট; score ব্যবহার করে path length-এর গড়
Scores = 2−E[h]/c(n)1-এর কাছাকাছি মানে অস্বাভাবিক দ্রুত আলাদা হয়েছে, 0.5-এর কাছাকাছি মানে সাধারণ

যে তিনটি জিনিস চেষ্টা করে দেখার মতো:
1. Pick an outlier চাপুন, তারপর Run to isolation, এবং গুনুন। এবার Pick one from the middle চেপে আবার চালান। outlier সাধারণত 3টির মতো কাটেই শেষ হয়; মাঝের পয়েন্টটির লাগে প্রায় 9টি, আর কাউন্টার বাড়তে থাকার সময় আপনি দেখতে পাবেন তার ঘরটি কাটের পর কাট ভিড়েই ঠাসা থেকে যাচ্ছে।

2. একই পয়েন্ট রেখে New tree কয়েকবার চাপুন। সংখ্যাটি লাফিয়ে বেড়ায় — একই outlier-এর লাগতে পারে 2টি কাট, আবার 9টিও, কেবল এলোমেলো রেখাগুলো কোথায় পড়ল তার ভাগ্যের উপরই। একটিমাত্র ট্রি আপনাকে প্রায় কিছুই বলে না। 100টি ট্রি-র গড়ে সেই ভাগ্য কাটাকাটি হয়ে যায়: forest একটি outlier-কে দেয় প্রায় 3.7 গড় path length, আর মাঝের একটি পয়েন্টকে প্রায় 8.4। এই ব্যবধানটিই এটিকে একটি ট্রি নয়, বরং একটি forest হওয়ার পুরো কারণ।

3. এবার নিচের ট্রি-টি পড়ুন। কাটগুলো এই ট্রি থেকেই এসেছে — প্রতিটি পাতা একটি করে আলাদা হওয়া পয়েন্ট, আর বাঁ দিক ধরে নিচে নেমে গেছে depth। আপনার outlier-এর পথ উপরের দিকেই থেমে যায়, অথচ মাঝের ভিড় ভাগ হতে হতে নেমে যায় 11-এর মতো গভীরতম পাতা পর্যন্ত। score এই তুলনাটুকুই, এর বেশি কিছু নয়: বাকি সবার তুলনায় আপনার গভীরতাRandomize the data চাপুন, ট্রি-র আকৃতি পুরোপুরি বদলে যাবে, কিন্তু বিচ্ছিন্ন পয়েন্টগুলো উপরের দিকেই শেষ হতে থাকবে।

এটি কি আসল জিনিস? হ্যাঁ। এই পাতাটি যে score হিসাব করে, একই 30টি পয়েন্টে তা scikit-learn-এর IsolationForest-এর সঙ্গে মেলে 0.99 correlation-এ, কাজেই এটি নির্ভরযোগ্য।