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ésentegamma
dans le termeexp(-gamma|x-y|^2
. S’il n’est pas spécifié, la valeur par défaut est1
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ètresa
,bias
etdeg
dans le terme(a*<x,y> + bias)^deg
.bias
, la valeur par défaut est0
. Degré,deg
, la valeur par défaut est3
. Si1
n’est pas spécifié, la valeur esta
divisé par le nombre de fonctionnalités utilisées. Par exemple :maKernelPoynomial(bias = 0, deg = `` 3)
.sigmoidKernel()
: noyau sigmoïde avec les nomsgamma
etcoef0
dans le termetanh(gamma*<x,y> + coef0)
.gamma
, la valeur par défaut est1
divisé par le nombre de fonctionnalités utilisées. La valeur par défaut du paramètrecoef0
est0
. 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 normaliseurMaxMin
est utilisé. Celui-ci normalise les valeurs dans un intervalle [a, b] où-1 <= a <= 0
,0 <= b <= 1
etb - 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
Azure Machine Learning Studio (classic): One-Class Support Vector Machine
Support of a High-Dimensional Distribution
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)