Est-ce une bonne pratique d'ingénierie des fonctionnalités?


10

J'ai une question pratique sur l'ingénierie des fonctionnalités ... disons que je veux prédire les prix des logements en utilisant la régression logistique et en utilisant un tas de fonctionnalités, y compris le code postal. Ensuite, en vérifiant l'importance des fonctionnalités, je me rends compte que le zip est une très bonne fonctionnalité, j'ai donc décidé d'ajouter d'autres fonctionnalités basées sur le zip - par exemple, je vais au bureau du recensement et j'obtiens le revenu moyen, la population, le nombre d'écoles et le nombre des hôpitaux de chaque zip. Avec ces quatre nouvelles fonctionnalités, je trouve les performances du modèle meilleures maintenant. J'ajoute donc encore plus de fonctionnalités liées au zip ... Et ce cycle continue encore et encore. Finalement, le modèle sera dominé par ces fonctionnalités liées au zip, non?

Mes questions:

  1. Est-il sensé de les faire en premier lieu?
  2. Si oui, comment savoir quand est le bon moment pour arrêter ce cycle?
  3. Sinon, pourquoi pas?

Réponses:


6

Si vous pouvez continuer à ajouter de nouvelles données (basées sur un concept principal tel que la zone, c'est-à-dire le code postal) et que les performances de votre modèle s'améliorent, alors cela est bien sûr autorisé ... en supposant que vous ne vous souciez que du résultat final.

Il existe des mesures qui tenteront de vous guider à cet égard , comme le critère d'information Akaike (AIC) ou le critère d'information bayésien (BIC) comparable . Ceux-ci aident essentiellement à choisir un modèle en fonction de ses performances, étant punis pour tous les paramètres supplémentaires qui sont introduits et qui doivent être estimés. L'AIC ressemble à ceci:

UNEjeC=2k-2ln(L^)

où est le nombre de paramètres à estimer, c'est-à-dire le nombre de caractéristiques que vous appliquez, car chacun aura un coefficient dans votre régression logistique. est la valeur maximale du maximum de vraisemblance (équivalente au score optimal). BIC utilise simplement légèrement différemment pour punir les modèles.kL^k

Ces critères peuvent vous aider à savoir quand vous arrêter, car vous pouvez essayer des modèles avec de plus en plus de paramètres et simplement prendre le modèle qui a la meilleure valeur AIC ou BIC.

Si vous avez encore d'autres fonctionnalités dans le modèle, qui ne sont pas liées au ZIP, elles pourraient potentiellement être dépassées - cela dépend du modèle que vous utilisez. Cependant, ils peuvent également expliquer des choses sur l'ensemble de données qui ne peuvent tout simplement pas être contenues dans les informations ZIP, telles que la surface au sol d'une maison (en supposant que cela soit relativement indépendant du code postal).

Dans ce cas, vous pouvez les comparer à quelque chose comme l'analyse en composantes principales, où une collection de caractéristiques explique une dimension de la variance dans l'ensemble de données, tandis que d'autres caractéristiques expliquent une autre dimension. Donc, peu importe le nombre de fonctionnalités liées à ZIP que vous possédez, vous ne pouvez jamais expliquer l'importance de la surface au sol.


7

1) Oui, c'est logique. Essayer de créer des fonctionnalités manuellement aidera les apprenants (c'est-à-dire les modèles) à saisir plus d'informations à partir des données brutes car les données brutes ne sont pas toujours sous une forme qui se prête à l'apprentissage, mais vous pouvez toujours en construire des fonctionnalités qui le sont. La fonctionnalité que vous ajoutez est basée sur une fonctionnalité. C'est courant. Cependant, votre apprenant, la régression logistique, est sensible à la multi-colinéarité. Vous devez être prudent sur la fonctionnalité et le nombre de fonctionnalités à ajouter. Sinon, votre modèle risque de sur-équiper.

2) Puisque vous utilisez une régression logistique, vous pouvez toujours utiliser l'AIC ou effectuer un test de signification statistique, comme le test du chi carré (tester la qualité de l'ajustement) avant d'ajouter une nouvelle structure, pour décider si la distribution de la réponse est vraiment différente avec et sans cette structure. Ceci est particulièrement utile lorsque vos données sont rares. Une autre façon consiste à ajouter un terme de pénalité à votre modèle. Par exemple, régression logistique au lasso.

3) Continuer à ajouter de nouvelles fonctionnalités n'est pas toujours une bonne idée. Soyez prudent avec la malédiction de la haute dimensionnalité. Lorsque vous ajoutez une nouvelle fonctionnalité, vous ajoutez en fait une nouvelle dimension à vos données. Naïvement, on pourrait penser que la collecte de plus de fonctionnalités ne fait jamais de mal, car au pire, elles ne fournissent aucune nouvelle information sur la classe. Mais en fait, leurs avantages peuvent être contrebalancés par la malédiction de la dimensionnalité. J'espère que des choses utiles à savoir sur la session d' apprentissage automatique6 pourraient vous aider.


@ User3768495 évalue-t-il les performances du modèle hors échantillon en utilisant, par exemple, une validation croisée? Si c'est le cas, la multi-colinéarité ne devrait pas être un problème et il ne devrait pas s'inquiéter du sur-ajustement car il obtiendra une indication de sur-ajustement à travers la diminution des performances de validation.
rinspy

Le sur-ajustement @rinspy a de nombreux visages. Impliquer un ensemble de validation peut aider à éviter le sur-ajustement mais ne peut pas résoudre le problème. Par exemple, la distribution incohérente entre les données de formation (qui sont divisées en ensemble de formation et ensemble de validation) et la population réelle. Même le modèle fonctionne bien dans les données d'entraînement, il peut ne pas être généralisé à la situation réelle. La référence de ma réponse parlait également de sur-ajustement.
Fansly

Certes, mais éviter la multicolinéarité n'aidera pas à un «sur-ajustement» résultant de changements de covariables. Je dis simplement que la multicolinéarité n'est probablement pas un problème s'il souhaite construire un modèle prédictif (et non descriptif).
rinspy

Mon concept de sur-ajustement concerne le moment où un modèle ne parvient pas à se généraliser à un nouvel ensemble de données, et non avec les données de formation. Veuillez voir ceci
Fansly

4

Habituellement, plus les fonctionnalités sont riches, mieux c'est.

Une chose à garder à l'esprit, cependant, les régressions, en général, ne fonctionnent pas bien avec des données qui sont fortement corrélées (multicolinéarité). Lorsque vous développez vos fonctionnalités de cette façon, c'est quelque chose que vous voudrez peut-être garder à l'esprit.

Il y a beaucoup d'informations sur ce sujet (et des moyens potentiels d'atténuer), juste la régression Google et la multicolinéarité.

En bref,

  1. Oui. Très certainement.
  2. @ n1k31t4 a de bonnes suggestions. N'hésitez pas à générer les fonctionnalités qui, selon vous, amélioreront votre modèle, puis vous pourrez utiliser des techniques telles que PCA et d'autres techniques de sélection de fonctionnalités pour vous limiter à ce qui est important.
  3. L'autre chose à considérer est à quel point c'est pratique comme dans l'effort vs le résultat.

0

Les fonctionnalités sont les informations de votre modèle. Plus l'information sera grande, meilleure sera sa performance et sa prédiction. Plus la valeur est faible, plus il est difficile de prévoir les valeurs. Donc, le court naser est oui. Il vaut toujours la peine d'avoir autant de fonctionnalités que possible. Il y a toujours une limite à cela, car une surcharge d'informations peut également brûler votre processeur, alors faites attention au nombre de fonctionnalités qui sont conçues. De plus, les fonctionnalités inutiles ne font qu'ajouter au burnout, il est donc toujours recommandé de nettoyer certaines fonctionnalités. Toute la phase de prétraitement des données est à ce sujet.

La première réponse contient de bons détails à ce sujet. En ce qui concerne l'arrêt d'un cycle, il y a plusieurs mesures et facteurs dont vous devez être conscient pour vérifier où votre modèle a cessé de fonctionner mieux et ce sont des mesures comme le RMSE. Un exemple simple sera d'utiliser la xgboostrégression sur vos données et de spécifier le nombre de cycles. Exécutez le modèle et vous obtiendrez le RMSE pour chaque cycle. Il diminuera jusqu'à une limite après laquelle vous pourrez déduire que le modèle a atteint un plateau après un certain cycle. C'est ainsi que le réglage et l'optimisation du modèle fonctionnent.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.