Machine Learning

اهمیت‌های تهی (null importances): اهمیت واقعاً معناداره؟

پنجاه مدل که روی یه هدفِ به‌هم‌ریخته آموزش دیدن، توزیع تهیِ اهمیتِ هر feature رو می‌سازن: فقط اهمیت واقعی‌ای که از صدک 95 این توزیع تهی رد بشه، یه سیگنال واقعی رو ثابت می‌کنه.

کاربرد

لو دادن featureهای پرکاردینالیتی که حتی وقتی هدف تصادفیه هم مهم به نظر می‌رسن (ID، کدهای ریز).

پیش‌نیازها

lightgbm, pandas, numpy

Python
import numpy as np
import pandas as pd
from lightgbm import LGBMClassifier

def importances(X, y_arr, seed=42):
    m = LGBMClassifier(n_estimators=200, random_state=seed, verbose=-1)
    return m.fit(X, y_arr).feature_importances_

imp_reelle = importances(X_train, y_train.values)

rng = np.random.default_rng(0)
null_imps = np.array([
    importances(X_train, rng.permutation(y_train.values), seed=i)
    for i in range(50)
])  # 50 modèles sur cible mélangée

p95_null = np.percentile(null_imps, 95, axis=0)
bilan = pd.DataFrame({
    "imp_reelle": imp_reelle,
    "p95_null": p95_null,
    "significative": imp_reelle > p95_null,
}, index=X_train.columns).sort_values("imp_reelle", ascending=False)
print(bilan.head(6).round(1).to_string())
print("features significatives :", int(bilan["significative"].sum()))

نتیجه

                imp_reelle  p95_null  significative
nb_incidents        1842.0     201.4           True
montant_moy         1311.0     188.2           True
anciennete           987.0     214.7           True
code_region          611.0     688.9          False
freq_connexion       604.0     177.3           True
age                  371.0     169.8           True
features significatives : 9

code_region a une grosse importance MÊME quand la cible est mélangée
(pure cardinalité) : son score réel ne prouve donc rien — retirée.
C'est le piège que l'importance native seule ne détecte jamais.
Null importanceSignificativitéSélection de features

اسنیپت‌های مرتبط

بازگشت به آزمایشگاه داده