تصور کنید در یک جمعیت هزار نفره، تنها یک نفر لباس قرمز پوشیده است؛ برای شناسایی او نیازی نیست ابتدا ویژگیهای لباس تمام افراد را مدل کنید، فقط کافی است بپرسید چه کسی با یک نگاه سریع جدا میشود. این منطق متناقض، هستهٔ مرکزی جنگل ایزولاسیون (Isolation Forest) است؛ الگوریتمی که ناهنجاریها را نه بر اساس تفاوت با یک معیار، بلکه بر اساس «سهولت در جداسازی» شناسایی میکند. این الگوریتم با استفاده از برشهای تصادفی، نقاط داده را از جمعیت جدا میکند. برخلاف اکثر مدلهای یادگیری ماشین، این ابزار هیچچیز را بهینه نمیکند و هیچ حالت «نرمالی» را مدل نمیسازد، که همین امر آن را به ابزاری قدرتمند برای مهندسان SRE و مهندسان پلتفرم تبدیل میکند.
بسیاری از ابزارهای تشخیص ناهنجاری، مانند کی-میانگین (K-Means) یا DBSCAN، ابتدا یک تعریف ریاضی از حالت نرمال میسازند و سپس هر چه با این تعریف نمیخواند را «ناهنجار» برچسب میزنند. در کی-میانگین، نقطهای ناهنجار است که از تمام مراکز داده (Centroids) فاصله دارد. در DBSCAN، ناهنجاریها نقاطی هستند که به دستهبندی «نویز» رانده شدهاند. این رویکرد منطقی و شهودی است، اما برای تعریف «مرکز» یا «تراکم» یک مجموعه داده، به محاسبات سنگینی نیاز دارد. اما Isolation Forest این بازی را عوض میکند. این الگوریتم اصلاً به دنبال مدلسازی حالت نرمال نیست و مستقیماً سراغ نقاط نادر میرود تا با یک پرسش ساده پاسخ یابد: برای ایزوله کردن تو، به چند برش تصادفی نیاز است?
به نقل از یک راهنمای فنی که در ۲۸ اوت ۲۰۲۶ توسط یکی از مهندسان پلتفرم هوش مصنوعی (که پیشتر SRE بود) منتشر شد، قدرت این روش در پذیرش تصادف نهفته است. الگوریتم با انتخاب تصادفی یک ویژگی و یک مقدار برش، درختهایی میسازد که در آنها نقاط نادر بهسرعت ایزوله میشوند. نقطهای که با ۳ برش جدا شود یک ناهنجاری است، در حالی که نقطهای در دل یک توده متراکم ممکن است به ۳۰ برش نیاز داشته باشد. همانطور که در تحلیلهای پیشین ما دربارهی بهینهسازی زیرساختهای نظارتی اشاره کردیم، تز نهایی این است که گاهی برنده شدن در گروی «بهینهسازی کمتر» است.
سازوکار تصادف
Isolation Forest از هیچ تابع زیان (Loss Function) یا بهینهسازی محلی استفاده نمیکند. حتی برخلاف درختهای تصمیم استاندارد، در هر برش به دنبال بهینهترین نقطه نیست. در عوض، بر قانون اعداد بزرگ و «ترفند جنگل» تکیه میکند؛ یعنی میانگینگیری از نتایج چندین مدل تصادفی برای یافتن سیگنال واقعی. این فرآیند به ترتیب زیر است:
- انتخاب تصادفی ویژگی: یک ویژگی را بهطور تصادفی از مجموعه موجود انتخاب میکند.
- برش تصادفی: مقداری را بهطور تصادفی بین حداقل و حداکثر آن ویژگی برای برش برمیگزیند.
- افراز بازگشتی: این فرآیند را تا زمانی که نقطه کاملاً ایزوله شود تکرار میکند.
- میانگینگیری جنگل: صدها درخت تصادفی میسازد و میانگین عمق ایزولاسیون هر نقطه را برای محاسبه امتیاز نهایی ناهنجاری به کار میبرد.
هر برش در واقع شبیه به پرتاب سکه است. قدرت این روش از این حقیقت میآید که «نایاب بودن» دقیقاً همان هدفی است که تصادف بهطور طبیعی آن را افشا میکند. تصادف ارزانقیمت بههمراه میانگینگیری، در زمانی که هدف یافتن موارد بسیار نادر است، بر مدلسازیهای دقیق پیروز میشود.
پارادوکس نمونهبرداری
یکی از مفاهیمی که در این الگوریتم اغلب اشتباه درک میشود، استفاده از نمونههای کوچک است. بهطور پیشفرض، هر درخت تنها با ۲۵۶ نقطه آموزش میبیند، فارغ از اینکه کل دادهها ۱۰ هزار یا ۱۰ میلیون ردیف باشند. این یک سازش برای افزایش سرعت یا کاهش دقت نیست که نیاز به عذرخواهی در اسناد طراحی داشته باشد، بلکه یک انتخاب طراحی آگاهانه است تا نقاط نادر، «نادر» باقی بمانند. این رویکرد با این ایده که مدلهای کوچکتر میتوانند در محاسبات خاص برتری داشته باشند همسو است.
از آنجا که ایزولاسیون یک مفهوم نسبی است، یک ناهنجاری تنها زمانی جذاب است که جداسازی آن راحتتر از نقاط اطرافش باشد. استفاده از کل مجموعه داده میتواند در واقع باعث شود ناهنجاریها سختتر ایزوله شوند. نمونههای کوچک باعث میشوند جنگل روی مسئله جداسازی متمرکز بماند و هزینه ساخت درختها را بهشدت کاهش دهد. الگوریتمی که هیچچیز را بهینه نمیکند، عمداً کمتر از دادههای ارسالی شما را میبیند.
عملیاتی کردن خروجی
Isolation Forest بهجای یک تصمیم صفر و یک، یک رتبهبندی ارائه میدهد. اهرم اصلی برای اپراتور، پارامتر «آلودگی» (Contamination) است. باید دقیقاً بدانیم این پارامتر چه میکند: آلودگی، خودِ آستانه امتیاز نیست، بلکه تخمین شما از این است که چه درصدی از دادهها ناهنجار هستند.
اگر آلودگی را روی ۰.۰۱ تنظیم کنید، نمیگویید «هر چه بالای ۰.۷ بود را علامت بزن»، بلکه میگویید «تقریباً یک درصد از این دادهها خراب هستند، آنها را پیدا کن». سپس کتابخانه بر اساس این تخمین، نقطه برش را از توزیع امتیازات مشاهده شده استخراج میکند. این یعنی هیچ قاعده آماری جهانی (مانند روش آرنج، زانو یا شکاف در نمودار) برای تعیین این مقدار وجود ندارد. این یک تصمیم تجاری است: تیم شما در هفته توان بررسی چند مورد را دارد و هزینه نادیده گرفتن یک ناهنجاری وقتی از فیلترها عبور کند چقدر است?
تلههای پیادهسازی
مهندسان باید مراقب پیادهسازیهای خاص هر کتابخانه باشند، زیرا تفاوت در قراردادها میتواند یک بعدازظهر کامل از زمان عیبیابی را تلف کند. در حالی که مقاله اصلی امتیازی بین ۰ تا ۱ (که مقادیر نزدیک به ۱ ناهنجار و مقادیر نزدیک به ۰ کاملاً نرمال هستند) ارائه میدهد، کتابخانه Scikit-learn متفاوت عمل میکند:
score_samples: این مقدار برعکس امتیاز مقاله اصلی است؛ مقادیر منفیتر نشاندهنده ناهنجارتر بودن نقطه است.decision_function: امتیاز را با یک آفست جابهجا میکند تا مقادیر منفی بهعنوان ناهنجاری شناخته شوند. وقتی آلودگی را تعیین میکنید، این آفست بهگونهای انتخاب میشود که همان نسبت مورد انتظار از ناهنجاریهای آموزشی تولید شود.
حالتهای شکست: ماسکگذاری و غرقشدگی
هیچ الگوریتمی کامل نیست و Isolation Forest دو حالت شکست خاموش دارد که در هیچیک از معیارهای تولیدی الگوریتم ظاهر نمیشوند:
- ماسکگذاری (Masking): این شکست اصلی است. زمانی رخ میدهد که ناهنجاریها تکرار شوند و در کنار هم خوشه تشکیل دهند. وقتی یک الگوی کلاهبرداری متراکم شود، نقاط دیگر «نادر» نیستند. یک خوشه متراکم از یک الگوی مشابه، اکنون برای ایزوله شدن به برشهای زیادی نیاز دارد و در نتیجه بهعنوان داده نرمال شناسایی شده و ناپدید میشود. در محیط عملیاتی: اولین مورد از یک خطای جدید بهوضوح شناسایی میشود، اما در مورد دهم، چون الگو تکرار شده، دیگر ایزوله به نظر نمیرسد؛ دقیقاً زمانی که خطا به یک مشکل سیستمیک تبدیل شده است.
- غرقشدگی (Swamping): عکس ماسکگذاری است. زمانی رخ میدهد که نقاط نرمال بهدلیل نزدیکی به یک منطقه ناهنجار، خودشان بهعنوان ناهنجاری علامتگذاری شوند. این اتفاق باعث میشود صف بررسیها با رکوردهایی پر شود که آماری عجیب هستند اما کاملاً بیضررند.
به همین دلیل، Isolation Forest باید بهعنوان ابزاری برای هشدار زودهنگام در برابر خطاهای «نوظهور» دیده شود، نه شناسدهنده مشکلات تکراری. این ابزار باید در کنار تشخیصهای مبتنی بر امضا (Signature-based) برای الگوهای شناختهشده قرار گیرد، مشابه همانطور که هشدارهای ناهنجاری در مانیتورینگ با آستانههای استاتیک جفت میشوند.
نقاط کور هندسی
یک محدودیت ساختاری در نحوه دیدن فضای دادهها توسط این الگوریتم وجود دارد. هر برش موازی با محورهاست چون هر بار تنها یک ویژگی را میبُرَد. این یعنی مناطقی که جنگل ایجاد میکند، مستطیلهایی موازی با محورها هستند.
در عمل، این موضوع باعث ایجاد آرتیفکتهایی میشود؛ نوارهایی در فضای ویژگی که با وجود نبود داده در آن ناحیه، بهطور مشکوکی «نرمال» امتیاز میگیرند. اگر دو ویژگی همبستگی داشته باشند و دادههای واقعی روی یک خط مورب قرار بگیرند، مستطیلها بهخوبی روی آن مورب نمینشینند و «مناطق شبح» ایجاد میکنند. برای حل این مشکل، Extended Isolation Forest توسعه یافت. این نسخه بهجای برشهای موازی با محور، از ابرصفحههایی با جهت تصادفی استفاده میکند تا آرتیفکتهای ناشی از مفروضات هندسی الگوریتم پایه را کاهش دهد.
استراتژی استقرار در محیط عملیاتی
در محیط تولید، موثرترین استراتژی این است که خروجی الگوریتم را بر اساس «ارزش مورد انتظار» بازرتبهبندی کنید. یک ناهنجاری در گزارش ساعت کاری یک کارآموز و یک مدیر ارشد ممکن است از نظر آماری یکسان باشند، اما اولی یک خطای گرد کردن است و دومی نشت درآمد. با ضرب کردن امتیاز ناهنجاری در اثر تجاری، تیمها تضمین میکنند که تلاش برای بررسی، بهجای دنبال کردن تازگی آماری، ریسک مالی را دنبال کند.
برای کسانی که این روش را در دنیای واقعی به کار میبرند، چکلیست استقرار روشن است:
- موارد استفاده: هشدار زودهنگام برای خطاهای نوظهور در تلهمتری زیرساخت، ناهنجاریهای هزینهای/ساعت کاری، صفهای تریاژ کلاهبرداری و پیشدرآمدهای نقض SLA.
- حضور انسان در چرخه: همیشه یک مرحله تریاژ انسانی قبل از هر اقدامی قرار دهید. این ضرورت به دلیل خطاهای احتمالی در اتوماسیون است که در تحلیلهای ما درباره ترمیم سیستمهای عملیاتی AI بررسی شده است.
- ابزارهای مکمل: هرگز از آن بهعنوان تنها تشخیصدهنده برای خطاهایی که قبلاً دیدهاید استفاده نکنید.
- نمونهبرداری: اندازه نمونه را کوچک (مثلاً ۲۵۶) نگه دارید، زیرا این پیشفرض تعمدی است.
این تغییر دیدگاه نشان میدهد که هوش واقعی در خود الگوریتم نیست، بلکه در تنظیمات انسانی است. انتخاب ویژگیها، قیمتگذاری شکستها و تعیین آستانهها جایی است که مهندسی واقعی رخ میدهد. الگوریتم صرفاً این قضاوت را مقیاسپذیر میکند. درس نهایی این است که هرچه یک الگوریتم کمتر فرض کند و کمتر بهینه کند، عملیات انسانی بیشتر به «هوش» تبدیل میشود.
گام بعدی شما
- اگر از Scikit-learn استفاده میکنید، حتماً خروجی
decision_functionرا با مقادیر منفی بررسی کنید تا دچار اشتباه در تفسیر نشوید. - برای دادههایی با همبستگی بالا، بهجای نسخه استاندارد، از Extended Isolation Forest استفاده کنید تا نقاط کور هندسی حذف شوند.
- امتیازات آماری را با ضرایب اثر تجاری (Business Impact) ترکیب کنید تا اولویت بررسیها بر اساس ریسک مالی باشد.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو