crossValidate
Description
L'action %%crossValidate est le véritable juge de paix de vos modèles. Au lieu de vous fier à une seule partition d'entraînement et de test, elle découpe vos données en 'k' segments (les plis ou folds). Elle entraîne le modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). 'k' fois, en utilisant à chaque fois un segment différent pour la validation. C'est la méthode idéale pour s'assurer que votre modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). n'est pas juste un champion du 'par cœur' (overfittingSurapprentissage d'un modèle mémorisant le bruit des données d'entraînement au lieu des tendances, réduisant ainsi sa capacité de généralisation et sa précision sur de nouvelles observations.) mais qu'il sait vraiment généraliser. C'est un peu comme demander à un étudiant de passer 5 examens différents sur le même sujet pour vérifier qu'il a bien compris la logique et qu'il n'a pas simplement eu de la chance sur une question précise !
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| casOut | Désigne la table de sortie CAS qui contiendra les scores et les résultats de l'évaluation pour tous les plis. |
| kFolds | Le nombre de plis pour la validation croisée (par défaut 5). Plus il y en a, plus c'est précis, mais plus votre CPU risque de transpirer. |
| logLevel | Définit le niveau de bavardage de l'action dans le journal (0 à 3). À 3, elle vous raconte presque sa vie par pli. |
| modelType | Le type d'algorithme à valider (ex: FOREST, GRADBOOST, SVM). Assurez-vous que les trainOptions correspondent ! |
| trainOptions | C'est ici que vous glissez les paramètres spécifiques de l'action d'entraînement sous-jacente (comme les variables d'entrée et la cible). |
| parallelFolds | Si TRUE, l'action traite les plis en parallèle. C'est le mode 'Turbo' pour les serveurs avec beaucoup de coeurs. |
| seed | La graine aléatoire. Crucial pour pouvoir reproduire exactement le même découpage si vous voulez rejouer le match. |
Préparation des données
Préparation des données bancaires HMEQ
On charge la table HMEQ (Home Equity) pour prédire les défauts de crédit. Un classique indémodable.
| 1 | DATA casuser.hmeq; SET sampsio.hmeq; RUN; |
Exemples d'utilisation
Validation croisée basique d'un Arbre de Décision
On vérifie la performance d'un arbre de décision simple avec 5 plis par défaut.
| 1 | PROC CAS; mlTools.crossValidate / modelType="DECISIONTREE", trainOptions={TABLE="hmeq", target="BAD", inputs={"LOAN", "MORTDUE", "VALUE"}, nominals={"BAD"}}; RUN; |
Résultat Attendu :
Validation croisée robuste d'une Forêt Aléatoire
Ici, on monte à 10 plis, on active le parallélisme et on fixe une graine pour la reproductibilité. On précise aussi l'événement cible '1' (défaut de paiement).
| 1 | PROC CAS; mlTools.crossValidate / kFolds=10, parallelFolds=true, seed=123, modelType="FOREST", targetEvent="1", trainOptions={TABLE={caslib="casuser", name="hmeq"}, target="BAD", inputs={"LOAN", "MORTDUE", "VALUE", "YOJ", "DEROG", "DELINQ"}, nominals={"BAD"}, nTree=50}, casOut={name="cv_results", replace=true}; RUN; |