rxOneClassSvm: одноклассовый метод опорных векторов
Одноклассовый метод опорных векторов в Машинном обучении
Использование
rxOneClassSvm(formula = NULL, data, cacheSize = 100, kernel = rbfKernel(),
epsilon = 0.001, nu = 0.1, shrink = TRUE, 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 или объект кадра данных.
cacheSize
Максимальный размер кэша (в МБ), который хранит данные обучения. Увеличьте это значение для крупных наборов обучения. Значение по умолчанию — 100 МБ.
kernel
Строка символов, представляющая ядро, которое используется для вычисления внутренних продуктов. Подробные сведения см. на станице maKernel. Доступны следующие варианты:
rbfKernel()
: ядро радиальной базисной функции. Ее параметр представляетgamma
в членеexp(-gamma|x-y|^2
. Если он не указан, по умолчанию принимается значение1
, разделенное на число используемых признаков. Например,rbfKernel(gamma = .1)
. Это значение по умолчанию.linearKernel()
: линейное ядро.polynomialKernel()
: полиномиальное ядро с именами параметровa
,bias
иdeg
в члене(a*<x,y> + bias)^deg
.bias
, по умолчанию принимает значение0
. Степень,deg
, по умолчанию принимает значение3
. Еслиa
не указано, задается значение1
, разделенное на число признаков. Например,maKernelPoynomial(bias = 0, deg = `` 3)
.sigmoidKernel()
: сигмоидальное ядро с именами параметровgamma
иcoef0
в членеtanh(gamma*<x,y> + coef0)
.gamma
, по умолчанию используется значение1
, разделенное на число признаков. Параметрcoef0
по умолчанию принимает значение0
. Например,sigmoidKernel(gamma = .1, coef0 = 0)
.
epsilon
Пороговое значение для схождения оптимизатора. Если улучшение между итерациями меньше, чем пороговое значение, алгоритм прекращает работу и возвращает текущую модель. Это значение должно быть больше или равно .Machine$double.eps
. Значение по умолчанию — 0,001.
nu
Компромисс между долей выбросов и количеством опорных векторов (представлен греческой буквой ню). Он должен иметь значение от 0 до 1, обычно между 0,1 и 0,5. Значение по умолчанию — 0,1.
shrink
Если TRUE
, используется сжимающая эвристика. В этом случае некоторые примеры будут "сжаты" во время процедуры обучения, что может ускорить его. Значение по умолчанию — 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
Именованный список с объектами, на которые можно ссылаться с помощью transforms
, transformsFunc
и rowSelection
.
transformFunc
Функция преобразования переменной. Дополнительные сведения см. на странице, посвященной rxTransform.
transformVars
Символьный вектор для переменных входного набора данных, требуемый для функции преобразования. Дополнительные сведения см. на странице, посвященной rxTransform.
transformPackages
Символьный вектор, определяющий дополнительные пакеты R (за исключением пакетов, указанных в rxGetOption("transformPackages")
), которые будут доступны и предварительно загружены для использования в функциях преобразования переменных. Например, пакеты, явно определенные в функциях RevoScaleR через аргументы transforms
и transformFunc
или неявно определенные через аргументы formula
или rowSelection
. Аргумент transformPackages
также может иметь значение NULL
, указывающее на то, что пакеты, указанные за пределами rxGetOption("transformPackages")
, не будут предварительно загружаться.
transformEnvir
Определяемая пользователем среда, выступающая в роли родительской среды для всех разработанных внутренних сред и используемая для преобразования данных переменных. Если указано значение transformEnvir = NULL
, используется новая среда hash с родительской средой baseenv()
.
blocksPerRead
Указывает количество считываемых блоков для каждого фрагмента данных, считываемого из источника данных.
reportProgress
Целочисленное значение, указывающее уровень информирования по ходу обработки строки:
0
— информирование не осуществляется.1
— выводится и обновляется число обработанных записей.2
— выводятся данные об обработанных записях и времени обработки.3
— выводятся данные об обработанных записях и все данные о времени обработки.
verbose
Целочисленное значение, указывающее требуемый объем выходных данных. Если задано значение 0
, при вычислениях подробные выходные данные не выводятся. Целочисленные значения из диапазона от 1
до 4
позволяют увеличить объем информации.
computeContext
Задает контекст, в котором выполняются вычисления, указанные с помощью допустимого значения RxComputeContext. Сейчас поддерживаются локальные контексты и контексты вычислений RxInSqlServer.
ensemble
Параметры управления для сборки.
...
Дополнительные аргументы, передаваемые непосредственно в Microsoft Compute Engine.
Сведения
Цель обнаружения заключается в выявлении выбросов, не относящихся к какому-либо целевому классу. Такой тип метода опорных векторов использует только один класс, так как набор обучения содержит только примеры из целевого класса. Он выводит, какие свойства являются нормальными для объекта в целевом классе, а затем на основе таких свойств прогнозирует, какие примеры отличаются от нормальных примеров. Это полезно для обнаружения аномалий, так как нехватка примеров для обучения является неотъемлемым свойством аномалий — обычно доступно очень мало примеров вторжений в сеть, мошенничества и других типов аномального поведения.
Значение
rxOneClassSvm
— объект rxOneClassSvm
с обученной моделью.
OneClassSvm
— объект спецификации обучения класса maml
для модуля обучения одноклассового метода опорных векторов.
Примечания
Этот алгоритм является однопоточным и всегда будет пытаться загрузить весь набор данных в память.
Авторы
Корпорация Майкрософт Microsoft Technical Support
Ссылки
Azure Machine Learning Studio (classic): One-Class Support Vector Machine
Support of a High-Dimensional Distribution
См. также раздел
rbfKernel, linearKernel, polynomialKernel, sigmoidKernelrxFastTrees, rxFastForest, rxFastLinear, rxLogisticRegression, rxNeuralNet, featurizeText, categorical, categoricalHash, rxPredict.mlModel.
Примеры
# Estimate a One-Class SVM model
trainRows <- c(1:30, 51:80, 101:130)
testRows = !(1:150 %in% trainRows)
trainIris <- iris[trainRows,]
testIris <- iris[testRows,]
svmModel <- rxOneClassSvm(
formula = ~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
data = trainIris)
# Add additional non-iris data to the test data set
testIris$isIris <- 1
notIris <- data.frame(
Sepal.Length = c(2.5, 2.6),
Sepal.Width = c(.75, .9),
Petal.Length = c(2.5, 2.5),
Petal.Width = c(.8, .7),
Species = c("not iris", "not iris"),
isIris = 0)
testIris <- rbind(testIris, notIris)
scoreDF <- rxPredict(svmModel,
data = testIris, extraVarsToWrite = "isIris")
# Look at the last few observations
tail(scoreDF)
# Look at average scores conditioned by 'isIris'
rxCube(Score ~ F(isIris), data = scoreDF)