چیت‌شیت

خوشه‌بندی، کاهش ابعاد و ناهنجاری‌ها

Clustering, Dimensionality Reduction and Anomalies

خوشه‌بندی، کاهش ابعاد و نشانه‌گذاری داده‌های پرت بدون برچسب. K-Means، DBSCAN، GMM، PCA، جنگل انزوا، LOF.

  • ۱۱ بخش
  • ۳ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. سه وظیفه بدون برچسب
  2. فراخوانی‌های پیاده‌سازی از صفر
  3. معادل آن در sklearn
  4. فرمول‌ها
  5. خوشه‌بندی: چه زمانی از X استفاده کنیم
  6. کاهش ابعاد و تشخیص: چه زمانی از X استفاده کنیم
  7. پایپ‌لاین تشخیص ناهنجاری
  8. پیش‌فرض‌ها و ارقام
  9. ایرادها و راه‌حل‌ها
  10. اختصارات
  11. پرسش‌ها

سه وظیفه بدون برچسب

معماری
کاهش‌یافتهداده‌های خامبدون برچسبPCAحفظ 90 تا 95٪ واریانسخوشه‌بندیK-Means، DBSCAN، GMMآشکارسازجنگل انزوا، LOFخطای بازسازیخطای بالا یعنی داده‌ی پرتامتیاز ناهنجاریرتبه‌بندی، سپس آستانهنقاط نشانه‌گذاری‌شدهبازبینی انسانی

فراخوانی‌های پیاده‌سازی از صفر

کار و کد
وظیفهکد
K خوشه، برچسب‌های سختkmeans(data, k=3)
اینرسی و امتیاز سیلوئت به ازای هر Kfind_best_k(data, max_k=6)
نواحی چگال، نوفه برچسب 1- می‌گیردdbscan(data, eps=1.5, min_samples=5)
برچسب‌های نرم با EMgmm(data, k=3)
تصویر به 2 محورPCA(n_components=2).fit_transform(X)
جداسازی حلقه‌هاkernel_pca(X, n_components, kernel="rbf", gamma=1.0)
نشانه‌گذاری بر اساس انحراف معیارzscore_detect(X, threshold=3.0)
نشانه‌گذاری بیرون از حصارهاiqr_detect(X, factor=1.5)

معادل آن در sklearn

کد
python
km = KMeans(n_clusters=3, random_state=42).fit(data)
db = DBSCAN(eps=1.5, min_samples=5).fit(data)
gmm_model = GaussianMixture(n_components=3, random_state=42).fit(data)
sklearn_pca = SklearnPCA(n_components=2)  # explained_variance_ratio_
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
reducer = UMAP(n_components=2, n_neighbors=15, min_dist=0.1, random_state=42)
iso = IsolationForest(n_estimators=100, contamination=0.05, random_state=42)
iso.fit(X_train)                          # برازش روی داده‌های نرمال
lof = LocalOutlierFactor(n_neighbors=20, contamination=0.05, novelty=True)
oc_svm = OneClassSVM(kernel="rbf", gamma="auto", nu=0.05)

فرمول‌ها

مفهوم‌ها
اینرسی
مجموع مجذور فاصله‌ها از هر نقطه تا مرکز خوشه‌ی آن. کمتر یعنی فشرده‌تر.
سیلوئت
$(b - a) / \max(a, b)$، از 1- (خوشه‌ی اشتباه) تا 1+.
Z-score
$(x - \text{mean}) / \text{std}$. وقتی مقدار مطلق از آستانه بگذرد نشانه‌گذاری می‌شود.
حصارهای IQR
$Q1 - \text{factor} \cdot IQR$ و $Q3 + \text{factor} \cdot IQR$، با $IQR = Q3 - Q1$.
امتیاز انزوا
$2^{-\text{average\_path\_length}(x) / c(n)}$. نزدیک به 1 یعنی ناهنجاری، نزدیک به 0.5 یعنی نرمال.
c(n)
2 * H(n-1) - 2*(n-1)/n، طول مسیر مورد انتظار برای جستجوی ناموفق.
نسبت واریانس تبیین‌شده
$\text{eigenvalue}_k / \sum \text{all eigenvalues}$
کسر از دست‌رفته در PCA
مقادیر ویژه‌ی حذف‌شده تقسیم بر کل مقادیر ویژه.

خوشه‌بندی: چه زمانی از X استفاده کنیم

دستورها
دستورکاربرد
K-Meansداده‌های بزرگ، خوشه‌های کروی، K معلوم. حساس به داده‌های پرت
DBSCANK نامعلوم، هر شکلی، یافتن نوفه. شکست در چگالی متغیر
Hierarchicalداده‌های کوچک، نیازمند دندروگرام. حافظه‌ی $O(n^2)$
GMMخوشه‌های بیضوی و دارای همپوشانی، انتساب‌های نرم
Ward linkagemerge با کمترین افزایش در واریانس درون‌خوشه‌ای

کاهش ابعاد و تشخیص: چه زمانی از X استفاده کنیم

دستورها
دستورکاربرد
PCAپیش‌پردازش و فشرده‌سازی. سریع، واریانس سراسری
t-SNEنمودارهای 2بعدی از همسایگی‌های محلی. زیر 10 هزار نمونه
UMAPنمودارهای 2بعدی در مقیاس بزرگ. حفظ بخشی از ساختار سراسری
Kernel PCAخمینه غیرخطی. ماتریس کرنل n در n است
Z-score / IQRیک ویژگی در هر مرحله. بسیار سریع
Isolation Forestبدون هیچ فرض اولیه. مناسب برای ابعاد بالا
LOFناهنجاری‌های محلی، خوشه‌هایی با چگالی متفاوت. کند
One-Class SVMداده‌های کوچک تا متوسط. رشد درجه‌دوم ماتریس کرنل

پایپ‌لاین تشخیص ناهنجاری

گام‌به‌گام
  1. خط مبناگردآوری بازه‌ای بدون ناهنجاری یا با ناهنجاری بسیار کم.
  2. ویژگی‌هاافزودن آماره‌های متحرک، ویژگی‌های زمانی و نسبت‌ها.
  3. آموزشبرازش آشکارساز روی خط مبنا؛ یادگیری الگوی نرمال.
  4. امتیازدهیتخصیص امتیاز ناهنجاری به هر مشاهده‌ی جدید.
  5. آستانهتعیین حد مرزی بر اساس هزینه‌ی هشدارهای کاذب و موارد ازدست‌رفته.
  6. هشدارارسال نقاط نشانه‌گذاری‌شده برای بازبینی انسانی.
  7. بازخوردثبت ناهنجاری‌های واقعی و هشدارهای کاذب؛ تنظیم آستانه.

پیش‌فرض‌ها و ارقام

پیش‌فرض‌ها
تنظیمپیش‌فرضتوضیح
Z-score `threshold`3.099.7٪ داده‌های توزیع گاوسی درون آن قرار دارند
IQR `factor`1.53.0 نقاط کمتری را نشانه‌گذاری می‌کند
n_estimators100درخت‌های انزوا؛ معمولاً کافی است
max_samples256تعداد ردیف در هر درخت، طبق مقاله‌ی اصلی
`predict` threshold0.5امتیاز بالاتر از آن ناهنجاری محسوب می‌شود
contamination0.05فقط حد مرزی را تعیین می‌کند، نه امتیازها را
t-SNE perplexity30بازه معمول 5 تا 50
Variance kept0.95یا 0.90 به عنوان حد آستانه‌ی PCA

ایرادها و راه‌حل‌ها

عیب‌یابی
  • K-Means شکل‌های هلالی را بد تفکیک می‌کند

    علت
    خوشه‌ها کروی نیستند
    راه‌حل
    استفاده از DBSCAN با eps=0.3
  • نتایج K-Means در هر اجرا تغییر می‌کند

    علت
    مینیمم محلی اینرسی
    راه‌حل
    ثابت کردن seed یا استفاده از K-Means++
  • Z-score برخی نقاط را جا می‌اندازد

    علت
    داده‌های چندوجهی یا وجود پرت‌ها در آموزش
    راه‌حل
    استفاده از IQR یا جنگل انزوا
  • روش‌های تک‌ویژگی یک نقطه را جا می‌اندازند

    علت
    غیرعادی بودن فقط در فضای توأم
    راه‌حل
    استفاده از جنگل انزوا
  • دقت 99.9٪ بدون هیچ شناسایی

    علت
    0.1٪ ناهنجاری، دقت بی‌فایده است
    راه‌حل
    Precision@k و AUPRC
  • اپراتورها به هشدارها توجه نمی‌کنند

    علت
    هشدارهای کاذب بسیار زیاد
    راه‌حل
    شروع با یک آستانه‌ی بالا
  • میانه‌ی امتیازها رو به بالا دریفت می‌کند

    علت
    تغییر داده‌ها یا کهنه شدن مدل
    راه‌حل
    بازآموزی روی داده‌های نرمال اخیر
  • فاصله‌ی خوشه‌ها در t-SNE متفاوت است

    علت
    فاصله‌ی بین خوشه‌ها هیچ معنایی ندارد
    راه‌حل
    صرفاً بررسی خود خوشه‌ها

اختصارات

اصطلاح‌ها
DBSCAN
خوشه‌بندی بر پایه‌ی چگالی؛ نقاط هسته، مرزی و نوفه.
GMM
مدل مخلوط گاوسی؛ K توزیع گاوسی با انتساب نرم.
EM
امید ریاضی-بیشینه‌سازی؛ گام E احتمالات، گام M پارامترها.
PCA
تحلیل مؤلفه‌های اصلی؛ محورهای حداکثر واریانس.
t-SNE
امبدینگ همسایگی تصادفی با توزیع t؛ حفظ همسایه‌ها.
UMAP
تقریب و تصویر یکنواخت خمینه؛ سریع‌تر، ساختار سراسری‌تر.
LOF
فاکتور داده‌ی پرت محلی؛ بیشتر از 1.0 یعنی چگالی کمتر از همسایگان.
AUPRC
مساحت زیر منحنی دقت-بازخوانی؛ گزینه‌ی بهتر از AUROC در اینجا.

پرسش‌ها

پرسش و پاسخ
چگونه K را انتخاب کنیم؟
یافتن نقطه‌ی زانویی در اینرسی؛ بررسی امتیاز سیلوئت.
چرا داده‌های نرمال را مدل‌سازی کنیم؟
ناهنجاری‌ها نادر و متغیرند؛ انحراف از نرمال شامل انواع نوظهور هم می‌شود.
بهترین چیدمان آموزش چیست؟
نیمه‌نظارتی: برازش فقط روی یک مجموعه‌ی تمیز از داده‌های نرمال.
ناهنجاری‌های برچسب‌دار اندک را چه کنیم؟
استفاده برای ارزیابی، نه آموزش.
چرا جنگل انزوا سریع است؟
هر درخت از زیرنمونه‌ی کوچکی استفاده می‌کند.
چرا کاهش ابعاد انجام می‌دهیم؟
در ابعاد بالا فاصله‌ها همگرا می‌شوند و جستجوی نزدیک‌ترین همسایه کارایی‌اش را از دست می‌دهد.