Construction de fonctionnalités dans R

8

Je me demande s'il existe des algorithmes (peut-être des algorithmes génétiques) dans R pour la construction des fonctionnalités (dérivant des prédicteurs candidats à partir des prédicteurs existants)? Je pense à une routine pour tester des puissances d'ordre supérieur, des interactions, des rapports et des combinaisons linéaires et des fonctions non linéaires de variables existantes (sin, cos, atan, etc.).

Cela pourrait être une routine de filtrage ou d'encapsulation (c'est-à-dire ne pas utiliser d'algorithme d'apprentissage ou en utiliser un pour définir l'adéquation de la fonctionnalité).

Mon objectif est de «découvrir» des ratios potentiellement significatifs et similaires de prédicteurs existants.

Merci!

B_Miner
la source
Avez-vous essayé le package "Oblique.tree"? cran.r-project.org/web/packages/oblique.tree/index.html best

Réponses:

3

Il me semble que cela vous rendrait très vulnérable à des problèmes tels que la corrélation fallacieuse et même le sur-ajustement. J'oublie le nom du principe qui stipule que plus vous essayez de modèles, plus vous risquez de tomber sur un mauvais - si vous essayez autant de modèles que pour exécuter réellement un algorithme génétique, vous pouvez imaginer comment ce principe est violé.

William
la source
1
Je pense que l'OP parle d'utiliser un algorithme génétique pour extraire ou concevoir des fonctionnalités, pas pour trouver des modèles.
Aman
2

Vous pouvez vous y prendre comme ceci: à partir d'un data.frame, vous ajoutez un ensemble `` raisonnable '' de prédicteurs transformés ou même des interactions à vos données (model.matrix et similaires devraient pouvoir le retirer).

Une fois que vous y êtes, n'importe quelle méthode de sélection de variables pourrait faire l'affaire. glmnetvient à l'esprit, mais il existe de nombreuses options. Un inconvénient de cette façon de travailler est qu'il sera difficile de s'assurer que l'effet principal est dans le modèle lors d'une interaction. Peut-être que certaines formes de sélection de variables prennent en charge cela, mais je n'en connais pas de plus évidentes en dehors des procédures par étapes (qui défieraient le but).

Nick Sabbe
la source
1

Vous pouvez commencer par quelque chose de simple comme trouver des composants principaux ou des composants indépendants . Vous pouvez également devenir un peu fou et générer toutes les interactions bidirectionnelles de vos variables. De toute évidence, lorsque vous générez et testez plus de fonctionnalités, vous avez besoin d'un algorithme de sélection de fonctionnalités plus robuste contre le sur-ajustement.

Certains algorithmes de modélisation, comme MARS , les forêts aléatoires et les SVM non linéaires trouvent automatiquement certaines interactions entre vos fonctionnalités d'origine.

Zach
la source
1
(+1) Il me semble que le problème avec les RF ou les SVM (et plus généralement, toutes les méthodes d'ensemble) est que de telles interactions sont rarement interprétables de manière directe. Certaines variations autour de l'ensachage qui permettent d'effectuer une sélection de caractéristiques sur un type spécifique de prédicteurs ont été proposées, voir par exemple le paquetage logicFS .
chl