Vahid 5 / 11

Xüsusiyyət Mühəndisliyi: Variantların yaradılması, Kodlaşdırma, Ölçmə və Sızmanın qarşısını almaq

Qazanclar:

  • Domen bilikləri ilə mənalı törəmə xüsusiyyətləri yaratmaq və kateqoriyalı kateqoriyaları müvafiq üsullarla kodlaşdırmaq bacarığı (bir qaynar, etiket, hədəf)
  • Model tipinə (standartlaşdırma, normallaşdırma) görə ədədi dəyişənləri ölçmək və lazımsız və ya natamam miqyaslamadan qaçmaq imkanı
  • Təlim/test bölgüsündən sonra və yalnız təlimdən sonra bütün çevrilmələri öyrənməklə xüsusiyyət sızmasının qarşısını almaq imkanı

Maşın öyrənməsində köhnə bir deyim var: “Tətbiqi maşın öyrənməsi mahiyyətcə xüsusiyyət mühəndisliyidir”. Çünki bir modelin uğuru çox vaxt seçdiyiniz alqoritmdən çox, modelə hansı girişləri verdiyinizdən irəli gəlir. Xüsusiyyət mühəndisliyi, modelin öyrənə biləcəyi xam məlumatlardan mənalı siqnallar istehsal etmək sənətidir. Süni intellekt bu mərhələdə zəngin fikir mənbəyidir: “Bu məlumatlardan hansı xüsusiyyətlər istehsal oluna bilər” sualını verəndə onlarla təklifi sadalayır. Amma bu təkliflərin bəziləri dəyərli, bəziləri faydasız, bəziləri isə təhlükəli (sızma) ola bilər. Bunu həll etmək sizin işinizdir.

Niyə xüsusiyyət mühəndisliyi

Xam məlumatlar nadir hallarda modelə ən yaxşı formada gəlir. Təkcə "doğum tarixi" sütunu mənasız olsa da, ondan yaranan "yaş" dəyəri güclü siqnaldır. "Sifariş vaxtı damğası"ndan "həftənin günü", "gün/gecə", "bayramdırmı" kimi atributları çıxara bilərsiniz. Bir nisbət yaratmaq üçün iki sütunu birləşdirə bilərsiniz (“borc/gəlir nisbəti”). Burada xüsusiyyət mühəndisliyi domen biliklərini riyazi siqnala çevirir; Məhz buna görə də ən çox insan zəkasını tələb edən mərhələdir.

Kateqorik dəyişənlərin ədədlərə çevrilməsi: kodlaşdırma

Modellər ümumiyyətlə mətnlə deyil, rəqəmlərlə işləyir. Kateqorik dəyişənlərin (məsələn, şəhər, rəng, məhsul növü) rəqəmlərə çevrilməsinə kodlaşdırma deyilir. Üç ümumi üsul:

Bir qaynar kodlaşdırma: Hər bir kateqoriya üçün 0/1 dəyəri olan ayrı bir sütun açır. “Şəhər” üçün İstanbul, Ankara, İzmir sütunları təşkil edilir; Əgər müştəri İstanbuldandırsa, yalnız həmin sütun 1 olacaq. Kateqoriyaların sayı az olduqda idealdır; Həddindən artıq kateqoriyalar varsa, yüzlərlə sütun istehsal edir (bu "ölçülü partlayış" adlanır).

Etiket kodlaması: Hər kateqoriyaya bir nömrə verir (İstanbul=0, Ankara=1). Bu sadədir, lakin təsadüfən modelə ardıcıllığı öyrədə bilər (Ankara > İstanbul kimi); ona görə də sıralanmamış kateqoriyalarda ehtiyatla istifadə olunur.

Hədəf kodlaşdırması: Hər bir kateqoriyanı həmin kateqoriyadakı hədəf dəyişənin ortası ilə əvəz edir. Bu, çox güclü, lakin ən təhlükəli sızma mənbəyidir: test məlumatlarının hədəfini nəzərə alsanız, model gələcəyi görür. O, yalnız təlim məlumatlarından və diqqətlə (çarpaz doğrulama çərçivəsində) hesablanmalıdır.

Ölçəkləmə: böyük rəqəmlər modeli sıxışdırmır

Bəzi modellər (məsafə əsaslı modellər, xətti modellər, neyron şəbəkələri) dəyişənlərin miqyasına həssasdır. Əgər "gəlir" (0-500.000) və "yaş" (0-100) eyni modelə düşürsə, gəlir sadəcə daha böyük olduğu üçün üstünlük təşkil edə bilər. Ölçəkləmə bunu düzəldir. İki ümumi üsul: standartlaşdırma (hər bir dəyəri "ortadan neçə standart sapma"ya çevirir) və normallaşdırma (min-max normallaşdırma - dəyərləri 0-1 aralığına sıxır). Ağac əsaslı modellər (qərar ağacları, təsadüfi meşə) miqyasına həssas deyil, miqyaslaşdırma tələb etmir.

Diqqət: Ölçmə və kodlaşdırma parametrləri (orta, standart kənarlaşma, kateqoriya-orta xəritələşdirmə) yalnız təlim məlumatlarından hesablanmalı, sonra eyni şey test məlumatlarına tətbiq edilməlidir. Test məlumatlarının daxil edilməsi sızmadır və modelinizi olduğundan daha yaxşı göstərir.

Xüsusiyyət mühəndisliyində sızmanın ürəyi

Xüsusiyyətlərin yaradılması məlumat sızmasının ən çox baş verdiyi yerdir. İki tipik səhv: Vaxt sızması — gələcək məlumatları ehtiva edən funksiyanın yaradılması (“son 30 günlük orta” hesablanarkən proqnoz günündən sonrakı günlər də daxil olmaqla). Statistik məlumatların sızması — təlim/test bölgüsündən əvvəl bütün məlumatlardan xüsusiyyətin (miqyaslaşdırma ortası, hədəf kodlaşdırma dəyəri) hesablanması. Qayda: əvvəlcə və yalnız təlim məlumatlarından qatar/test bölgüsü etdikdən sonra hər transformasiyanı öyrənin. Bunu müntəzəm olaraq etməyin ən təhlükəsiz yolu boru kəmərindən istifadə etməkdir - bütün çevrilmələri bir zəncirdə toplayan və onları parçalandıqdan sonra tətbiq edən bir quruluş.

Metod

nə üçün

Sızma riski

qeyd

Bir qaynar kodlaşdırma

Bir neçə kateqoriya ilə dəyişən

aşağı

Bir çox kateqoriyada ölçüsü partlayır

Etiket kodlaması

Çeşidlənmiş kateqoriya

aşağı

Sıradan çıxmaq səhv nizamı öyrədir

hədəf kodlaşdırma

Çox kateqoriyalı, güclü siqnal

çox yüksək

Sadəcə təhsildən, CV-də

standartlaşdırma

Xətti/məsafə modelləri

orta

Parametr yalnız təhsildən asılıdır

Vaxt pəncərəsi xüsusiyyəti

zaman seriyası

yüksək

Gələcək əlavə edin

üç mini qutu

1-ci hal – qiymətli əmlak. Kredit komandası xam "aylıq gəlir" və "aylıq borcun ödənilməsi" sütunlarından "borc-gəlir nisbəti" xüsusiyyətini yaratdı. Bu tək əldə edilən xüsusiyyət model dəqiqliyini 71%-dən 79%-ə qədər artırdı; çünki riski həqiqətən müəyyən edən mütləq gəlir deyil, nisbət idi. Dərs: domen biliklərinin yaratdığı nisbətlər güclü siqnallardır.

Case 2 - Hədəf kodlaşdırma sızması. Bir komanda “poçt kodunu” hədəf kodlaşdırması olan bir nömrəyə çevirdi (həmin ərazidə orta çaxnaşma dərəcəsi), lakin bunu bölmədən əvvəl bütün məlumatlardan etdi. Model sınaq dəstində 94% verdi, istehsalda isə 68%-ə düşdü. 6 həftəlik zəhmət boşa çıxdı. Dərs: hədəf kodlaşdırması diqqətlə, yalnız təlim çərçivəsində aparılır.

3-cü vəziyyət - miqyaslı unutma. Bir analitik gəliri (0-400.000) və müştəri yaşını (18-75) miqyaslaşdırmadan məsafəyə əsaslanan bir modelə daxil etdi. Model, demək olar ki, yalnız gəlirə baxaraq, yaş təsirini sarsıdıb. Ölçmə əlavə edildikdə, seqmentləşdirmə mənalı oldu. Dərs: məsafə/xətti modellərdə miqyaslama diqqətdən kənarda qalmır.

Dörd kopyalana bilən şablon

1) Xüsusiyyət ideyasının yaradılması (aradan qaldırılması sizə aiddir):

Rolunuz: mühəndis köməkçisi. Mənim df sütunlarım: doğum_tarixi, sifariş_zamanı (vaxt damğası), gəlir_tl, borc_tl, şəhər, məhsul_kateqoriya. Hədəf: "kredit qaytarılacaqmı" (0/1). Bu sütunlardan yaradıla bilən 15 xüsusiyyət təklif edin; hər biri üçün sızma riskini (aşağı/orta/yüksək) müəyyənləşdirin. Gələcək məlumatları ehtiva edənləri aydın şəkildə qeyd edin.

2) Təhlükəsiz kodlaşdırma (split sonrası):

Bir qaynar "şəhər" və "məhsul_kateqoriyasını" kodlayan kodu yazın. Vacib: kodlaşdırmanı yalnız təlim məlumatlarına uyğunlaşdırın, sonra test məlumatlarını çevirin (sklearn OneHotEncoder ilə). Təhsildə görünməyən kateqoriyanı (handle_unknown) necə idarə etdiyinizi izah edin.

3) Boru kəməri ilə sızıntısız çevrilmə:

Sklearn Pipeline qurun: rəqəmli sütunlara StandardScaler, kateqoriyalı sütunlara OneHotEncoder tətbiq edin, sonunda təsnifat əlavə edin. Bütün çevrilmələrin qatar/test bölünməsindən SONRA və yalnız məşqdən öyrənilməsinə zəmanət verin. Kodu və niyə sızmadığını izah edin.

4) Vaxt pəncərəsi xüsusiyyəti (sızma nəzarəti):

Hər bir müştəri üçün "son 30 gündə sifarişlərin sayı" atributunu yaradın, lakin proqnozlaşdırılan gündən sonra heç vaxt data daxil etməyin. Kodun gələcəyə baxmadığını sətir-sətir izah edin. İstinad tarixi sütununu təqdim edəcəyəm.

Zəif məlumat / Güclü göstəriş

Zəif çağırış:

Bu məlumatlara yaxşı xüsusiyyətlər əlavə edin.

"Yaxşı" qeyri-müəyyəndir, hədəf aydın deyil, sızma nəzarəti yoxdur. AI təsadüfi, bəlkə də sızan xüsusiyyətlər yaradır.

Güclü göstəriş:

Rolunuz: xüsusiyyət mühəndisi. Hədəf: "30 gün ərzində boşalma" (0/1), təxmini istinad tarixi: save_date. df.Task-da əməliyyat tarixçəsi var: 8 xüsusiyyət yaradın, HƏR üçün "Proqnoz zamanı məndə bu məlumat varmı" sualına cavab verin. Vaxt pəncərəsi xüsusiyyətlərinə istinad tarixindən sonra tarixin əlavə edilməsi. Kodu qatar/test bölməsindən sonra icra ediləcək boru kəmərinə uyğun şəkildə yazın.

Burada hədəf, istinad vaxtı və sızma nəzarəti əvvəldən müəyyən edilir.

Ümumi səhvlər

  • Bölünməzdən əvvəl bütün verilənlərdən transformasiyanı öyrənmək. Ölçəkləmə/kodlaşdırma parametri test məlumatlarını görürsə, sızma baş verir.
  • Hədəf kodlaşdırmasının ehtiyatsız istifadəsi. Bu, ən güclü, lakin ən sızan üsuldur; yalnız təlimdən, çarpaz doğrulamada.
  • Zaman pəncərəsi xüsusiyyəti ilə gələcəyin əlavə edilməsi. Proqnoz günündən sonra "son 30 gün" hesablaması daxil edilərsə, model gələcəyi görür.
  • Ağac modelində lazımsız miqyaslama və xətti modeldə natamam miqyaslama. Ölçmə qərarları model növünə uyğun olaraq qəbul edilir.
  • AI-nin hər bir xüsusiyyət təklifini sualsız əlavə edin. Təkliflərə faydasız və sızan xüsusiyyətlər daxil ola bilər.
İpucu: Yaratdığınız hər bir xüsusiyyət üçün bir sual yazın: “Mən bu dəyəri proqnozlaşdırdığım zaman malik olduğum məlumatla hesablaya bilərəmmi?” Cavab aydın "bəli" deyilsə, funksiyadan istifadə etməyin. Bu tək nizam-intizam əksər xüsusiyyətlərlə bağlı sızmaları aradan qaldırır.

Xülasə

Xüsusiyyət mühəndisliyi xam məlumatlardan mənalı siqnallar yaratmaq sənətidir və çox vaxt modelin uğurunu alqoritmdən daha çox müəyyən edir. Kateqoriyaların kodlaşdırılması (bir qaynar, etiket, hədəf), rəqəmlərin miqyaslanması (standartlaşdırma, normallaşdırma) və domen bilikləri ilə törəmə xüsusiyyətlərin istehsalı əsas alətlərdir. Lakin bu mərhələ həm də sızmanın ürəyidir: bütün çevrilmələr təlim/test bölünməsindən sonra və yalnız təlim məlumatlarından öyrənilməlidir. AI çoxlu ideyalar yaradır; Dəyəri təhlükəlidən fərqləndirən insan mühakiməsidir.

Tətbiq tapşırığı

Hədəf dəyişəni seçin və malik olduğunuz sütunlardan ən azı beş törəmə xüsusiyyəti dizayn edin. Onların hər biri üçün “proqnoz zamanı mən hazıram” sualına yazılı cavab verin və ən azı birini “sızma riski yüksək” olaraq aradan qaldırın. Sonra bölmədən sonra həyata keçiriləcək boru kəmərindəki təhlükəsiz xüsusiyyətləri kodlayın.

yoxlama siyahısı

  • [ ] Mən qatar/test bölünməsindən sonra bütün dəyişiklikləri tətbiq etdimmi?
  • [ ] Mən yalnız təlimdən miqyaslaşdırma/kodlaşdırma parametrlərini öyrənmişəm?
  • [ ] Hər bir xüsusiyyət üçün "proqnozlaşdırma zamanı məndə varmı" sualına cavab verdimmi?
  • [ ] Hədəf kodlaşdırması kimi yüksək riskli üsullara əlavə diqqət yetirmişəmmi?
  • [ ] Mən model növü (ağac/xətti) üçün müvafiq ölçü götürməyə qərar verdimmi?