Fontosak a szolgáltatásai? Ez nem jelenti azt, hogy jók - KDnuggets

Fontosak a szolgáltatásai? Ez nem jelenti azt, hogy jók – KDnuggets

Forrás csomópont: 2893531

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
[Kép a szerzőtől]

 

A „funkció fontossága” fogalmát széles körben használják a gépi tanulásban, mint a modell magyarázhatóságának legalapvetőbb típusát. Például a Recursive Feature Elimination (RFE) funkcióban használják, hogy a modell legkevésbé fontos jellemzőit iteratív módon eldobják.

Van azonban egy tévhit ezzel kapcsolatban.

Az a tény, hogy egy funkció fontos, nem jelenti azt, hogy előnyös a modell számára!

Valójában, amikor azt mondjuk, hogy egy jellemző fontos, ez egyszerűen azt jelenti, hogy a jellemző nagymértékben hozzájárul a modell által készített előrejelzésekhez. De ezt meg kell fontolnunk az ilyen hozzájárulás helytelen lehet.

Vegyünk egy egyszerű példát: egy adattudós véletlenül elfelejti az ügyfél-azonosítót a modelljei között. A modell az Ügyfél-azonosítót nagymértékben prediktív funkcióként használja. Következésképpen ennek a funkciónak akkor is kiemelt jelentősége lesz, ha ténylegesen rontja a modellt, mert nem tud jól működni nem látott adatokon.

A dolgok világosabbá tétele érdekében különbséget kell tennünk két fogalom között:

  • Előrejelzési hozzájárulás: az előrejelzések melyik része köszönhető a jellemzőnek; ez egyenértékű a funkció fontosságával.
  • Hozzájárulás hiba: az előrejelzési hibák melyik része a jellemzőnek a modellben való jelenléte miatt.

Ebben a cikkben látni fogjuk, hogyan kell kiszámítani ezeket a mennyiségeket, és hogyan használhatjuk fel őket, hogy értékes betekintést nyerjünk egy prediktív modellről (és javítsuk azt).

Megjegyzés: ez a cikk a regressziós esetre összpontosít. Akit jobban érdekel az osztályozási eset, akkor elolvashatja „Mely jellemzők károsak az Ön osztályozási modelljére?”

Tegyük fel, hogy felépítettünk egy modellt az emberek jövedelmének előrejelzésére munkájuk, életkoruk és nemzetiségük alapján. Most arra használjuk a modellt, hogy előrejelzéseket készítsünk három emberről.

Így megvan az alapigazság, a modell előrejelzése és az ebből eredő hiba:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Alapvető igazság, modellelőrejelzés és abszolút hiba (több ezer dollárban). [Kép a szerzőtől]

 

Ha van prediktív modellünk, mindig fel tudjuk bontani a modell előrejelzéseit az egyes jellemzők által hozott hozzájárulásokra. Ez megtehető az SHAP értékeken keresztül (ha nem ismeri az SHAP értékek működését, olvassa el a cikkemet: A SHAP értékek pontosan úgy magyarázzák, ahogyan azt kívánta, hogy valaki elmagyarázza Önnek).

Tehát tegyük fel, hogy ezek a SHAP értékek a három személyre vonatkozó modellünkhöz képest.

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
SHAP értékek a modellünk előrejelzéseihez (több ezer dollárban). [Kép a szerzőtől]

 

A SHAP értékek fő tulajdonsága, hogy additívak. Ez azt jelenti, hogy – az egyes sorok összegét véve – megkapjuk a modellünk előrejelzését az adott személyre vonatkozóan. Például, ha a második sort vesszük: 72k $ +3k $ -22k $ = 53k $, ami pontosan a modell előrejelzése a második egyedre.

A SHAP-értékek jól jelzik, mennyire fontosak az előrejelzéseink. Valójában minél magasabb az (abszolút) SHAP érték, annál nagyobb hatással van az adott egyénre vonatkozó előrejelzésre. Ne feledje, hogy abszolút SHAP értékekről beszélek, mert az előjel itt nem számít: egy jellemző ugyanolyan fontos, ha felfelé vagy lefelé tolja az előrejelzést.

Ezért egy jellemző előrejelzési hozzájárulása megegyezik az adott jellemző abszolút SHAP értékeinek átlagával. Ha az SHAP értékeket egy Pandas adatkeretben tárolja, ez olyan egyszerű, mint:

prediction_contribution = shap_values.abs().mean()

Példánkban ez az eredmény:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Előrejelzési hozzájárulás. [Kép a szerzőtől]

 

Amint látja, a munka egyértelműen a legfontosabb jellemző, mivel átlagosan 71.67 ezer dollárt tesz ki a végső előrejelzésből. Az állampolgárság és az életkor a második, illetve a harmadik legfontosabb jellemző.

Azonban az a tény, hogy egy adott funkció a végső előrejelzés egy releváns részét képezi, nem árul el semmit a funkció teljesítményéről. Ahhoz, hogy ezt a szempontot is figyelembe vesszük, ki kell számítanunk a „Hibajárulékot”.

Tegyük fel, hogy a következő kérdést szeretnénk megválaszolni: „Milyen előrejelzéseket adna a modell, ha nem rendelkezne a funkcióval munka?” A SHAP értékek megválaszolják ezt a kérdést. Valójában, mivel additívak, elég kivonni a SHAP értékeket a jellemzőhöz képest munka a modell előrejelzéseiből.

Természetesen ezt az eljárást minden funkciónál megismételhetjük. Pandákban:

y_pred_wo_feature = shap_values.apply(lambda feature: y_pred - feature)

Ez a végeredmény:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Előrejelzések, amelyeket akkor kapnánk, ha eltávolítanánk a megfelelő jellemzőt. [Kép a szerzőtől]

 

Ez azt jelenti, hogy ha nem rendelkeznénk a funkcióval munka, akkor a modell 20k $-t jósolna az első személynek, -19k $-t a másodiknak és -8k $-t a harmadiknak. Ehelyett, ha nem rendelkeznénk a funkcióval kor, a modell 73 ezer dollárt jósolna az első személynek, 50 ezer dollárt a másodiknak, és így tovább.

Amint láthatja, az egyes egyénekre vonatkozó előrejelzések nagyon eltérőek, ha különböző funkciókat távolítottunk el. Ennek következtében az előrejelzési hibák is nagyon eltérőek lennének. Könnyen kiszámolhatjuk őket:

abs_error_wo_feature = y_pred_wo_feature.apply(lambda feature: (y_true - feature).abs())

Az eredmény a következő:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Abszolút hibák, amelyeket akkor kapnánk, ha eltávolítanánk az adott funkciót. [Kép a szerzőtől]

 

Ezek azok a hibák, amelyeket akkor kapnánk, ha eltávolítanánk az adott funkciót. Intuitív módon, ha a hiba kicsi, akkor a funkció eltávolítása nem jelent problémát – sőt előnyös – a modell számára. Ha a hiba nagy, akkor a funkció eltávolítása nem jó ötlet.

De ennél többet tehetünk. Valójában ki tudjuk számítani a különbséget a teljes modell hibái és a jellemző nélkül kapott hibák között:

error_diff = abs_error_wo_feature.apply(lambda feature: abs_error - feature)

Ami:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Különbség a modell hibái és a funkció nélkül létező hibái között. [Kép a szerzőtől]

 

Ha ez a szám:

  • negatív, akkor a jellemző jelenléte az előrejelzési hiba csökkenéséhez vezet, tehát a jellemző jól működik az adott megfigyeléshez!
  • pozitív, akkor a jellemző jelenléte az előrejelzési hiba növekedéséhez vezet, tehát a jellemző rossz az adott megfigyeléshez.

Kiszámíthatjuk az „Error Contribution”-t ezeknek az értékeknek az átlagaként minden egyes jellemzőre. Pandákban:

error_contribution = error_diff.mean()

Ez a végeredmény:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Hozzájárulás hiba. [Kép a szerzőtől]

 

Ha ez az érték pozitív, akkor az azt jelenti, hogy átlagosan a jellemző jelenléte a modellben magasabb hibához vezet. Így e funkció nélkül az előrejelzés általában jobb lett volna. Más szóval, a funkció többet árt, mint használ!

Éppen ellenkezőleg, minél negatívabb ez az érték, annál előnyösebb a tulajdonság az előrejelzések szempontjából, mivel jelenléte kisebb hibákhoz vezet.

Próbáljuk meg ezeket a fogalmakat egy valós adatkészleten használni.

A továbbiakban egy innen vett adatkészletet fogok használni Pycaret (Python könyvtár az alatt MIT licensz). Az adatkészlet neve „Arany”, és pénzügyi adatok idősorait tartalmazza.

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Adatkészlet minta. A jellemzők mind százalékban vannak kifejezve, így a -4.07 -4.07%-os hozamot jelent. [Kép a szerzőtől]

 

A jellemzők a pénzügyi eszközök 22, 14, 7, illetve 1 nappal a megfigyelési időpont előtti hozamaiból állnak („T-22”, „T-14”, „T-7”, „T-1”). Íme a prediktív funkcióként használt pénzügyi eszközök kimerítő listája:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
A rendelkezésre álló eszközök listája. Minden eszköz megfigyelése a -22, -14, -7 és -1 időpontban történik. [Kép a szerzőtől]

 

Összesen 120 funkcióval rendelkezünk.

A cél az arany árfolyamának (hozam) előrejelzése 22 nappal előre ("Gold_T+22"). Vessünk egy pillantást a célváltozóra.

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
A változó hisztogramja. [Kép a szerzőtől]

 

Miután betöltöttem az adatkészletet, a következő lépéseket hajtottam végre:

  1. Véletlenszerűen ossza fel a teljes adatkészletet: a sorok 33%-a a betanítási adatkészletben, további 33%-a az érvényesítési adatkészletben, a maradék 33%-a pedig a tesztadatkészletben.
  2. Tanítson egy LightGBM regressort a képzési adatkészleten.
  3. Az előző lépésben betanított modell segítségével készítsen előrejelzéseket a betanításról, érvényesítésről és tesztadatkészletekről.
  4. Számítsa ki a betanítási, érvényesítési és tesztadatkészletek SHAP értékeit a Python „shap” könyvtár használatával.
  5. Számítsa ki az egyes jellemzők előrejelzési hozzájárulását és hibáinak hozzájárulását az egyes adatkészleteken (képzés, érvényesítés és teszt), az előző bekezdésben látott kód segítségével.

Hasonlítsuk össze a hiba- és az előrejelzési hozzájárulást a képzési adatkészletben. Szórványdiagramot fogunk használni, így a pontok a modell 120 jellemzőjét azonosítják.

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Előrejelzési hozzájárulás vs. hiba hozzájárulása (a képzési adatkészleten). [Kép a szerzőtől]

 

Erősen negatív korreláció van az előrejelzési hozzájárulás és a hibás hozzájárulás között a képzési készletben.

És ennek van értelme: mivel a modell tanul a betanítási adatkészletből, hajlamos nagy jelentőséget (azaz magas előrejelzési hozzájárulást) tulajdonítani azoknak a jellemzőknek, amelyek az előrejelzési hiba nagymértékű csökkenéséhez vezetnek (azaz erősen negatív hiba-hozzájárulás).

De ez nem sokat ad a tudásunkhoz, igaz?

Valóban, ami igazán számít számunkra, az az érvényesítési adatkészlet. Az érvényesítési adatkészlet valójában a legjobb proxy, amellyel rendelkezhetünk arra vonatkozóan, hogy szolgáltatásaink hogyan fognak viselkedni az új adatokon. Tehát végezzük el ugyanazt az összehasonlítást az érvényesítési halmazon.

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
Előrejelzési hozzájárulás vs. hiba hozzájárulása (az érvényesítési adatkészleten). [Kép a szerzőtől]

 

Ebből a cselekményből sokkal érdekesebb információkat nyerhetünk ki.

A diagram jobb alsó részén található jellemzők azok, amelyeknek a modellünk helyesen nagy jelentőséget tulajdonít, mivel valójában csökkentik az előrejelzési hibát.

Azt is vegyük figyelembe, hogy a „Gold_T-22” (az arany visszatérése 22 nappal a megfigyelési időszak előtt) nagyon jól működik ahhoz képest, hogy a modell milyen fontosságot tulajdonít neki. Ez azt jelenti ez a funkció valószínűleg nem megfelelő. És ez az információ különösen érdekes, mivel az arany az az eszköz, amelyet meg akarunk jósolni („Arany_T+22”).

Másrészt, azok a jellemzők, amelyeknél a hibajelenség 0 felett van, rontják előrejelzéseinket. Például az „US Bond ETF_T-1” átlagosan 0.092%-kal változtatja meg a modell előrejelzését (előrejelzési hozzájárulás), de ez arra készteti a modellt, hogy átlagosan 0.013%-kal rosszabb előrejelzést adjon (hibajárulék), mint e funkció nélkül lett volna. .

Azt feltételezhetjük az összes magas hibajelenség (a jóslati hozzájárulásukhoz képest) valószínűleg túlzottan illeszkedik vagy általában eltérő viselkedést mutatnak a képzési halmazban és az érvényesítési halmazban.

Nézzük meg, mely funkciók rendelkeznek a legnagyobb hibajelenséggel.

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
A funkciók a hiba-hozzájárulás csökkenésével rendezve. [Kép a szerzőtől]

 

És most a legalacsonyabb hibakibocsátással járó funkciók:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
A funkciók a hibajavítás növelésével rendezve. [Kép a szerzőtől]

 

Érdekes módon megfigyelhetjük, hogy minden nagyobb hibajelenség relatív a T-1-hez (1 nappal a megfigyelési pillanat előtt), míg szinte az összes kisebb hiba-hozzájárulású jellemző a T-22-hez (22 nappal a megfigyelési pillanat előtt) ).

Ez azt látszik jelezni a legújabb jellemzők hajlamosak a túlillesztésre, míg az időben távolabbi jellemzők jobban általánosíthatók.

Vegye figyelembe, hogy az Error Contribution nélkül soha nem ismerhettük volna meg ezt a betekintést.

A hagyományos rekurzív jellemzők kiküszöbölési (RFE) módszerek a lényegtelen jellemzők eltávolításán alapulnak. Ez egyenértékű a funkciók eltávolításával először egy kis előrejelzési hozzájárulással.

Az előző bekezdésben elmondottak alapján azonban ésszerűbb lenne először azokat a funkciókat eltávolítani, amelyeknél a legnagyobb hibajelenség jár.

Annak ellenőrzésére, hogy megérzéseink beigazolódtak-e, hasonlítsuk össze a két megközelítést:

  • Hagyományos RFE: először távolítsa el a haszontalan funkciókat (a legalacsonyabb előrejelzési hozzájárulás).
  • RFE-nk: káros tulajdonságok eltávolítása első (legmagasabb hibajelenség).

Lássuk az érvényesítési halmaz eredményeit:

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
A két stratégia átlagos abszolút hibája az érvényesítési halmazban. [Kép a szerzőtől]

 

Az egyes módszerek legjobb iterációját bekarikáztuk: ez a hagyományos RFE-hez (kék vonal) 19 jellemzőt, illetve az RFE-hez (narancssárga vonal) 17 jellemzőt tartalmazó modell.

Általánosságban úgy tűnik, hogy a módszerünk jól működik: a legmagasabb hiba-hozzájárulású funkció eltávolítása következetesen kisebb MAE-t eredményez, mint a legmagasabb előrejelzési hozzájárulással rendelkező jellemző eltávolítása.

Azonban azt gondolhatja, hogy ez csak azért működik jól, mert túlillesztettük az érvényesítési készletet. Végül is az érdekel minket, hogy milyen eredményt kapunk a tesztkészleten.

Lássuk tehát ugyanazt az összehasonlítást a tesztkészleten.

 

Fontosak a szolgáltatásai? Ez nem azt jelenti, hogy jók
A tesztkészlet két stratégiájának átlagos abszolút hibája. [Kép a szerzőtől]

 

Az eredmény hasonló az előzőhöz. Még ha kisebb a távolság is a két vonal között, a legmagasabb hiba-hozzájáruló eltávolításával kapott MAE egyértelműen jobb, mint a legalacsonyabb előrejelzési közreműködő eltávolításával kapott MAE.

Mivel a legkisebb MAE-hez vezető modelleket választottuk ki a validációs halmazból, lássuk ezek eredményét a tesztkészleten:

  • RFE-előrejelzési hozzájárulás (19 jellemző). MAE a tesztkészleten: 2.04.
  • RFE-hiba hozzájárulás (17 jellemző). MAE a tesztkészleten: 1.94.

Tehát a módszerünkkel a legjobb MAE 5%-kal jobb a hagyományos RFE-hez képest!

A funkció fontosságának fogalma alapvető szerepet játszik a gépi tanulásban. A „fontosság” fogalmát azonban gyakran összetévesztik a „jósággal”.

A két szempont megkülönböztetése érdekében két fogalmat vezettünk be: az előrejelzési hozzájárulást és a hibás hozzájárulást. Mindkét koncepció az érvényesítési adatkészlet SHAP értékein alapul, és a cikkben láthattuk a Python-kódot a kiszámításához.

Kipróbáltuk őket egy valós pénzügyi adathalmazon is (amelyben a feladat az arany árának előrejelzése), és bebizonyítottuk, hogy a hiba-hozzájáruláson alapuló rekurzív jellemzők kiküszöbölése 5%-kal jobb átlagos abszolút hibához vezet a predikciós hozzájáruláson alapuló hagyományos RFE-hez képest.

A cikkhez használt összes kód megtalálható a ezt a füzetet.

Köszönöm hogy elolvastad!

 
 
Samuele Mazzanti a Jakala vezető adatkutatója, jelenleg Rómában él. Statisztika szakon szerzett diplomát, és fő kutatási területe az ipari gépi tanulási alkalmazásokhoz kapcsolódik. Ő is szabadúszó tartalomkészítő.

 
eredeti. Engedéllyel újra közzétéve.
 

Időbélyeg:

Még több KDnuggets