Kuptimi i formulës së përdorur për llogaritjen e vlerave SHAP

Çmitizimi i çmitizuesit

SHAP - që qëndron për Shpjegimet shtesë të SHapley - është ndoshta gjendja e artit në shpjegueshmërinë e mësimit të makinës. Ky algoritëm u botua për herë të parë në 2017 nga Lundberg dhe Lee ("këtu" është punimi origjinal) dhe është një mënyrë e shkëlqyer për të inxhinieruar kundërt rezultatin e çdo algoritmi parashikues.

Me pak fjalë, vlerat SHAP përdoren sa herë që keni një model kompleks (mund të jetë një rritje e gradientit, një rrjet nervor ose çdo gjë që merr disa veçori si hyrje dhe prodhon disa parashikime si rezultat) dhe ju dëshironi të kuptoni se cilat vendime është modeli. duke bërë.

Modelet parashikuese i përgjigjen pyetjes "sa". SHAP i përgjigjet "pse".

Në një postim të mëparshëm ("Modelet e kutisë së zezë janë në fakt më të shpjegueshëm se një regresion logjistik") ne përdorëm SHAP për të kuptuar pse një model i rritjes së gradientit po sugjeronte që një pasagjer i Titanikut kishte pak a shumë gjasa të mbijetonte. Me fjalë të tjera, ne përdorëm SHAP për të çmitizuar një model të kutisë së zezë. Por, deri më tani, ne kemi shfrytëzuar bibliotekën SHAP për Python pa u shqetësuar shumë se si funksionon.

Mjaft për ironi, ne përdorëm SHAP si një kuti të zezë vetë!

Megjithatë, të kuptuarit e idesë pas llogaritjes së vlerave të SHAP-it është thelbësore për të kuptuar rezultatin e tyre. Kjo është arsyeja pse, në këtë postim, ne do të kalojmë në bazën teorike të Shpjegimeve të Shtesave SHapley të përshkruara në "artikull" nga Slundberg dhe Lee, dhe do të shohim pse vlerat SHAP llogariten ashtu siç llogariten.

Teoria e lojës dhe mësimi i makinerive

Vlerat SHAP bazohen në vlerat Shapley, një koncept që vjen nga teoria e lojës. Por teoria e lojës ka nevojë për të paktën dy gjëra: një lojë dhe disa lojtarë. Si zbatohet kjo për shpjegueshmërinë e mësimit të makinës? Imagjinoni që ne kemi një model parashikues, atëherë:

  • "loja" po riprodhon rezultatin e modelit,
  • "lojtarët" janë veçoritë e përfshira në model.

Ajo që bën Shapley është të përcaktojë sasinë e kontributit që çdo lojtar sjell në lojë. Ajo që bën SHAP është të përcaktojë sasinë e kontributit që çdo veçori sjell në parashikimin e bërë nga modeli.

Është e rëndësishme të theksohet se ajo që ne e quajtëm "lojë" ka të bëjë me një vëzhgim të vetëm. Një lojë: një vëzhgim. Në të vërtetë, SHAP ka të bëjë me interpretueshmërinë lokale të një modeli parashikues.

Një grup funksionesh me fuqi

Për shembull, ne do të imagjinojmë një model të mësimit të makinës (le të themi një regresion linear, por mund të jetë çdo algoritëm tjetër i mësimit të makinës) që parashikon të ardhurat e një personi duke ditur moshën, gjininë dhe punën e personit.

Vlerat e Shapley bazohen në idenë se rezultati i çdo kombinimi (ose koalicioni) të mundshëm lojtarësh duhet të merret parasysh për të përcaktuar rëndësinë e një lojtari të vetëm. Në rastin tonë, kjo korrespondon me çdo kombinim të mundshëm të funksioneve f (f shkon nga 0 në F, F duke qenë numri i të gjitha veçorive të disponueshme, në shembullin tonë 3).

Në matematikë, kjo quhet ""komplet fuqie"" dhe mund të përfaqësohet si një pemë.

Çdo nyje përfaqëson një koalicion karakteristikash. Çdo skaj përfaqëson përfshirjen e një tipari që nuk është i pranishëm në koalicionin e mëparshëm.

Ne e dimë nga matematika se kardinaliteti i një grupi fuqish është 2 ^ n, ku n është numri i elementeve të grupit origjinal. Në të vërtetë, në rastin tonë, ne kemi 2 ^ F = 2 ^ 3 = 8 koalicione të mundshme të veçorive.

Tani, SHAP kërkon të trajnojë një model të veçantë parashikues për çdo koalicion të veçantë në grupin e fuqisë, që do të thotë 2 ^ Fmodele. Sigurisht, këto modele janë plotësisht ekuivalente me njëri-tjetrin për sa i përket hiperparametrave të tyre dhe të dhënave të tyre të trajnimit (që është grupi i plotë i të dhënave). E vetmja gjë që ndryshon është grupi i veçorive të përfshira në model.

Le të imagjinojmë se ne kemi trajnuar tashmë 8 modelet tona të regresionit linear mbi të njëjtat të dhëna trajnimi. Më pas mund të bëjmë një vëzhgim të ri (le ta quajmë x₀) dhe të shohim se çfarë parashikojnë 8 modelet e ndryshme për të njëjtin vëzhgim x₀.

Këtu, çdo nyje përfaqëson një model. Por çfarë përfaqësojnë skajet?

Formula e ndërtimit të SHAP (1/2) - Kontributet margjinale të një veçorie

Siç u pa më lart, dy nyje të lidhura nga një skaj ndryshojnë vetëm për një veçori, në kuptimin që nyja e poshtme ka saktësisht të njëjtat veçori të asaj të sipërme plus një veçori shtesë që e sipërmja nuk e kishte. Prandaj, hendeku midis parashikimeve të dy nyjeve të lidhura mund të imputohet në efektin e asaj veçorie shtesë. Ky quhet “kontribut margjinal” i një veçorii.

Prandaj, çdo skaj përfaqëson kontributin margjinal të sjellë nga një veçori në një model.

Imagjinoni që jemi në nyjen 1, që është modeli pa veçori. Ky model thjesht do të parashikojë të ardhurat mesatare të të gjitha vëzhgimeve të trajnimit (50k $). Nëse kalojmë te nyja 2, e cila është një model me vetëm një veçori (Mosha), parashikimi për x₀ tani është 40 mijë $. Kjo do të thotë se njohja e moshës x₀e ka ulur parashikimin tonë me 10 mijë $.

Kështu, kontributi margjinal i sjellë nga Age në modelin që përmban vetëm moshën si veçori është -10k $. Në formulë:

Natyrisht, për të marrë efektin e përgjithshëm të moshës në modelin përfundimtar (d.m.th., vlera SHAP e moshës për x₀) është e nevojshme të merret parasysh kontributi margjinal i moshës në të gjitha modelet ku mosha është prezent. Në paraqitjen tonë të pemës, kjo do të thotë të konsiderojmë të gjitha skajet që lidhin dy nyje në mënyrë që:

  • e sipërmja nuk përmban Mosha, dhe
  • fundi përmban Mosha.

Në figurën e mëposhtme, skajet e tilla janë theksuar me të kuqe.

Të gjitha këto kontribute margjinale agregohen më pas përmes një mesatareje të ponderuar. Në formulë:

ku w₁+w2 +w₃+w₄=1.

Formula e ndërtimit të SHAP (2/2) - Peshimi i kontributeve margjinale

Por si i përcaktojmë peshat e skajeve (d.m.th. të kontributeve margjinale të Age në 4 modelet)?

Ideja është që:

  • shuma e peshave të të gjitha kontributeve margjinale për modelet 1-veçori duhet të jetë e barabartë me shumën e peshave të të gjitha kontributeve margjinale për modelet me 2 veçori dhe kështu me radhë...Me fjalë të tjera , shuma e të gjitha peshave në të njëjtën "rresht" duhet të jetë e barabartë me shumën e të gjitha peshave në çdo "rresht" tjetër.
    Në shembullin tonë, kjo nënkupton: w₁ = w2 + w₃ = w₄.
  • Të gjitha peshat e kontributeve margjinale në modelet e f-features duhet të jenë të barabarta me njëra-tjetrën, për secilin f. Me fjalë të tjera, të gjitha skajet në të njëjtin "rresht" duhet të jenë të barabarta me njëra-tjetrën.
    Në shembullin tonë, kjo do të thotë: w₂ = w₃.

Prandaj, (duke pasur parasysh se ato duhet të shumohen në 1) zgjidhja është:

  • w₁ = 1/3
  • w₂ = 1/6
  • w₃ = 1/6
  • w₄ = 1/3

Duke parë figurën e mësipërme, a mund ta merrni me mend modelin për përcaktimin e peshave në një kornizë të përgjithshme?

Spoiler: pesha e një skaji është reciproke e numrit total të skajeve në të njëjtin "rresht". Ose, në mënyrë ekuivalente, pesha e një kontributi margjinal në një model f-veçori është reciproke e numrit të kontributeve të mundshme margjinale për të gjithë funksionin f -modelet.

A ka një formulë për të llogaritur këtë? Është e drejtpërdrejtë, në fakt.

Çdo f-feature-model ka f kontribute margjinale (një për veçori), kështu që mjafton të numërohet numri i funksioneve të mundshme f -modele dhe për ta shumëzuar me f. Kështu, problemi zbret në numërimin e numrit të modeleve të mundshme f-feature, duke pasur parasysh fdhe duke ditur se numri i përgjithshëm i veçorive është F >. Ky është thjesht përkufizimi i koeficientit binomial.

Duke i bashkuar gjërat, ne kemi se numri i të gjitha kontributeve margjinale të të gjitha modeleve f-veçori - me fjalë të tjera, numri i skajeve në çdo "rresht" - është:

Mjafton të marrim reciprocitetin e kësaj dhe kemi peshën e një kontributi margjinal në një model-feature f.

Kjo është ilustruar në figurën e mëposhtme:

Tani, ne kemi të gjithë elementët e kërkuar për llogaritjen e vlerës SHAP të moshës për x₀:

Duke e mbyllur atë

Ne kemi ndërtuar formulën për llogaritjen e vlerës SHAP të moshës në një model me 3 veçori. Duke përgjithësuar çdo veçori dhe çdo F, marrim formulën e raportuar në artikull nga Slundberg dhe Lee:

E zbatuar në shembullin tonë, formula jep:

  • SHAP_Mosha (x₀) = -11,33 mijë $
  • SHAP_Gender (x₀) = -2,33k $
  • SHAP_Puna (x₀) = +46,66 mijë $

Përmbledhja e tyre jep +33k $, që është pikërisht diferenca midis prodhimit të modelit të plotë (83k $) dhe prodhimit të modelit dummy pa veçori (50k $).

Kjo është një karakteristikë themelore e vlerave SHAP:përmbledhja e vlerave SHAP të çdo veçorie të një vëzhgimi të caktuar jep ndryshimin midis parashikimit të modelit dhe modelit null (ose funksionit të tij logjistik, siç e kemi parë "këtu"). Kjo është në fakt arsyeja e emrit të tyre: Shpjegimet shtesë të SHapley.

E shkëlqyeshme! Tani mund të llogaris vetë vlerat SHAP

Gabim… Jo!

Siç u pa më lart, formula origjinale SHAP kërkon të trajnohen 2 modele ^ F. Për një model me vetëm 50 veçori, kjo do të thotë të trajnosh modele 1e15! Në të vërtetë, ndërsa F rritet, formula e parë më sipër bëhet e pazbatueshme së shpejti.

Sidoqoftë, bibliotekat si "ajo nga Slundberg" përdorin disa përafrime dhe mostra të shkëlqyera (do ta trajtoj temën në një postim vijues) që e bëjnë punën të realizueshme.