Gekissimo.net - Opi ansaitsemaan rahaa webilläsi Internetissä!

Opas ominaisuuksien tärkeyden selittämiseen neuroverkoissa SHAP:n avulla

Seuraava artikkeli auttaa sinua: Opas ominaisuuksien tärkeyden selittämiseen neuroverkoissa SHAP:n avulla

SHAP-arvot (SHapley Additive ExPlanations) on mahtava työkalu monimutkaisten hermoverkkomallien ja muiden koneoppimismallien, kuten päätöspuiden ja satunnaisten metsien ymmärtämiseen. Pohjimmiltaan se näyttää visuaalisesti, mikä ominaisuus on tärkeä ennustamisen kannalta. Tässä artikkelissa ymmärrämme SHAP-arvot, miksi se on tärkeä työkalu hermoverkkomallien tulkinnassa, ja lopuksi toteutamme SHAPS-arvot neuroverkkojen tulkitsemiseen. Tärkeimmät tässä artikkelissa käsiteltävät kohdat on lueteltu alla.

Sisällysluettelo

  1. Johdatus SHAP-arvoon
  2. SHAP-arvojen merkitys
  3. Neuroverkkojen SHAP-arvojen laskeminen.

Ymmärretään ensin SHAPin ominaisuudet.

Johdatus SHAP-arvoon

SHAP-arvo on todellinen läpimurtotyökalu koneoppimisen tulkinnassa. SHAP-arvo voi toimia sekä regressio- että luokitteluongelmissa. Toimii myös erilaisissa koneoppimismalleissa, kuten logistinen regressio, SVM, puupohjaiset mallit ja syväoppimismallit, kuten neuroverkot.

Regressioongelmassa, vaikka ominaisuudet korreloisivatkin, SHAP-arvo voi määrittää ominaisuuden tärkeyden oikein. Siksi jokaisella ML-kehittäjällä pitäisi olla tämä työkalu osaamisvalikoimassaan edustamaan mallin tuloksia.

Etsitkö täydellistä arkistoa tietotieteessä käytettävistä Python-kirjastoista, katso tästä.

SHAP-arvojen merkitys

Koneoppimismallien käyttöönoton jälkeen seuraava askel on mallin analysointi. SHAP-arvo auttaa valitsemaan, mikä ominaisuus on tärkeä ja mikä hyödytön piirtämällä kaavioita. SHAP-arvosta tuli kuuluisa työkalu hyvin lyhyessä ajassa, koska ennen tulkintaa oli vain taulukkomuodossa, joten tuloksen saaminen oli hankalaa, mutta ominaisuuden tärkeyden visuaalisessa esityksessä saamme tuloksen ensisilmäyksellä.

Neuroverkkojen SHAP-arvojen laskeminen

Tässä osiossa toteutamme hermoverkon ja laskemme sitten SHAP-arvon.

Ensinnäkin asenna shap value -paketti ympäristöösi.

(Huomaa: käyttöönotto tehty google colabissa)

!pip install shap

Lataa tärkeitä kirjastoja, jotka auttavat meitä toteuttamaan neuroverkkoja, piirtämään kaavioita ja laskelmia.

#load libraries tuonti tensorflow muodossa tf kohteesta sklearn.model_selection tuonti train_test_split tuonti matplotlib.pyplot muodossa plt plt.style.use(‘fivethirtyeight’) tuonti seaborn as sns tuonti matplotlib.pyplot muodossa plt tuonti pandat pd tuonti numpy as np tuonti sklearn tuonti lifelines import shap # Tämä asettaa yhteisen koon kaikille piirtämillemme hahmoille. plt.rcParams[‘figure.figsize’] = [10, 7]

🔥 Empfohlen:  Globle Vastaa tänään! Daily Global Online Game Solution 2023

Nyt tuomme MachineHackin Weekend-hackathonista otetut tietomme panda DataFrameen. Tavoitemuuttujamme on ”IsUnderRisk”, jossa 1 tarkoittaa riskin alaista, 0 tarkoittaa, ettei riski ole.

df = pd.read_csv(‘/content/Train.csv’) df

Tiedoilla ei ole ongelmaa, valitsen tietoisesti nämä tiedot, koska esikäsittely ei ole motiivimme. Joten muunnan tietokehyksen suoraan taulukoksi, jotta se voi siirtyä hermoverkkoon.

#muuntaa tiedot taulukkotietojoukoksi = df.values ​​-tietojoukko

Valitse X- ja y-arvot

X = tietojoukko[:, 0:7]
y = tietojoukko[:, 7]

Tallenna kaikki ominaisuuksien nimet taulukkoon ja tallenna ne “ominaisuudet”-muuttujaan

ominaisuudet = [‘City’, ‘Location_Score’, ‘Internal_Audit_Score’,
‘External_Audit_Score’, ‘Fin_Score’, ‘Loss_score’, ‘Past_Results’
]

Muunna arvot vakiomuotoon

#prosessoi sklearnin tiedot.preprocessing tuonti StandardScaler scaler = StandardScaler() X_scale = scaler.fit_transform(X) X_scale

Tietojen jakaminen harjoitteluun ja testaukseen suhteessa 80 : 20

#jaa tiedot 80 % harjoittelusta ja 20 % testauksesta X_train, X_test, y_train, y_test = train_test_split(X_scale, y, test_size=0,2, random_state = 4)

Mallin rakentaminen ja kokoaminen

#Rakenna mallimalli = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation=’relu’),
tf.keras.layers.Dense(256, activation=’relu’),
tf.keras.layers.Dense(256, activation=’relu’),
tf.keras.layers.Dense(1, activation=’sigmoid’) # 1 because its a binary classification
]) #Käännä malli malli.compile(häviö = tf.keras.losses.binary_crossentropy, optimoija = tf.keras.optimizers.Adam(lr = 0.02), metrics = [
tf.keras.metrics.BinaryAccuracy(name=”accuracy”),
tf.keras.metrics.Precision(name=”precision”),
tf.keras.metrics.Recall(name=”recall”)
]
) hist = malli.fit(X_train, y_train, epochs=100)

Nyt alamme laskea muotoarvoja. Aloita määrittämällä selittäjä, ja toisella rivillä olemme laskeneet shap-arvot. Huomaa, että shap-arvon laskenta on erittäin hidasta, joten varmista ennen sen käyttöönottoa, että se vie paljon aikaa, testitiedoissani on vain 109 riviä, joten minun ei tarvitse huolehtia. Kun olet suorittanut alla olevan koodin, näet edistymispalkin.

e = muoto.KernelExplainer(malli, X_train) shap_values ​​= e.shap_values(X_test)

Voimme käyttää muotoiltuja arvoja mallimme tulkitsemiseen.

shap.initjs() # visualisoi ensimmäisen ennusteen selityksen voimakaaviolla shap.force_plot(e.expected_value[0]muoto_arvot[0][0]ominaisuudet = ominaisuudet)

Voimme käyttää muotoiltuja arvoja mallimme tulkitsemiseen. ‘force_plot’ näyttää, kuinka kukin ominaisuus vaikuttaa ulostuloon. ‘External_Audit_Score’, ‘Internal_Audit_Score’ ja ‘Fin_Score’ ovat eniten vaikuttaneet ennusteiden tekemiseen.

shap.summary_plot(shap_values[0]X_test, feature_names=features)

Sivuväripalkki korkeasta matalaan ilmaisee ominaisuuden arvon, ja x-akselilla kertoo riskin, positiivinen puoli kertoo riskin olemassaolosta ja negatiivinen puoli kertoo, että riskiä ei ole. Itse asiassa negatiivinen puoli on 0 ja positiivinen puoli on 1.

🔥 Empfohlen:  Opas aikasarjan ennustamiseen Metan profeettatyökalupakin avulla

Joten alhainen arvo “internal_audit_score” määrittää, ettei riskiä ole, ja korkeampi arvo määrittää, että riski on olemassa. Mutta katso, että “Location_Score” korkea arvo määrittää, ettei riskiä ole, ja pieni arvo määrittää, ettei riskiä ole. Ominaisuudet on lajiteltu niiden merkityksen mukaan tiedoissa. Voimme nähdä sen “internal_audit_score” on tärkein ominaisuus.

Viimeiset sanat

Aloitamme arvon muokkaamisen johdannosta ja ymmärrämme, miksi tämä työkalu on erittäin tärkeä ML-mallien tulkinnassa. Sitten lopuksi näimme käytännössä kuinka muotoarvo tekee elämästä niin helppoa ML-mallien tulkinnassa.

Viitteet

  1. Luokittele jäsenneltyä dataa ominaisuussarakkeiden avulla
  2. SHAP:n virallinen Git-Hub-arkisto
  3. Linkki yllä oleviin koodeihin