Je recherche une méthode de binning optimale (discrétisation) d'une variable continue par rapport à une variable binaire de réponse (cible) donnée et avec un nombre maximum d'intervalles comme paramètre.
exemple: J'ai un ensemble d'observations de personnes avec des variables "hauteur" (numéral continu) et "has_back_pains" (binaire). Je veux discrétiser la hauteur en 3 intervalles (groupes) au plus avec une proportion différente de personnes souffrant de maux de dos, afin que l'algorithme maximise la différence entre les groupes (avec des restrictions données par exemple, que chaque intervalle ait au moins x observations).
La solution évidente à ce problème serait d'utiliser des arbres de décision (un modèle simple à une variable), mais je ne trouve aucune fonction dans R qui aurait un "nombre maximal de branches" comme paramètre - toutes divisent la variable en 2 gropus (<= x et> x). Le mineur SAS a un paramètre de "branche maximale" mais je recherche une solution non commerciale.
certaines de mes variables n'ont que quelques valeurs uniques (et pourraient être traitées comme des variables discrètes) mais je veux les discrétiser également dans un plus petit nombre d'intervalles.
La solution la plus proche de mon problème est implémentée dans le paquet smbinning dans R (qui repose sur la fonction ctree du paquet parti) mais il a deux inconvénients: il est impossible de définir le nombre d'intervalles (cependant, vous pouvez trouver un moyen de le contourner en changeant le paramètre p) et cela ne fonctionne pas lorsque le vecteur de données a moins de 10 valeurs uniques. Quoi qu'il en soit, vous pouvez voir l'exemple de sortie ici (les colonnes Cutpoint et Odds sont cruciales):
Cutpoint CntRec CntGood CntBad CntCumRec CntCumGood CntCumBad PctRec BadRate Odds LnOdds WoE IV
1 <= 272 9081 169 8912 9081 169 8912 0.1874 0.9814 0.0190 -3.9653 -0.6527 0.0596
2 <= 311 8541 246 8295 17622 415 17207 0.1762 0.9712 0.0297 -3.5181 -0.2055 0.0068
3 <= 335 2986 163 2823 20608 578 20030 0.0616 0.9454 0.0577 -2.8518 0.4608 0.0163
4 Missing 27852 1125 26727 48460 1703 46757 0.5747 0.9596 0.0421 -3.1679 0.1447 0.0129
5 Total 48460 1703 46757 NA NA NA 1.0000 0.9649 0.0364 -3.3126 0.0000 0.0956
Oh, je suis parfaitement conscient que le binning entraîne une perte d'informations et qu'il existe de meilleures méthodes, mais je vais l'utiliser pour la visualisation des données et traiter ces variables comme un facteur.
SPSS Algorithms Optimal Binning
.