Wynik KS do oceny modelu

Apr 21 2023
Co to jest wynik KS? Jak to jest obliczane i wykorzystywane?
Czym są metryki ewaluacyjne i dlaczego potrzebujemy ewaluacji modelu? Podsumowanie Podsumowując, KS Score służy jako potężne narzędzie do ilościowego określania mocy dyskryminacyjnej modeli predykcyjnych, szczególnie w dziedzinie problemów klasyfikacji binarnej. KS Score jest bardzo pomocny w identyfikowaniu rozróżnienia między dobrami a złymi na każdym poziomie określonym przez zakresy prawdopodobieństwa.
Zdjęcie autorstwa Pietro Jenga na Unsplash

Czym są metryki ewaluacyjne i dlaczego potrzebujemy ewaluacji modelu?

  • Metryki oceny to te, które są używane do ilościowego określania wydajności modelu uczenia maszynowego.
  • Ocena modelu pozwala nam ocenić jakość prognoz i określić, czy model dobrze się uogólnia. Metryki oceny służą modelowi po jego przeszkoleniu przez podanie wyniku.
  • Ocena modelu pomaga zidentyfikować problemy z modelem i danymi. Daje możliwość optymalizacji modelu, na przykład poprzez dostrojenie hiperparametrów lub wybranie różnych cech.
  • Wreszcie, ilościowe określenie wydajności modelu zbuduje zaufanie do modelu, a interesariusze polegający na modelu przy podejmowaniu decyzji będą mogli uzyskać miarę mocy predykcyjnej modelu.
  • Wynik Kołmogorowa-Smirnowa (KS) jest sposobem na porównanie skumulowanej sumy klas dodatnich i ujemnych. Mierzy maksymalną różnicę między nimi w zakresie przewidywanych prawdopodobieństw.
  • Populacja całego zbioru danych jest dzielona na decyle na podstawie prawdopodobieństwa predykcji. Każdy decyl jest ogólnie znany jako poziom .
  • Wysoki wynik KS wskazuje, że model ma lepszą separację między klasami pozytywnymi (towary) i negatywnymi (złe) na odpowiednim poziomie. Miara ta jest szeroko stosowana w branży finansów i ryzyka kredytowego.
  • KS Score zapewnia pojedynczą wartość skalarną, którą można łatwo zinterpretować i porównać w różnych modelach.

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

      
                
Sample predictions data frame (where Label 0 —Class Good & Label 1 — Class Bad )
model_score = ModelEvaluation(predictions_df) gains_table,ks = model_score.compute_gains_table_ks()
Gains Table

Wniosek

Podsumowując, KS Score służy jako potężne narzędzie do ilościowego określania mocy dyskryminacyjnej modeli predykcyjnych, szczególnie w dziedzinie problemów klasyfikacji binarnej. KS Score jest bardzo pomocny w identyfikowaniu rozróżnienia między dobrami a złymi na każdym poziomie określonym przez zakresy prawdopodobieństwa.

Dla analityka danych kluczowe znaczenie ma zrozumienie i efektywne wykorzystanie różnych metryk oceny modeli, w tym KS Score, aby upewnić się, że modele są nie tylko dokładne, ale także solidne i niezawodne w praktyce. Włączając KS Score do własnego zestawu narzędzi do oceny, możemy podejmować bardziej świadome decyzje dotyczące wyboru modelu, udoskonalania i wdrażania, ostatecznie osiągając lepsze wyniki dla organizacji i interesariuszy.

Dziękuje za przeczytanie. Zachęcamy do dzielenia się wszelkimi opiniami.

Aby uzyskać więcej artykułów na temat nauki o danych, śledź mniehttps://medium.com/@kstarun.

Jestem również dostępny na Linkedin .