Mga nadagdag:
- Kakayahang gumawa ng mga makabuluhang derivative na feature na may kaalaman sa domain at mag-encode ng mga kategoryang pangkategorya na may naaangkop na mga pamamaraan (one-hot, label, target)
- Kakayahang mag-scale ng mga numerical variable ayon sa uri ng modelo (standardization, normalization) at maiwasan ang hindi kailangan o hindi kumpletong scaling
- Kakayahang maiwasan ang pagtagas ng feature sa pamamagitan ng pag-aaral ng lahat ng pagbabago pagkatapos ng hating pagsasanay/pagsusulit at mula lamang sa pagsasanay
Mayroong isang lumang kasabihan sa machine learning: "Ang inilapat na machine learning ay mahalagang tampok na engineering." Dahil ang tagumpay ng isang modelo ay kadalasang nagmumula sa kung anong mga input ang ibibigay mo sa modelo, sa halip na kung aling algorithm ang pipiliin mo. Ang feature engineering ay ang sining ng paggawa ng mga makabuluhang signal mula sa raw data na maaaring matutunan ng modelo. Ang artificial intelligence ay isang mayamang mapagkukunan ng mga ideya sa yugtong ito: kapag tinanong mo ang "anong mga tampok ang maaaring gawin mula sa data na ito", naglilista ito ng dose-dosenang mga mungkahi. Ngunit ang ilan sa mga mungkahing ito ay maaaring mahalaga, ang ilan ay maaaring walang silbi, at ang ilan ay maaaring mapanganib (leak). Trabaho mong ayusin ito.
Bakit nagtatampok ng engineering
Ang raw data ay bihirang dumating sa modelo sa pinakamahusay na anyo nito. Bagama't ang column na "petsa ng kapanganakan" lamang ay walang kahulugan, ang halaga ng "edad" na nabuo mula dito ay isang malakas na senyales. Maaari mong kunin ang mga katangian gaya ng "araw ng linggo", "araw/gabi", "piyesta ba ito" mula sa "timestamp ng order". Maaari mong pagsamahin ang dalawang column para makagawa ng ratio ("debt/income ratio"). Dito, isinasalin ng feature engineering ang kaalaman sa domain sa mathematical signal; At iyon mismo ang dahilan kung bakit ito ang yugto na nangangailangan ng pinakamaraming katalinuhan ng tao.
Pag-convert ng mga pangkategoryang variable sa mga numero: coding
Karaniwang gumagana ang mga modelo sa mga numero, hindi sa teksto. Ang pag-convert ng mga kategoryang variable (gaya ng lungsod, kulay, uri ng produkto) sa mga numero ay tinatawag na encoding. Tatlong karaniwang pamamaraan:
One-hot encoding: Nagbubukas ng hiwalay na column na may value na 0/1 para sa bawat kategorya. Para sa "lungsod", ang mga haligi ng Istanbul, Ankara, Izmir ay nabuo; Kung ang isang customer ay mula sa Istanbul, ang column na iyon lang ang magiging 1. Tamang-tama kapag maliit ang bilang ng mga kategorya; Kung napakaraming kategorya ay gumagawa ito ng daan-daang column (tinatawag itong "size explosion").
Label encoding: Nagbibigay ng numero sa bawat kategorya (Istanbul=0, Ankara=1). Ito ay simple, ngunit maaaring hindi sinasadyang magturo sa modelo ng isang pagkakasunud-sunod (tulad ng Ankara > Istanbul); kaya ito ay ginagamit nang may pag-iingat sa mga hindi nakaayos na kategorya.
Target na pag-encode: Pinapalitan ang bawat kategorya ng average ng target na variable sa kategoryang iyon. Ito ay napakalakas, ngunit ang pinaka-mapanganib na mapagkukunan ng pagtagas: kung isasaalang-alang mo ang target ng data ng pagsubok, nakikita ng modelo ang hinaharap. Dapat itong kalkulahin lamang mula sa data ng pagsasanay at maingat (sa loob ng cross-validation).
Pag-scale: ang malalaking numero ay hindi nalulula sa modelo
Ang ilang mga modelo (mga nakabatay sa distansya, mga linear na modelo, mga neural network) ay sensitibo sa laki ng mga variable. Kung ang "kita" (0-500,000) at "edad" (0-100) ay nasa parehong pattern, maaaring mangibabaw ang kita dahil lang sa mas malaki ito. Inaayos ito ng scaling. Dalawang karaniwang pamamaraan: standardisasyon (binabago ang bawat halaga sa "ilang standard deviations ang layo mula sa mean") at normalization (min-max normalization — pinipiga ang mga halaga sa hanay na 0-1). Ang mga modelong nakabatay sa puno (mga puno ng desisyon, random na kagubatan) ay hindi sensitibo sa sukat, hindi sila nangangailangan ng scaling.
Babala: Ang mga parameter ng scaling at coding (mean, standard deviation, category-mean mapping) ay dapat lamang kalkulahin mula sa data ng pagsasanay, pagkatapos ay dapat ding ilapat ang parehong sa data ng pagsubok. Ang pagsasama ng data ng pagsubok ay pagtagas at ginagawang mas maganda ang iyong modelo kaysa sa aktwal na hitsura nito.
Ang puso ng pagtagas sa feature engineering
Ang pagbuo ng tampok ay kung saan madalas na nagmumula ang pagtagas ng data. Dalawang karaniwang pagkakamali: Time leak — paggawa ng feature na kinabibilangan ng impormasyon sa hinaharap (kabilang ang mga araw pagkatapos ng araw ng pagtataya kapag kinakalkula ang "huling 30 araw na average"). Statistics leakage — pagkalkula ng feature (scaling average, target encoding value) mula sa lahat ng data bago ang training/test split. Panuntunan: alamin muna ang bawat pagbabago pagkatapos gawin ang train/test split at mula lamang sa data ng pagsasanay. Ang pinakaligtas na paraan para gawin ito nang regular ay ang paggamit ng pipeline — isang istraktura na kinokolekta ang lahat ng pagbabago sa iisang chain at inilalapat ang mga ito pagkatapos mahati.
Pamamaraan
para saan
Panganib ng pagtagas
tala
Isang mainit na pag-encode
Variable na may kaunting kategorya
mababa
Sumasabog ang laki sa maraming kategorya
Label coding
Pinagsunod-sunod na kategorya
mababa
Wala sa ayos ay nagtuturo ng maling ayos
target na pag-encode
Multi-category, malakas na signal
napakataas
Mula lang sa edukasyon, sa CV
estandardisasyon
Mga modelong linear/distansya
daluyan
Ang parameter ay nakasalalay lamang sa edukasyon
Tampok na window ng oras
serye ng oras
mataas
Idagdag ang hinaharap
tatlong mini case
Kaso 1 — Mahalagang ari-arian. Binuo ng credit team ang feature na "debt-to-income ratio" mula sa hilaw na column na "buwanang kita" at "buwanang pagbabayad ng utang." Ang nag-iisang nagmula na tampok na ito ay nagpapataas ng katumpakan ng modelo mula 71% hanggang 79%; dahil ito ay ang rate, hindi ang ganap na kita, na talagang tinutukoy ang panganib. Aralin: ang mga ratio na nabuo ng kaalaman sa domain ay malakas na signal.
Kaso 2 — Target na pagtagas sa pag-encode. Isang team ang nag-convert ng "zip code" sa isang numero na may target na pag-encode (ang average na churn rate sa lugar na iyon), ngunit ginawa ito mula sa lahat ng data bago hatiin. Ang modelo ay nagbigay ng 94% sa set ng pagsubok, bumaba sa 68% sa produksyon. Nasayang ang 6 na linggong pagsisikap. Aralin: maingat na ginagawa ang target coding, sa loob lamang ng pagsasanay.
Kaso 3 — Pag-scale ng pagkalimot. Isang analyst ang nagbigay ng kita (0-400,000) at edad ng customer (18-75) sa isang modelong nakabatay sa distansya nang walang pag-scale. Ang modelo ay tumingin halos eksklusibo sa kita, pagdurog sa epekto ng edad. Nang idinagdag ang scaling, naging makabuluhan ang pagse-segment. Aralin: hindi napapabayaan ang pag-scale sa mga modelo ng distansya/linear.
Apat na maaaring kopyahin na mga template
1) Pagbuo ng ideya ng tampok (nasa iyo ang pag-aalis):
Ang iyong tungkulin: tampok na katulong sa engineering. Aking mga df column: birth_date, order_time (timestamp), income_tl, debt_tl, lungsod, product_category. Target: "mababayaran ba ang utang" (0/1). Magmungkahi ng 15 feature na maaaring mabuo mula sa mga column na ito; tukuyin ang panganib ng pagtagas (mababa/medium/mataas) para sa bawat isa. Malinaw na markahan ang mga naglalaman ng impormasyon sa hinaharap.
2) Secure na coding (post-split):
Sumulat ng code na one-hot na nag-encode ng "lungsod" at "product_category". MAHALAGA: magkasya lang ang pag-encode sa data ng pagsasanay, pagkatapos ay ibahin ang anyo ng data ng pagsubok (na may sklearn OneHotEncoder). Ipaliwanag kung paano mo pinangangasiwaan ang hindi nakikitang kategorya (handle_unknown) sa edukasyon.
3) Leak-free na conversion gamit ang Pipeline:
I-set up ang sklearn Pipeline: ilapat ang StandardScaler sa mga numeric na column, OneHotEncoder sa mga kategoryang column, magdagdag ng classifier sa dulo. Garantiyang ang lahat ng pagbabago ay natutunan PAGKATAPOS ng train/test split at mula lamang sa pagsasanay. Ipaliwanag ang code at kung bakit ito ay walang leak.
4) tampok na window ng oras (kontrol sa pagtagas):
Bumuo ng attribute na "bilang ng mga order sa huling 30 araw" para sa bawat customer, ngunit HUWAG magsama ng data pagkatapos ng araw ng pagtataya. Ipaliwanag ang bawat linya na ang code ay hindi tumitingin sa hinaharap. Ibibigay ko ang column ng reference date.
Mahinang prompt / Malakas na prompt
Mahinang prompt:
Magdagdag ng magagandang katangian sa data na ito.
"Mabuti" ay hindi natukoy, ang target ay hindi malinaw, walang leakage control. Bumubuo ang AI ng random, marahil ay tumutulo, na mga feature.
Napakahusay na prompt:
Ang iyong tungkulin: feature engineer. Target: "churn in 30 days" (0/1),tinantyang petsa ng reference: save_date. May history ng transaksyon sa df.Gawain: Bumuo ng 8 feature, sagutin ang tanong na "Mayroon ba akong impormasyong ito sa oras ng hula" para sa BAWAT. Pagdaragdag ng petsa pagkatapos ng petsa ng sanggunian sa mga feature ng window ng oras. Isulat ang code sa isang pipeline-compatible na paraan upang maisakatuparan pagkatapos ng seksyon ng tren/pagsubok.
Dito, ang target, oras ng sanggunian at kontrol sa pagtagas ay tinukoy mula sa simula.
Mga karaniwang pagkakamali
- Pag-aaral ng pagbabago mula sa lahat ng data bago ang paghahati. Kung nakikita ng parameter ng scaling/encoding ang data ng pagsubok, magaganap ang pagtagas.
- Walang ingat na paggamit ng target coding. Ito ang pinakamakapangyarihan ngunit pinaka-leak na paraan; galing lang sa training, sa cross validation.
- Pagdaragdag ng hinaharap na may tampok na window ng oras. Kung ang pagkalkula ng "huling 30 araw" ay ipinasok pagkatapos ng araw ng pagtataya, makikita ng modelo ang hinaharap.
- Hindi kinakailangang scaling sa tree model at hindi kumpletong scaling sa linear model. Ang mga pagpapasya sa pag-scale ay ginawa ayon sa uri ng modelo.
- Pagdaragdag ng bawat mungkahi ng tampok ng AI nang walang tanong. Maaaring kasama sa mga suhestyon ang mga walang silbi at mga leaky na feature.
Tip: Sumulat ng isang tanong para sa bawat feature na nabuo mo: "Maaari ko bang kalkulahin ang halagang ito gamit ang impormasyong mayroon ako sa oras na gumawa ako ng hula?" Kung ang sagot ay hindi malinaw na "oo", huwag gamitin ang tampok. Ang nag-iisang disiplina na ito ay nag-aalis ng karamihan sa mga paglabas na nauugnay sa feature.
Sa buod
Ang feature engineering ay ang sining ng pagbuo ng mga makabuluhang signal mula sa raw data at kadalasang tinutukoy ang tagumpay ng modelo nang higit pa kaysa sa algorithm. Ang pag-encode ng mga kategorya (one-hot, label, target), scaling numericals (standardization, normalization) at paggawa ng mga derivative na feature na may kaalaman sa domain ang mga pangunahing tool. Ngunit ang yugtong ito rin ang puso ng pagtagas: ang lahat ng pagbabago ay dapat matutunan pagkatapos ng paghahati ng pagsasanay/pagsusulit at mula lamang sa data ng pagsasanay. Ang AI ay bumubuo ng maraming ideya; Ang paghatol ng tao ang nagpapakilala sa mahalaga sa mapanganib.
Gawain ng aplikasyon
Pumili ng target na variable at magdisenyo ng hindi bababa sa limang derivative na feature mula sa mga column na mayroon ka. Para sa bawat isa sa kanila, sagutin ang tanong na "magagamit ba ako sa oras ng hula" nang nakasulat at alisin ang hindi bababa sa isa bilang "mataas na panganib ng pagtagas". Pagkatapos ay i-code ang mga secure na feature sa isang pipeline na ipapatupad pagkatapos ng partition.
checklist
- [ ] Inilapat ko ba ang lahat ng pagbabago pagkatapos ng split ng tren/pagsusulit?
- [ ] Natutunan ko lang ba ang mga parameter ng scaling/encoding mula sa pagsasanay?
- [ ] Nasagot ko na ba ang tanong na "mayroon ba ako sa oras ng hula" para sa bawat tampok?
- [ ] Nag-ingat ba ako sa mga high-risk na pamamaraan tulad ng target coding?
- [ ] Nagpasya ba akong mag-scale nang naaangkop para sa uri ng modelo (puno/linear)?