Conséquence de la mise à l'échelle des fonctionnalités

11

J'utilise actuellement SVM et j'adapte mes fonctionnalités d'entraînement à la plage de [0,1]. J'ai d'abord ajusté / transformé mon ensemble d'entraînement, puis j'applique la même transformation à mon ensemble de test. Par exemple:

    ### Configure transformation and apply to training set
    min_max_scaler = MinMaxScaler(feature_range=(0, 1))
    X_train = min_max_scaler.fit_transform(X_train)

    ### Perform transformation on testing set
    X_test = min_max_scaler.transform(X_test)

Supposons qu'une caractéristique donnée de l'ensemble d'apprentissage a une plage de [0,100] et que la même caractéristique de l'ensemble de test a une plage de [-10,120]. Dans l'ensemble d'apprentissage, cette fonctionnalité sera mise à l'échelle de manière appropriée à [0,1], tandis que dans l'ensemble de test, cette fonctionnalité sera mise à l'échelle dans une plage en dehors de la première spécifiée, quelque chose comme [-0,1,1,2].

Je me demandais quelles étaient les conséquences des fonctionnalités de l'ensemble de test hors de portée de celles utilisées pour former le modèle? Est-ce un problème?

mike1886
la source

Réponses:

6

Dans chaque classe, vous aurez des distributions de valeurs pour les fonctionnalités. Ce n'est pas en soi un motif de préoccupation.

D'un point de vue légèrement théorique, vous pouvez vous demander pourquoi vous devez mettre à l'échelle vos fonctionnalités et pourquoi vous devez les mettre à l'échelle exactement de la manière choisie.
Une raison peut être que votre algorithme d'entraînement particulier est connu pour converger plus rapidement (mieux) avec des valeurs autour de 0 - 1 qu'avec des fonctionnalités qui couvrent d'autres ordres de grandeur. Dans ce cas, vous allez probablement bien. Je suppose que votre SVM est très bien: vous voulez éviter les nombres trop grands à cause du produit interne, mais un maximum de 1,2 contre un maximum de 1,0 ne fera pas beaucoup de différence.
(OTOH, si par exemple vous connaissiez votre algorithme pour ne pas accepter les valeurs négatives, vous auriez évidemment des problèmes.)

La question pratique est de savoir si votre modèle fonctionne bien pour les cas qui sont légèrement hors de la plage couverte par la formation. Je pense que cela ne peut être mieux et peut-être résolu qu'en testant avec de tels cas / en inspectant les résultats des tests pour une baisse des performances des cas en dehors du domaine de formation. Il s'agit d'une préoccupation valable et son examen ferait partie de la validation de votre modèle.

L'observation des différences de taille que vous décrivez est à mon humble avis une raison d'examiner de près la stabilité du modèle.

cbeleites mécontents de SX
la source
7

C'était un commentaire mais c'est trop long.

Le fait que votre ensemble de tests ait une plage différente peut être un signe que l'ensemble d'entraînement n'est pas une bonne représentation de l'ensemble de tests. Cependant, si la différence est vraiment faible comme dans votre exemple, il est probable que cela n'affectera pas vos prévisions. Malheureusement, je ne pense pas avoir de bonnes raisons de penser que cela n'affectera en aucun cas un SVM.

Notez que la justification de l'utilisation de MinMaxScalar est (selon la documentation):

La motivation à utiliser cette mise à l'échelle inclut la robustesse à de très petits écarts-types de fonctionnalités et la préservation de zéro entrées dans des données éparses.

Par conséquent, il est important pour vous de vous assurer que vos données correspondent à ce cas.

Si vous voulez vraiment avoir une plage de différences, vous devriez preprocessing.scaleplutôt utiliser une standardisation standard (comme ).

Robert Smith
la source
Salut Robert, merci pour la réponse! Bon point sur la représentation de l'ensemble de formation / test, mais ce sont des données de série chronologique, donc à mesure que de nouvelles données arrivent, je ne peux pas garantir que les valeurs seront similaires dans leur gamme à ce qu'elles étaient auparavant. J'ai le même sentiment exact que vous que je n'ai aucune bonne raison de penser que cela n'affectera en aucun cas un SVM.
mike1886
Avez-vous comparé les prévisions à l'aide de MinMaxScaler et de la normalisation?
Robert Smith
J'ai et les résultats sont similaires, mais cela ne me dit pas vraiment si les choses tournent mal avec le MinMaxScalar.
mike1886
Sûr. Dans tous les cas, il serait préférable d'utiliser la normalisation si vous n'obtenez pas quelque chose de précieux MinMaxScaler.
Robert Smith