مهندسی ویژگی و انتخاب ویژگی
1) اهداف و اصول
هدف: ایجاد ویژگی های پایدار، قابل تفسیر و اقتصادی که بین آفلاین و آنلاین توافق شده است.
اصول:- نقطه در زمان: ویژگی ها از داده های موجود در زمان راه حل، بدون آینده (ضد نشت) محاسبه می شود.
- دامنه اول: ویژگی های منعکس کننده مکانیک کسب و کار (سپرده ها، جلسات، ژانرهای بازی، RG/AML).
- استفاده مجدد و قراردادها: نسخه های فروشگاه ویژگی، صاحبان، فرمول ها و SLO ها.
- هزینه آگاه: ما در نظر تاخیر و هزینه محاسبات/ذخیره سازی → تحقق تنها بازپرداخت.
- قابلیت مشاهده: نظارت بر رانش/ثبات/کالیبراسیون ؛ آزمون معادل آنلاین/آفلاین.
2) طبقه بندی مشخصه برای iGaming
RFM/رفتاری: اعتبار/فرکانس/پولی توسط ویندوز (10m/1h/1d/7d/30d).
جلسه: مدت زمان، مکث، تغییرات دستگاه/ASN، سرعت عمل.
مالی: سپرده ها/برداشت ها/بازپرداخت ها، سهام روش های پرداخت، عادی سازی FX.
بازی: پروفایل ژانر، نوسانات ارائه دهنده، خوشه RTP، برنده خط.
بازاریابی: کانال ها/UTM، پاسخ های کمپین، اشباع/cooldown.
RG/AML: محدودیت ها، پرچم های خود حذفی، الگوهای سرعت، استفاده مجدد از BIN/IP.
جغرافیایی/زمان: تقویم های محلی/تعطیلات، ساعت کمربند، شب/شب.
نمودار: لینک های کاربر-کارت-دستگاه-ip، مرکزیت/اجزاء، حلقه های تقلب.
NLP/متون: تم ها و تن از بلیط/چت ؛ شکایات کلیدی
عملیاتی: خطاهای تاخیر/ارائه دهنده، ثبات جلسه (برای مدل های SRE).
3) ویندوز و aggregates (نقطه در زمان)
پنجره های معمولی: 10m/1h/24h/7d/30d. برای هر پنجره - count/sum/mean/std/last/max/min, ratio and rate.
قالب SQL (سپرده 30d، بدون آینده):sql
SELECT u.user_pseudo_id, t.asof,
SUM(CASE WHEN e.type='deposit'
AND e.event_time>=t.asof - INTERVAL '30' DAY
AND e.event_time< t.asof THEN e.amount_base ELSE 0 END) AS dep_30d,
COUNT(CASE WHEN e.type='bet'
AND e.event_time>=t.asof - INTERVAL '7' DAY
AND e.event_time< t.asof THEN 1 END) AS bets_7d
FROM silver.fact_events e
JOIN (SELECT user_pseudo_id, DATE(event_time) AS asof
FROM silver.fact_events GROUP BY 1,2) t USING(user_pseudo_id)
JOIN dim.users_scd u ON u.user_pseudo_id=t.user_pseudo_id
AND t.asof >= u.valid_from AND (u.valid_to IS NULL OR t.asof < u.valid_to)
GROUP BY 1,2;
4) کدگذاری طبقه بندی
One-Hot/Hashing: برای دسته های نادر/بالا کاردینال (بازی ها، ارائه دهندگان).
رمزگذاری هدف (TE): میانگین هدف با k-fold/leave-one-out و ضد نشت آگاه از زمان.
WOE/IV (نمره ریسک): سطل های مونوتونیک با کنترل و ثبات IV.
python for fold in time_folds:
train_idx, val_idx = split_by_time(fold)
te_map = target_mean(train[["provider_id","label"]])
val["provider_te"] = val["provider_id"].map(te_map).fillna(global_mean)
5) عادی سازی و مقیاس پذیری
حداقل حداکثر/مقاوم/Z-score - توسط پنجره آموزش ؛ صرفه جویی در پارامترها در مصنوعات.
ورود به سیستم تبدیل برای دم جمع/شرط طولانی.
Box-Cox/Yeo-Johnson - هنگامی که تقارن مورد نیاز است.
6) ویژگی های موقت و فصلی
تقویم: روز هفته، ساعت، تعطیلات بازار (تقویم)، روز پرداخت.
فرکانس: میانگین متحرک/expon. صاف کردن (EMA)، دلتاها (t − t-1).
مبتنی بر رویداد: زمان از آخرین سپرده/برنده/از دست دادن، «خنک کننده».
7) ویژگی های نمودار (تقلب/AML)
رئوس: کاربر/کارت/دستگاه/آی پی. لبه ها: معاملات/جلسات/ویژگی های مشترک.
ویژگی: اندازه جزء، درجه، betweeness، pagerank، triads، ظهور.
الگو: دسته ای شبانه ایجاد نمودار → تعبیه/مرکزیت → کش آنلاین.
8) ویژگی های NLP (پشتیبانی/چت/بررسی)
پایه: موضوعات TF-IDF/NMF، احساسات، طول، فرکانس شکایات.
پیشرفته: جاسازی (جمله BERT) → متوسط در بلیط در هر پنجره.
PII: قبل و بعد از پوشش (ایمیل، PAN، تلفن) توسط سیاست.
9) Geo/ASN و دستگاه ها
IP → Geo/ASN: ما کش و به روز رسانی ؛ درخواست های همزمان آنلاین بدون timeout/cache را انجام ندهید.
ویژگی ها: ثبات ASN/DeviceID، فرکانس تغییر، فاصله بین ورود.
10) ضد نشت و آشتی آنلاین/آفلاین
پیوستن به نقطه در زمان، هیچ رویدادی در آینده در ویندوز/برچسب ها وجود ندارد.
یک کد تبدیل (کتابخانه) برای آفلاین و آنلاین.
آزمون هم ارزی: در نمونه T، مقادیر آنلاین این ویژگی را با آفلاین (MAE/MAPE) مقایسه می کنیم.
yaml name: deposits_sum_10m owner: ml-risk slo: {latency_ms_p95: 20, availability: 0.999}
offline:
source: silver.payments transform: "SUM(amount_base) OVER 10m BY user_pseudo_id"
online:
compute: "streaming_window: 10m"
tests:
- compare_online_offline_max_abs_diff: 0.5
11) انتخاب ویژگی
11. 1 فیلتر کردن
11. 2 بسته بندی
RFE/FS متوالی: در مجموعه های کوچک/رگرسیون لجستیک.
انتخاب پایداری: ثبات در نمونه برداری بوت استرپ.
11. 3 جاسازی شده
L1/Lasso/ElasticNet: نادر بودن.
درختان/GBDT: اهمیت/SHAP برای انتخاب و تفسیر کسب و کار.
گروه لاسو: انتخاب گروه (مجموعه ای از ویژگی های یک متغیر).
python
X = preprocess(raw) # one-hot/TE/scale
X = drop_const_and_corr(X, thr=0.95)
rank_mi = mutual_info_rank(X, y)
keep1 = topk(rank_mi, k=200)
model = LGBMClassifier(...)
model.fit(X[keep1], y)
shap_vals = shap.TreeExplainer(model).shap_values(X[keep1])
keep2 = stable_topk_by_shap(shap_vals, k=60, bootstrap=20)
final = keep2
12) پایداری، رانش و کالیبراسیون
رانش: PSI/KS برای ویژگی ها و سرعت ؛ هشدارها زمانی که آستانه ها بیش از حد است.
پایداری: مراقب «شکننده» TE/WOE (کاردینالیتی/شیفت) باشید.
کالیبراسیون: پلات/ایزوتونیک ؛ گزارش های قابلیت اطمینان
تجزیه و تحلیل برش: بازارها/ارائه دهندگان/دستگاه ها - معیارها و هزینه مورد انتظار خطاها.
13) مهندسی هزینه و عملکرد
هزینه هر ویژگی (CPF): CPU/IO/شبکه/ذخیره سازی → بودجه مدل.
مواد: آفلاین سنگین، آنلاین سبک ؛ TTL/کش برای ویژگی های داغ.
جستجوی از راه دور: فقط async + cache ؛ p95 <20-30 ms در ویژگی آنلاین.
Chargeback: حسابداری برای هزینه ویژگی/استنتاج با فرمان.
14) ویژگی فروشگاه (هسته قوام)
رجیستری: نام، فرمول، مالک، SLO، تست ها، نسخه ها.
هماهنگ سازی آنلاین/آفلاین: یک کد تحول، آزمون برابری.
سیاهههای مربوط/ممیزی: چه کسی فرمول را تغییر داد ؛ اثر نسخه بر معیارهای مدل.
15) مثال ها
ClickHouse: شرط بندی های دقیقه ای:sql
CREATE MATERIALIZED VIEW mv_bets_1m
ENGINE = SummingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), user_pseudo_id)
AS
SELECT toStartOfMinute(event_time) AS ts_min,
user_pseudo_id,
sum(stake_base) AS stake_sum_1m,
count() AS bets_1m
FROM stream.game_events
GROUP BY ts_min, user_pseudo_id;
افت ضد همبستگی (ایده SQL):
sql
-- вычислить корреляции и удалить пары с ρ >0.95, сохранив более «дешевую» фичу
WOE binning (طرح):
python bins = monotonic_binning(x, y, max_bins=10)
woe = compute_woe(bins)
iv = compute_iv(bins)
16) فرآیندها و RACI
R (مسئول): Data Eng (خطوط لوله/فروشگاه ویژگی)، Data Science (ویژگی طراحی/انتخاب/معیارها).
A (پاسخگو): رئیس داده/CDO.
C (مشورت): انطباق/DPO (PII، اقامت)، خطر/AML/RG (سیاست)، SRE (SLO/هزینه)، امنیت.
I (مطلع): محصول/بازاریابی/عملیات/پشتیبانی.
17) نقشه راه
MVP (3-5 هفته):1. کاتالوگ 50 ویژگی برتر (پرداخت/گیم پلی) با فرمول های نقطه در زمان.
2. ویژگی فروشگاه v1 (آنلاین/آفلاین) + آزمون هم ارزی.
3. انتخاب پایه: ثابت/همبستگی → MI → L1/SHAP لیست کوتاه (تا 60 ویژگی).
4. نظارت بر ویژگی های رانش و داشبورد هزینه.
مرحله 2 (5-10 هفته):- TE/WOE با اعتبار سنجی زمان، ویژگی های نمودار و تقویم.
- تجزیه و تحلیل برش و عدالت، کالیبراسیون احتمال.
- تحقق ویژگی های آفلاین سنگین، حافظه پنهان آنلاین، سهمیه ها.
- تولید خودکار مستندات، انتخاب ثبات در CI.
- غیرفعال کردن خودکار ویژگی های «گران و بی فایده» (CPF↑، vklad↓).
- مقایسه A/B مجموعه ویژگی ها، گزارش های مورد انتظار هزینه.
18) چک لیست پیش فروش
- تمام ویژگی ها دارای مشخصات (مالک، فرمول، نسخه ها، SLO).
- گذشت نقطه در زمان و آنلاین/آفلاین آزمون هم ارزی.
- Filter → embedded (SHAP/L1) → پایداری تکمیل شده است.
- نظارت بر رانش و قابلیت اطمینان پیکربندی شده ؛ هشدارها و هشدارها هستند.
- CPF/latency متناسب با بودجه ؛ ویژگی های سنگین تحقق یافته است.
- سیاست های PII ملاقات کرد (CLS/RLS، نشانه گذاری، اقامت).
- مستندات و موارد استفاده به کاتالوگ اضافه شده است.
19) ضد الگوهای و خطرات
Lakage (رویدادهای آینده/تبلیغات پس از آن).
فرمول های آنلاین/آفلاین متناقض.
بیش از حد عرضه شده از دسته های کاردینال بالا بدون هش/TE.
ویژگی های «گران» بدون افزایش قابل اندازه گیری در کیفیت.
فقدان تجزیه و تحلیل برش/عدالت - تخریب پنهان.
TE/WOE بدون زمان آگاه اعتبار سنجی متقابل → آموزش مجدد.
20) خط پایین
مهندسی ویژگی یک رشته مدیریت شده است: نقطه در زمان، حس کسب و کار، تکرارپذیری، نظارت و اقتصاد. ویژگی های قوی + انتخاب دقیق (فیلتر/بسته بندی/جاسازی شده) و یک فروشگاه ویژگی تنها مدل های پایدار، قابل تفسیر و ارزان را بهبود می بخشد که درآمد خالص را کاهش می دهد، تقلب را کاهش می دهد و از RG پشتیبانی می کند - شفاف و سازگار.