Menu
CoddyTech

Local Outlier Factor

חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 36 מתוך 51.

כמה נקודות חריגות מסתתרות בטווח הנתונים. גורם החריגות המקומי, LOF, משווה את הצפיפות במקום של כל נקודה לצפיפות במקומות של השכנות שלה:

מכוניות בחניון, שעת ההגעה לרוחב ומספר שעות החניה כלפי מעלה: נוסעים לעבודה מקובצים בצפיפות סביב 8:00 ו-9 שעות, קונים מפוזרים לאורך כל היום למשך כמה שעות, ומכונית אחת בשעה 8:18 שחנתה 6.6 שעות מסומנת בעיגול אדום ומסומנת כחריגה על ידי LOF

קונים נשארים לפעמים 6 שעות. אבל השכנים של המכונית הזו הם נוסעים לעבודה, צפופים זה לצד זה, והיא נמצאת רחוק מהקהל שלהם:

from sklearn.neighbors import LocalOutlierFactor
lof = LocalOutlierFactor(n_neighbors=20, contamination=0.02)
flags = lof.fit_predict(X)

אותן תשובות כמו קודם: -1 חריג, 1 תקין. n_neighbors קובע עד כמה ההשוואה מקומית.

challenge icon

אתגר

בינוני

חברת טלפונים מחפשת חשבונות השונים מחשבונותיהם של השכנים שלהם. קוד הפתיחה מתקנן את הנתונים ומסמן חשבונות באמצעות יער בידוד; התוכנית קוראת את k.

  1. סמנו חשבונות באמצעות LOF: n_neighbors=k, contamination=0.03.
  2. הדפיסו את הספירה של כל גלאי ואת מספר החשבונות ששניהם מסמנים.
  3. רשמו את החשבונות שרק LOF מסמן, לפי סדר הטבלה, כמו למטה.

עבור חברה קטנה יותר ועבור 10:

Isolation forest: 5 accounts
LOF: 5 accounts
Both: 4 accounts
Only LOF:
  A118: 960 minutes, 6.2 GB

נסו בעצמכם

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor

# שורה אחת לכל חשבון טלפון: דקות שיחה ונתוני גלישה סלולרית במשך חודש
accounts = pd.read_csv("accounts.csv")
X = StandardScaler().fit_transform(accounts[["call_minutes", "data_gb"]])
k = int(input())

# מתוך Isolation Forest: ‏-1 עבור החשבונות שהיער מזהה כחריגים
forest_flags = IsolationForest(contamination=0.03, random_state=0).fit_predict(X)

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה למידה בלתי מונחית

תרגלו בעצמכם: קומפיילר Python אונליין