rxOneClassSvm : SVM OneClass

Machines à vecteurs de support (SVM) One-Class pour le Machine Learning

Utilisation

  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(), ...)

Arguments

formula

La formule telle que décrite dans rxFormula. Les termes d’interaction et F() ne sont actuellement pas pris en charge dans MicrosoftML.

data

Objet source de données ou chaîne de caractères spécifiant un fichier .xdf ou un objet de trame de données.

cacheSize

Taille maximale en Mo du cache qui stocke les données d’apprentissage. Augmentez cette valeur pour les jeux d’apprentissage volumineux. La valeur par défaut est 100 Mo.

kernel

Chaîne de caractères représentant le noyau utilisé pour calculer les produits internes. Pour plus d’informations, consultez maKernel. Les choix suivants sont disponibles :

  • rbfKernel() : noyau de fonction de base radiale. Son paramètre représente gamma dans le terme exp(-gamma|x-y|^2. S’il n’est pas spécifié, la valeur par défaut est 1 divisé par le nombre de fonctionnalités utilisées. Par exemple, rbfKernel(gamma = .1). Il s'agit de la valeur par défaut.
  • linearKernel() : noyau linéaire.
  • polynomialKernel() : noyau polynomial avec les noms de paramètres a, bias et deg dans le terme (a*<x,y> + bias)^deg. bias, la valeur par défaut est 0. Degré, deg, la valeur par défaut est 3. Si 1 n’est pas spécifié, la valeur est a divisé par le nombre de fonctionnalités utilisées. Par exemple : maKernelPoynomial(bias = 0, deg = `` 3).
  • sigmoidKernel() : noyau sigmoïde avec les noms gamma et coef0 dans le terme tanh(gamma*<x,y> + coef0). gamma, la valeur par défaut est 1 divisé par le nombre de fonctionnalités utilisées. La valeur par défaut du paramètre coef0 est 0. Par exemple, sigmoidKernel(gamma = .1, coef0 = 0).

epsilon

Seuil de convergence de l’optimiseur. Si l’amélioration entre les itérations est inférieure à ce seuil, l’algorithme s’arrête et renvoie le modèle actuel. La valeur doit être supérieure ou égale à .Machine$double.eps. La valeur par défaut est 0,001.

nu

Compromis entre la fraction de valeurs hors norme et le nombre de vecteurs de support (représenté par la lettre grecque nu). Doit être compris entre 0 et 1, généralement entre 0,1 et 0,5. La valeur par défaut est 0,1.

shrink

Utilise l’heuristique de réduction si TRUE. Dans ce cas, certains échantillons sont « réduits » au cours de la procédure d’apprentissage, ce qui peut accélérer l’apprentissage. La valeur par défaut est TRUE.

normalize

Spécifie le type de normalisation automatique utilisé :

  • "auto" : si la normalisation est nécessaire, elle est effectuée automatiquement. Il s’agit de la valeur par défaut.
  • "no" : aucune normalisation n’est effectuée.
  • "yes" : la normalisation est effectuée.
  • "warn" : si la normalisation est nécessaire, un message d’avertissement s’affiche, mais la normalisation n’est pas effectuée.
    La normalisation redimensionne les plages de données disparates à une échelle standard. La mise à l’échelle des caractéristiques garantit que les distances entre les points de données sont proportionnelles et permet aux différentes méthodes d’optimisation, comme la descente de gradient, de converger beaucoup plus rapidement. Si la normalisation est effectuée, un normaliseur MaxMin est utilisé. Celui-ci normalise les valeurs dans un intervalle [a, b] où -1 <= a <= 0, 0 <= b <= 1 et b - a = 1. Ce normaliseur conserve la densité en mappant zéro à zéro.

mlTransforms

Spécifie la liste des transformations MicrosoftML à effectuer sur les données avant l’entraînement, ou NULL si aucune transformation ne doit être effectuée. Consultez featurizeText, categorical et categoricalHash pour les transformations prises en charge. Ces transformations sont effectuées après les transformations R spécifiées. La valeur par défaut est NULL.

mlTransformVars

Spécifie un vecteur de caractères des noms de variables à utiliser dans mlTransforms ou NULL si aucun ne doit être utilisé. La valeur par défaut est NULL.

rowSelection

Spécifie les lignes (observations) du jeu de données qui doivent être utilisées par le modèle avec le nom d’une variable logique du jeu de données (entre guillemets) ou avec une expression logique utilisant des variables dans le jeu de données. Par exemple, rowSelection = "old" utilise uniquement les observations dans lesquelles la valeur de la variable old est TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) utilise uniquement les observations dans lesquelles la valeur de la variable age est comprise entre 20 et 65, et la valeur log de la variable income est supérieure à 10. La sélection de ligne est effectuée après le traitement de toutes les transformations de données (consultez les arguments transforms ou transformFunc). Comme pour toutes les expressions, rowSelection peut être défini en dehors de l’appel de fonction à l’aide de la fonction d’expression.

transforms

Expression de la forme list(name = expression, ``...) qui représente la première série de transformations de variables. Comme pour toutes les expressions, transforms (ou rowSelection) peut être défini en dehors de l’appel de fonction à l’aide de la fonction d’expression.

transformObjects

Liste nommée qui contient des objets qui peuvent être référencés par transforms, transformsFunc et rowSelection.

transformFunc

Fonction de transformation de variables. Pour plus d’informations, consultez rxTransform.

transformVars

Vecteur de caractère des variables de jeu de données d’entrée nécessaires pour la fonction de transformation. Pour plus d’informations, consultez rxTransform.

transformPackages

Vecteur de caractères spécifiant les packages R supplémentaires (en dehors de ceux spécifiés dans rxGetOption("transformPackages")) qui doivent être mis à disposition et préchargés pour être utilisés dans les fonctions de transformation de variables. Par exemple, ceux définis explicitement dans les fonctions RevoScaleR via leurs arguments transforms et transformFunc ou ceux définis implicitement via leurs arguments formula ou rowSelection. L’argument transformPackages peut également être NULL, ce qui indique qu’aucun package n’est préchargé en dehors de rxGetOption("transformPackages").

transformEnvir

Environnement défini par l’utilisateur qui sert de parent à tous les environnements développés en interne et qui est utilisé pour la transformation de données variables. Si transformEnvir = NULL, un nouvel environnement de « hachage » avec le parent baseenv() est utilisé à la place.

blocksPerRead

Spécifie le nombre de blocs à lire pour chaque segment de données lu à partir de la source de données.

reportProgress

Valeur entière qui spécifie le niveau de création de rapports sur la progression du traitement de la ligne :

  • 0 : aucune progression n’est signalée.
  • 1 : le nombre de lignes traitées est imprimé et mis à jour.
  • 2 : les lignes traitées et les minutages sont signalés.
  • 3 : les lignes traitées et l’ensemble des minutages sont signalés.

verbose

Valeur entière qui spécifie la quantité de sortie souhaitée. Si la valeur est 0, aucune sortie détaillée n’est imprimée au cours des calculs. Les valeurs entières de 1 à 4 fournissent des quantités d’informations croissantes.

computeContext

Définit le contexte dans lequel les calculs sont exécutés, spécifiés avec un contexte RxComputeContext valide. Actuellement, les contextes de calcul locaux et RxInSqlServer sont pris en charge.

ensemble

Paramètres de contrôle pour l’apprentissage ensembliste.

...

Arguments supplémentaires à passer directement au moteur de calcul Microsoft.

Détails

est d’identifier les valeurs hors norme qui n’appartiennent pas à une classe cible. Ce type de SVM est dit « One-Class » (classe unique), car le jeu d’apprentissage contient uniquement des exemples de la classe cible. Il déduit quelles propriétés sont normales pour les objets de la classe cible et, à partir de ces propriétés, prédit les exemples qui diffèrent des exemples normaux. Cela est utile pour la détection d’anomalies, car c’est le manque d’exemples d’apprentissage qui définit le caractère même des anomalies : en général, il existe très peu d’exemples d’intrusion réseau, de fraude ou d’autres types de comportements anormaux.

Valeur

rxOneClassSvm : un objet rxOneClassSvm avec le modèle entraîné.

OneClassSvm : un objet de spécification d’apprenant de classe maml pour le formateur de SVM OneClass.

Notes

Cet algorithme est à thread unique et tente toujours de charger l’intégralité du jeu de données dans la mémoire.

Auteur(s)

Microsoft Corporation Microsoft Technical Support

Références

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

Voir aussi

rbfKernel, linearKernel, polynomialKernel, sigmoidKernelrxFastTrees, rxFastForest, rxFastLinear, rxLogisticRegression, rxNeuralNet, featurizeText, categorical, categoricalHash, rxPredict.mlModel.

Exemples


 # 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)