اهمیتهای تهی (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