Поделиться через


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

Ссылки

Anomaly detection

Azure Machine Learning Studio (classic): One-Class Support Vector Machine

Support of a High-Dimensional Distribution

Support Vector Algorithms

for Support Vector Machines

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

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)