Partager via


mutualInformation : mode d’informations mutuelles de sélection des caractéristiques

Mode d’information mutuelle de sélection de caractéristiques utilisé dans la transformation de sélection de caractéristiques selectFeatures.

Utilisation

  mutualInformation(numFeaturesToKeep = 1000, numBins = 256, ...)

Arguments

numFeaturesToKeep

Si le nombre de caractéristiques à conserver est spécifié comme étant n, la transformation choisit les n caractéristiques qui ont la plus grande information mutuelle avec la variable dépendante. La valeur par défaut est 1000.

numBins

Nombre maximum de classes pour les valeurs numériques. Les puissances de 2 sont recommandées. La valeur par défaut est 256.

...

Arguments supplémentaires à passer directement au moteur de calcul Microsoft.

Détails

L'information mutuelle de deux variables aléatoires X et Y mesure la dépendance mutuelle entre les variables. Formellement, l'information mutuelle peut s'écrire de la façon suivante :

I(X;Y) = E[log(p(x,y)) - log(p(x)) - log(p(y))]

où l'attente est prise sur la distribution jointe de X et Y. p(x,y) est ici la fonction de densité de probabilité jointe de X et Y ; p(x) et p(y) sont respectivement les fonctions de densité de probabilité marginale de X et Y. En général, une information mutuelle plus élevée entre la variable dépendante (ou étiquette) et une variable indépendante (ou caractéristique) signifie que l'étiquette présente une dépendance mutuelle plus élevée par rapport à cette caractéristique.

Le mode de sélection de caractéristiques d'information mutuelle sélectionne les caractéristiques en fonction de l'information mutuelle. Il conserve les numFeaturesToKeep premières caractéristiques présentant la plus grande information mutuelle avec l'étiquette.

Valeur

Une chaîne de caractères définissant le mode.

Auteur(s)

Microsoft Corporation Microsoft Technical Support

Références

Wikipedia: Mutual Information

Voir aussi

minCount selectFeatures

Exemples


 trainReviews <- data.frame(review = c( 
         "This is great",
         "I hate it",
         "Love it",
         "Do not like it",
         "Really like it",
         "I hate it",
         "I like it a lot",
         "I kind of hate it",
         "I do like it",
         "I really hate it",
         "It is very good",
         "I hate it a bunch",
         "I love it a bunch",
         "I hate it",
         "I like it very much",
         "I hate it very much.",
         "I really do love it",
         "I really do hate it",
         "Love it!",
         "Hate it!",
         "I love it",
         "I hate it",
         "I love it",
         "I hate it",
         "I love it"),
      like = c(TRUE, FALSE, TRUE, FALSE, TRUE,
         FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
         FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, 
         FALSE, TRUE, FALSE, TRUE), stringsAsFactors = FALSE
     )

     testReviews <- data.frame(review = c(
         "This is great",
         "I hate it",
         "Love it",
         "Really like it",
         "I hate it",
         "I like it a lot",
         "I love it",
         "I do like it",
         "I really hate it",
         "I love it"), stringsAsFactors = FALSE)

 # Use a categorical hash transform which generated 128 features.
 outModel1 <- rxLogisticRegression(like~reviewCatHash, data = trainReviews, l1Weight = 0, 
     mlTransforms = list(categoricalHash(vars = c(reviewCatHash = "review"), hashBits = 7)))
 summary(outModel1)

 # Apply a categorical hash transform and a count feature selection transform
 # which selects only those hash features that has value.
 outModel2 <- rxLogisticRegression(like~reviewCatHash, data = trainReviews, l1Weight = 0, 
     mlTransforms = list(
   categoricalHash(vars = c(reviewCatHash = "review"), hashBits = 7), 
   selectFeatures("reviewCatHash", mode = minCount())))
 summary(outModel2)

 # Apply a categorical hash transform and a mutual information feature selection transform
 # which selects those features appearing with at least a count of 5.
 outModel3 <- rxLogisticRegression(like~reviewCatHash, data = trainReviews, l1Weight = 0, 
     mlTransforms = list(
   categoricalHash(vars = c(reviewCatHash = "review"), hashBits = 7), 
   selectFeatures("reviewCatHash", mode = minCount(count = 5))))
 summary(outModel3)