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.