rxЛогистическая регрессия: логистическая регрессия

Логистическая регрессия машинного обучения

Usage

  rxLogisticRegression(formula = NULL, data, type = c("binary", "multiClass"),
    l2Weight = 1, l1Weight = 1, optTol = 1e-07, memorySize = 20,
    initWtsScale = 0, maxIterations = 2147483647, showTrainingStats = FALSE,
    sgdInitTol = 0, trainThreads = NULL, denseOptimizer = FALSE,
    normalize = "auto", mlTransforms = NULL, mlTransformVars = NULL,
    rowSelection = NULL, transforms = NULL, transformObjects = NULL,
    transformFunc = NULL, transformVars = NULL, transformPackages = NULL,
    transformEnvir = NULL, blocksPerRead = rxGetOption("blocksPerRead"),
    reportProgress = rxGetOption("reportProgress"), verbose = 1,
    computeContext = rxGetOption("computeContext"),
    ensemble = ensembleControl(), ...)

Аргументы

formula

Формула, описанная в rxFormula. Термины взаимодействия и F() в настоящее время не поддерживаются в MicrosoftML.

data

Объект источника данных или строка символа, указывающая файл .xdf или объект кадра данных.

type

Символьная строка, указывающая тип логистической регрессии: "binary" для логистической регрессии по умолчанию для двоичной классификации или "multi" для многономиальной логистической регрессии.

l2Weight

Вес нормализации L2. Его значение должно быть больше или равно 0 , а для значения по умолчанию задано 1значение .

l1Weight

Вес нормализации L1. Его значение должно быть больше или равно 0 , а для значения по умолчанию задано 1значение .

optTol

Пороговое значение для конвергенции оптимизатора. Если улучшение между итерациями меньше порога, алгоритм останавливается и возвращает текущую модель. Меньшие значения медленнее, но более точны. Значение по умолчанию — 1e-07.

memorySize

Размер памяти для L-BFGS, указывающий количество прошлых позиций и градиентов для хранения для вычисления следующего шага. Этот параметр оптимизации ограничивает объем памяти, используемый для вычисления величины и направления следующего шага. При указании меньшей памяти обучение быстрее, но менее точно. Должно быть больше или равно 1 , и значение по умолчанию равно 20.

initWtsScale

Задает начальный диаметр весов, указывающий диапазон, от которого извлекаются значения для начальных весов. Эти весы инициализированы случайным образом из этого диапазона. Например, если указан dдиаметр, то весы равномерно распределяются между -d/2 и d/2. Значение по умолчанию — 0это значение, указывающее, что все весы инициализированы 0в .

maxIterations

Задает максимальное число итераций. После этого количества шагов алгоритм останавливается, даже если он не удовлетворяет критериям конвергенции.

showTrainingStats

Укажите TRUE , чтобы отобразить статистику обучающих данных и обученной модели; в противном случае FALSE. Значение по умолчанию — FALSE. Для получения дополнительной информации о статистике моделей см. summary.mlModel.

sgdInitTol

Задайте для поиска начальных параметров число, превышающее 0, чтобы использовать стохастический градиентный градиентный спуск (JSON). Набор значений, отличный от нуля, указывает допустимое значение, используемое ДЛЯ определения конвергенции. Значение 0 по умолчанию указывает, что СЛУЖБА УПРАВЛЕНИЯ НЕ используется.

trainThreads

Количество потоков, используемых в обучении модели. Для этого необходимо задать количество ядер на компьютере. Обратите внимание, что многопоточное использование L-BFGS пытается загрузить набор данных в память. В случае проблем с нехваткой памяти установите trainThreads для 1 отключения многопотоковой работы. Если NULL количество потоков определяется внутри. Значение по умолчанию — NULL.

denseOptimizer

Если TRUE, принудительно денификация внутренних векторов оптимизации. Если FALSEвключен оптимизатор логистической регрессии, использует разреженные или плотные внутренние состояния, как он находит подходящие. Для настройки denseOptimizer требуется, чтобы TRUE внутренний оптимизатор использовал плотное внутреннее состояние, что может помочь облегчить нагрузку на сборщик мусора для некоторых разновидностей больших проблем.

normalize

Указывает тип используемой автоматической нормализации:

  • "auto": если требуется нормализация, она выполняется автоматически. Это выбор по умолчанию.
  • "no": нормализация не выполняется.
  • "yes": выполняется нормализация.
  • "warn": если требуется нормализация, отображается предупреждение, но нормализация не выполняется.
    Нормализация перемасштабирует разнородные диапазоны данных до стандартного масштаба. Масштабирование функций обеспечивает пропорциональность расстояний между точками данных и позволяет различным методам оптимизации, таким как градиентный спуск, быстрее сходиться. Если нормализация выполняется, MaxMin используется нормализатор. Он нормализует значения в интервале [a, b], где -1 <= a <= 0и 0 <= b <= 1 и b - a = 1. Этот нормализатор сохраняет разреженность, сопоставляя ноль с нулем.

mlTransforms

Указывает список преобразований MicrosoftML, которые должны выполняться на данных до обучения или NULL если преобразования не выполняются. См. featurizeText, categorical и categoricalHash для поддерживаемых преобразований. Эти преобразования выполняются после любых заданных R-преобразований. Значение по умолчанию — NULL.

mlTransformVars

Задаёт вектор символов с именами переменных, которые будут использоваться в mlTransforms или NULL если ни одна из них не будет использоваться. Значение по умолчанию — NULL.

rowSelection

Указывает строки (наблюдения) из набора данных, которые должны использоваться моделью с именем логической переменной из набора данных (в кавычках) или логическим выражением с помощью переменных в наборе данных. Например, rowSelection = "old" будет использовать только наблюдения, в которых значение переменной old равно TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) Использует только наблюдения, в которых значение age переменной составляет от 20 до 65, а значение log переменной income больше 10. Выбор строки выполняется после обработки любых преобразований данных (см. аргументы transforms или transformFunc). Как и во всех выражениях, rowSelection можно определить вне вызова функции с помощью функции выражения.

transforms

Выражение list(name = expression, ``...) вида представляющего первый раунд преобразований переменных. Как и во всех выражениях, transforms (или rowSelection) можно определить вне вызова функции с помощью функции выражения.

transformObjects

Именованный список, содержащий объекты, на которые можно ссылаться, transformstransformsFuncи rowSelection.

transformFunc

Функция преобразования переменной. См. rxTransform для подробностей.

transformVars

Символьный вектор входных переменных набора данных, необходимых для функции преобразования. См. rxTransform для подробностей.

transformPackages

Вектор символов, указывающий дополнительные R-пакеты (вне тех, что указаны в rxGetOption("transformPackages")), которые должны быть доступны и предварительно загружены для использования в функциях преобразования переменных. Например, те, что явно определёны в RevoScaleR через transformstransformFunc их и аргументы, или те, что определены неявно через их formula или rowSelection аргументы. Аргумент transformPackages также может быть NULL, указывающим на то, что ни одна посылка вне rxGetOption("transformPackages") не загружена предварительно.

transformEnvir

Определяемая пользователем среда, которая служит родительской средой для всех сред, разработанных внутренне и используется для преобразования данных переменных. Если transformEnvir = NULL, вместо этого используется новая «хэш» среда с родителем baseenv() .

blocksPerRead

Указывает количество блоков для чтения для каждого блока данных, считываемого из источника данных.

reportProgress

Целочисленное значение, указывающее уровень отчетов о ходе обработки строк:

  • 0: не сообщается о ходе выполнения.
  • 1: количество обработанных строк печатается и обновляется.
  • 2: отображаются строки, обрабатываемые и сроки.
  • 3: обрабатываются строки и сообщаются все сроки.

verbose

Целочисленное значение, указывающее количество нужных выходных данных. Если 0подробные выходные данные не печатаются во время вычислений. Целые значения от 1 того, чтобы 4 обеспечить увеличение объема информации.

computeContext

Задаёт контекст, в котором выполняются вычисления, заданный с помощью допустимого RxComputeContext. В настоящее время поддерживаются локальные и RxInSqlServer вычислительные контексты.

ensemble

Управление параметрами для ensembling.

...

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

Сведения

Логистическая регрессия — это метод классификации, используемый для прогнозирования значения категориальной зависимой переменной от его связи с одной или несколькими независимыми переменными, предполагающей распределение логистики. Если зависимые переменные имеют только два возможных значения (успешное выполнение или сбой), то логистическая регрессия является двоичной. Если зависимые переменные имеют более двух возможных значений (тип крови с результатами диагностического теста), то логистическая регрессия является многономной.

Метод оптимизации используется rxLogisticRegression для ограниченной памяти Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Как L-BFGS, так и обычные алгоритмы BFGS используют квази-Ньютонические методы для оценки вычислительно интенсивной матрицы Гессиана в уравнении, используемом методом Ньютона для вычисления шагов. Но приближение L-BFGS использует только ограниченное количество памяти для вычисления следующего направления шага, чтобы он особенно подходит для проблем с большим количеством переменных. Параметр memorySize указывает количество прошлых позиций и градиентов для хранения для использования в вычислениях следующего шага.

Этот учащийся может использовать эластичную нормализацию сетки: линейное сочетание регуляризации L1 (lasso) и L2 (ridge). Нормализация — это метод, который может привести к возникновению проблемы, более усложняющейся путем применения ограничений, которые предоставляют информацию для дополнения данных и предотвращающей переполнение моделей с крайними значениями коэффициентов. Это может улучшить обобщение модели, изученной путем выбора оптимальной сложности в компромиссе предвзятости. Нормализация работает путем добавления штрафа, связанного с значениями коэффициентов к ошибке гипотезы. Точную модель с крайними значениями коэффициентов будет более оштрафовано, но менее точную модель с более консервативными значениями будет штрафовать меньше. Нормализация L1 и L2 имеют различные эффекты и использование, которые являются взаимодополняющими в определенных отношениях.

l1Weight: может применяться к разреженным моделям при работе с высокомерными данными. Он притягивает небольшие веса, связанные с этим признаки, которые относительно неважны, к нулю.

l2Weight: предпочтительнее для данных, которые не разрежены. Он тянет большие груза к нулю.

Добавление штрафа по гребню к регуляризации компенсирует некоторые лассо
ограничения. Она может повысить точность прогнозирования, например, если число прогнозировщиков больше размера выборки. Если x = l1Weight и y = l2Weight, ax + by = c определяет линейный диапазон терминов нормализации. Значения по умолчанию x и y являются обоими 1. Агрессивная нормализация может повредить прогнозной емкости, исключив важные переменные из модели. Поэтому выбор оптимальных значений параметров нормализации важен для производительности модели логистической регрессии.

Ценность

rxLogisticRegression: Объект rxLogisticRegression с обученной моделью.

LogisticReg: Объект спецификации для обучающегося класса maml для тренера по логистическим регулированию.

Примечания

Этот алгоритм попытается загрузить весь набор данных в память при trainThreads > 1 использовании нескольких потоков.

Автор(ы)

Microsoft CorporationMicrosoft Technical Support

References

Wikipedia: L-BFGS

regression

Training of L1-Regularized Log-Linear Models

and L2 Regularization for Machine Learning

См. также

rxFastTrees, rxFastForest, rxFastLinear, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.

Примеры


 # Estimate a logistic regression model
 logitModel <- rxLogisticRegression(isCase ~ age + parity + education + spontaneous + induced,
                   transforms = list(isCase = case == 1),
                   data = infert)
 # Print a summary of the model
 summary(logitModel)

 # Score to a data frame
 scoreDF <- rxPredict(logitModel, data = infert, 
     extraVarsToWrite = "isCase")

 # Compute and plot the Radio Operator Curve and AUC
 roc1 <- rxRoc(actualVarName = "isCase", predVarNames = "Probability", data = scoreDF) 
 plot(roc1)
 rxAuc(roc1)

 #######################################################################################
 # Multi-class logistic regression  
 testObs <- rnorm(nrow(iris)) > 0
 testIris <- iris[testObs,]
 trainIris <- iris[!testObs,]
 multiLogit <- rxLogisticRegression(
     formula = Species~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
     type = "multiClass", data = trainIris)

 # Score the model
 scoreMultiDF <- rxPredict(multiLogit, data = testIris, 
     extraVarsToWrite = "Species")    
 # Print the first rows of the data frame with scores
 head(scoreMultiDF)
 # Look at confusion matrix
 table(scoreMultiDF$Species, scoreMultiDF$PredictedLabel)

 # Look at the observations with incorrect predictions
 badPrediction = scoreMultiDF$Species != scoreMultiDF$PredictedLabel
 scoreMultiDF[badPrediction,]