Fəsil 04 · 4 dəq oxu

Feature engineering

Feature engineering

Tabular məsələlərdə tavanı keyfiyyəti müəyyən edir. Alqoritm isə bu tavana nə qədər yaxınlaşacağınızı. bir həftə, alqoritm seçiminə bir saat ayıran mühəndislər əksinə edənləri adətən üstələyir.

Bu fəsil həqiqətən əhəmiyyət kəsb edən transformation-ları və onların arxasındakı düşüncə tərzini əhatə edir.

Feature nə üçündür

bir linzadır. Xam datanı elə formada təqdim edir ki, model pattern-i daha asan görsün. Tarix bir ədəddir; ondan çıxarılan həftənin günü isə həftəlik seasonality-ni üzə çıxaran linzadır. Transaction məbləği bir ədəddir; "məbləğin bu müştərinin orta məbləğinə nisbəti" isə anomaliyanı üzə çıxaran linzadır.

Yaxşı domain expert-in bildiklərini kodlaşdırır. ən yaxşı mənbəyi bu işi əl ilə görmüş adamla söhbətdir.

Numeric feature-lər

  • Scaling. Linear model-lər, , SVM-lər və k-NN scale-ə həssasdır; tree model-ləri isə yox. Standardize edin (sıfır orta, vahid variance) və ya min-max scale edin. Scaler-i yalnız üzərində fit edin.
  • Log və power transform-lar. Heavy-tailed kəmiyyətləri (gəlir, səhifə baxışları, transaction məbləğləri) log(1 + x) çevrilməsindən sonra modelləşdirmək asandır.
  • Binning. Continuous aralıqlara çevirin. Məlumat itirir, amma linear model-lərə qeyri-monoton effektləri tutmağa imkan verir və model-i outlier-lərə qarşı robust edir.
  • Interaction-lar. İki hasili və ya nisbəti. price / square_metres hər birindən ayrılıqda qat-qat məlumatlıdır. Tree-lər bunları avtomatik tapır; linear model-lərə isə açıq şəkildə vermək lazımdır.

Categorical feature-lər

  • One-hot encoding. Hər kateqoriya üçün bir binary sütun. Aşağı cardinality üçün təhlükəsiz default-dur. Yüksək cardinality-də (poçt indeksləri, user ID-ləri) partlayır.
  • Ordinal encoding. Kateqoriyaları tam ədədlərə map edin. Yalnız real sıra olduqda etibarlıdır (small < medium < large).
  • . Hər kateqoriyanı həmin kateqoriya üçün ortası ilə əvəz edin. Yüksək cardinality üçün güclüdür və eyni zamanda tələsidir: onu out-of-fold və ya smoothing ilə hesablayın, heç vaxt tam üzərində yox.
  • . içində hər kateqoriya üçün dense vector öyrənin. Kifayət qədər data olduqda çox yüksək cardinality üçün düzgün alətdir.
  • Frequency encoding. Kateqoriyanı nə qədər tez-tez rast gəlindiyi ilə əvəz edin. Ucuzdur və gözlənilmədən faydalıdır.

Tarix və vaxt

Tək timestamp model üçün demək olar ki, faydasızdır. Bunları çıxarın:

  • günün saatı, həftənin günü, ayın günü, ay, rüb
  • həftəsonudur, bayramdır (düzgün region üçün real bayram təqvimi ilə)
  • istinad hadisəsindən keçən vaxt: hesabın yaşı, son alışdan keçən günlər
  • cyclical encoding (saatın və ya ayın sin/cos-u) ki, 23:00 və 00:00 bir-birinə yaxın olsun

Text feature-lər

  • Bag of words / TF-IDF. Term-ləri sayın, nadirliyə görə verin. üçün hələ də güclü baseline-dır.
  • n-gram-lar. Qonşu sözlərin cütləri və üçlükləri ifadələri tutur ("yaxşı deyil").
  • . model-indən alınan sentence vector-ları semantic similarity-ni hazır şəkildə verir və artıq trivial mətndən kənar hər şey üçün default-dur.
  • Sadə statistikalar. Uzunluq, böyük hərflərin sayı, URL-lərin sayı. Ucuzdur və çox vaxt predictive-dir.

Aggregation-lar və window-lar

Biznes datasında predictive gücün çox hissəsi tarixçədə yaşayır. Hər entity (müştəri, cihaz, hesab) üçün trailing window-lar üzrə aggregate-lər hesablayın:

  • son 1 / 7 / 30 gündə event-lərin sayı
  • həmin window-larda məbləğlərin cəmi, ortası, maksimumu
  • son event-dən keçən vaxt
  • qısa window-un daha uzun window-a nisbəti (trend)

Bunları düzgün hesablamaq point-in-time problemi səbəbindən bahadır: yalnız prediction anından əvvəlki event-ləri istifadə etməlidir. Bunu səhv etsəniz, alırsınız. Feature store-lar böyük ölçüdə məhz bu problemi həll etmək üçün mövcuddur.

Missing value-lar

Missingness-in özü məlumatdır. Sahənin boş olub-olmaması çox vaxt onun dəyərindən daha güclü proqnozlaşdırır. Variantlar:

  • Impute edin mean, median və ya mode ilə və binary was_missing flag-i əlavə edin.
  • Olduğu kimi saxlayın missing value-ları native şəkildə emal edən tree kitabxanaları üçün.
  • Modelləşdirin, əgər missing pattern-i mürəkkəbdirsə.

Missingness-in ilə əlaqəsiz olduğunu yoxlamadan missing value-lu sətirləri heç vaxt səssizcə drop etməyin.

Feature selection

Daha çox həmişə daha yaxşı deyil. Əhəmiyyətsiz noise əlavə edir, training-i yavaşladır və dəvət edir.

  • Variance-ı sıfıra yaxın olan silin.
  • Hər yüksək korrelyasiyalı cütdən birini silin.
  • Model-based importance-dan ( importance, permutation importance) rank etmək üçün istifadə edin, sonra quyruğu atın və validation nəticəsinin düşmədiyini yoxlayın.
  • Tək model fit-indən alınan importance-a ehtiyatla yanaşın; o, qeyri-sabitdir. Fold-lar üzrə ortalayın.

Feature engineering workflow-u

  1. Xam sütunlar üzərində baseline model ilə başlayın. Score-u qeyd edin.
  2. Domain expert ilə danışın. İstifadə etdiyi hər rule of thumb-ı yazın.
  3. Hər rule of thumb-ı kimi kodlaşdırın. Hər batch-dən sonra yenidən score edin.
  4. Tarixçə aggregate-lərini əlavə edin. Yenidən score edin.
  5. Kömək etməyənləri silin.
  6. Hər baxımından son dəfə yoxlayın.

Hər nə olduğunu və niyə mövcud olduğunu log-da saxlayın. Altı aydan sonra bu log pipeline-ı anlamağın yeganə yolu olacaq.

Tapşırıqlar

  1. Dataset-dən bir xam sütun seçin. Ondan beş çıxarın.
  2. out-of-fold hesablama ilə implement edin. naive versiya ilə müqayisə edin və müşahidə edin.
  3. Model-inizin avtomatlaşdıracağı işi görən adamla müsahibə aparın. Cavablarının nəzərdə tutduğu sadalayın.