mutualInformation: режим взаимной информации о выборе признаков

Режим взаимной информации, используемый в преобразовании выбора функций selectFeatures.

Использование

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

Аргументы

numFeaturesToKeep

Если число сохраняемых признаков указано как n, преобразование отбирает n признаков с самым большим объемом взаимной информации с зависимой переменной. Значение по умолчанию ― 1000.

numBins

Максимальное количество интервалов для числовых значений. Рекомендуется использовать степени двойки. Значение по умолчанию — 256.

...

Дополнительные аргументы, передаваемые непосредственно в Microsoft Compute Engine.

Сведения

Взаимная информация двух случайных переменных X и Y — это мера взаимной зависимости между переменными. Формально взаимную информацию можно записать так:

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

где ожидание сменяется многомерным распределением X и Y. Здесь p(x,y) является функцией плотности суммарной вероятности X и Y, а p(x) и p(y) — функциями плотности безусловной вероятности X и Y соответственно. Как правило, большой объем взаимной информации между зависимой переменной (или меткой) и независимой переменной (или признаком) означает, что метка имеет усиленную взаимную зависимость над таким признаком.

Режим выборки признаков со взаимной информацией отбирает признаки на основе взаимной информации. Он сохраняет первые numFeaturesToKeep признаков с самым большим объемом взаимной информации с меткой.

Значение

Строка символов, определяющая режим.

Авторы

Корпорация Майкрософт Microsoft Technical Support

Ссылки

Wikipedia: Mutual Information

См. также раздел

minCountselectFeatures

Примеры


 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)