Mi az a KS Score? Hogyan számítják ki és használják?
Mik azok az értékelési mutatók, és miért kell értékelnünk egy modellt?
- Az értékelési mutatók azok, amelyeket egy ML-modell teljesítményének számszerűsítésére használnak.
- A modell értékelése lehetővé teszi számunkra, hogy felmérjük az előrejelzések minőségét, és megállapítsuk, hogy a modell jól általánosít-e. Az értékelési mérőszámok a modellt a betanítás után szolgálják ki egy pontszám megadásával.
- A modellértékelés segít azonosítani a modellel és az adatokkal kapcsolatos problémákat. Lehetőséget ad a modell optimalizálására, például hiperparaméterek hangolásával vagy különböző jellemzők kiválasztásával.
- Végül a modell teljesítményének számszerűsítése megerősíti a modellbe vetett bizalmat, és a modellre támaszkodó érdekeltek a döntéshozatal során mérni tudják majd a modell előrejelző erejét.
Mi az a KS Score?
- A Kolmogorov-Smirnov (KS) pontszám a pozitív és negatív osztályok összesített összegének összehasonlításának módja. A kettő közötti maximális különbséget méri az előre jelzett valószínűségek tartományában.
- A teljes adatkészlet sokasága decilisekre van osztva az előrejelzési valószínűség alapján. Minden decilis általában Tier néven ismert.
- A magas KS-pontszám azt jelzi, hogy a modell jobban elválasztja a pozitív (jó) és a negatív (rossz) osztályokat a megfelelő szinten. Ezt a mérőszámot széles körben használják a pénzügyi és hitelkockázati ágazatban.
- A KS Score egyetlen skaláris értéket biztosít, amely könnyen értelmezhető és összehasonlítható a különböző modellek között.
Ideális esetben a maximális elválasztásnak a legkockázatosabb 3 szinten kell lennie (a felső 3 szint, ha DV = 0 rossz, vagy az alsó 3 szint, ha a DV = 1 rossz).
A KS-pontszám számítása
class ModelEvaluation: """ A class to compute the gains table for a given predictions DataFrame. Attributes ---------- predictions : pd.DataFrame A DataFrame containing 'Prediction Probability', 'True Labels' columns. Methods ------- compute_gains_table_ks(): Computes the gains table from the provided predictions DataFrame. Returns the gains table & KS value from the gains table. """ def __init__(self, predictions_df): self.predictions = predictions_df def compute_gains_table_ks(self): self.predictions['Bins'] = pd.qcut(self.predictions['Prediction_Probability'],q = 10) self.predictions['Total'] = 1 self.predictions.rename(columns={'Label':'Bads'},inplace=True) gains_table = self.predictions[['Bins', 'Bads', 'Total']].groupby(self.predictions['Bins']).sum() gains_table['Goods'] = gains_table['Total'] - gains_table['Bads'] gains_table['Cumulative_bads'] = gains_table['Bads'].cumsum() gains_table['Cumulative_goods'] = gains_table['Goods'].cumsum() gains_table['Cumulative_Bad_Rate'] = (gains_table['Cumulative_bads'] / gains_table['Cumulative_bads'].max() * 100).round(2) gains_table['Cumulative_Good_Rate'] = (gains_table['Cumulative_goods'] / gains_table['Cumulative_goods'].max() * 100).round(2) gains_table['KS'] = abs(gains_table["Cumulative_Bad_Rate"] - gains_table["Cumulative_Good_Rate"]) gains_table = gains_table[['Bads', 'Goods', 'Total', 'Cumulative_bads', 'Cumulative_goods','Cumulative_Bad_Rate', 'Cumulative_Good_Rate', 'KS']] model_ks = gains_table['KS'].max() def identify_max(series): max_value = series.max() return ['<---' if i == max_value else '' for i in series] def highlight_max(series): max_value = series.max() return ['background-color: aquamarine' if i == max_value else '' for i in series] # Apply the identify_max & highlight_max functions to the DataFrame gains_table['Max_KS'] = identify_max(gains_table['KS']) gains_table = gains_table.style.apply(highlight_max,subset=['KS']) return gains_table, model_ks
model_score = ModelEvaluation(predictions_df) gains_table,ks = model_score.compute_gains_table_ks()
Látható, hogy ennek az adatkészletnek a KS-pontszáma az ML-modellből származó előrejelzések alapján 33,69.
Következtetés
Összefoglalva, a KS Score hatékony eszköz a prediktív modellek megkülönböztető erejének számszerűsítésére, különösen a bináris osztályozási problémák területén. A KS Score nagyon hasznos az áruk és a rosszak közötti különbség meghatározásában a valószínűségi tartományok által meghatározott minden szinten.
Adattudósként kulcsfontosságú, hogy megértsük és hatékonyan használjuk a különböző modellértékelési mutatókat, beleértve a KS Score-t is, hogy a modellek ne csak pontosak, hanem robusztusak és megbízhatóak is legyenek a gyakorlatban. Ha a KS Score-t beépítjük az értékelési eszköztárba, megalapozottabb döntéseket hozhatunk a modell kiválasztásával, finomításával és telepítésével kapcsolatban, ami végső soron jobb eredményeket érhet el a szervezet és az érdekelt felek számára.
Köszönöm, hogy elolvasta. Nyugodtan ossza meg visszajelzését.
Az adattudományról szóló további cikkekért kövesse a „https://medium.com/@kstarun” címet.
A Linkedin-en is elérhető vagyok.