Sobes.tech
Middle+

Back leakage nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Back leakage (geri sızma) maşın öyrənməsində, test və ya təsdiqləmə məlumat dəstindən məlumatların qəsdən olmayan şəkildə təlim prosesinə daxil olmasıdır. Bu, modelin bu məlumatlara çox uyğunlaşmasına səbəb olur və test dəstindəki performans qiymətləndirmələri (keyfiyyət metrikləri) həddindən artıq qiymətləndirilmiş görünür və modelin yeni, unseen məlumatlara ümumiləşdirmə qabiliyyətini düzgün əks etdirmir.

Back leakage-in səbəbləri:

  • Məlumatların əvvəlcədən emalı (ölçüləndirmə, normallaşdırma, kateqorik xüsusiyyətlərin kodlaşdırılması) bütün məlumat dəstində, onu təlim, test və təsdiqləmə dəstlərinə bölməmişdən əvvəl həyata keçirilir.
  • Təlim dəstində statistikaların (məsələn, orta, standart sapma) test və ya təsdiqləmə dəstindən istifadə edilməsi.
  • Xüsusiyyət seçimi bütün məlumat dəstinə əsaslanır, test dəstini də əhatə edir.
  • Model və ya hiperparametrlərin əl ilə tənzimlənməsi, test dəstində müşahidə olunan performansa əsaslanır.

Back leakage-in nəticələri:

  • Modellərin etibarlı olmayan performans qiymətləndirmələri.
  • Modelin yeni məlumatlarda pis işləməsi.
  • Resursların səmərəsiz istifadəsi.

Back leakage-in qarşısını almaq üçün:

  • Hər zaman məlumatları təlim, təsdiqləmə və test dəstlərinə hər hansı bir əvvəlcədən emal və ya analizdən əvvəl bölmək.
  • Məlumatların əvvəlcədən emalını (məsələn, StandardScaler, OneHotEncoder) yalnız təlim dəstində tətbiq etmək və sonra öyrədilmiş transformatorlardan istifadə edərək təsdiqləmə və test dəstlərini transformasiya etmək.
  • Xüsusiyyət seçimini yalnız təlim dəstində həyata keçirmək.
  • Hiperparametrləri tənzimləmək və modeli qiymətləndirmək üçün təlim dəstində kross-validasiya istifadə etmək.

Yanlış ölçüləndirmə nümunəsi (back leakage-ə səbəb olur):

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# Deyək ki, df adlı DataFrame var

# Yanlış yanaşma: bütün DataFrame-i ölçüləndirmək
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)

# Sonra məlumatları bölmək
X_train, X_test, y_train, y_test = train_test_split(df_scaled, ...)

Düzgün ölçüləndirmə nümunəsi (back leakage-i qarşısını alır):

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# Deyək ki, df adlı DataFrame var

# Düzgün yanaşma: əvvəlcə məlumatları bölmək
X_train, X_test, y_train, y_test = train_test_split(df, ...)

# Sonra, yalnız təlim məlumatları üzərində scaler-i öyrət
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)

# Və, öyrədilmiş scaler-i test məlumatlarına tətbiq et
X_test_scaled = scaler.transform(X_test)

# İndi X_train_scaled və X_test_scaled modelin təlimi üçün hazırdır