Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Логистическая регрессия машинного обучения
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
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,]