Бөлісу құралы:


microsoftml.rx_oneclass_svm: обнаружение аномалий

Usage

microsoftml.rx_oneclass_svm(formula: str,
    data: [revoscalepy.datasource.RxDataSource.RxDataSource,
    pandas.core.frame.DataFrame], cache_size: float = 100,
    kernel: [<function linear_kernel at 0x0000007156EAC8C8>,
    <function polynomial_kernel at 0x0000007156EAC950>,
    <function rbf_kernel at 0x0000007156EAC7B8>,
    <function sigmoid_kernel at 0x0000007156EACA60>] = {'Name': 'RbfKernel',
    'Settings': {}}, epsilon: float = 0.001, nu: float = 0.1,
    shrink: bool = True, normalize: ['No', 'Warn', 'Auto',
    'Yes'] = 'Auto', ml_transforms: list = None,
    ml_transform_vars: list = None, row_selection: str = None,
    transforms: dict = None, transform_objects: dict = None,
    transform_function: str = None,
    transform_variables: list = None,
    transform_packages: list = None,
    transform_environment: dict = None, blocks_per_read: int = None,
    report_progress: int = None, verbose: int = 1,
    ensemble: microsoftml.modules.ensemble.EnsembleControl = None,
    compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None)

Description

Машинное обучение одного класса поддерживает векторные компьютеры

Сведения

Один класс SVM — это алгоритм обнаружения аномалий. Цель обнаружения аномалий заключается в выявлении выпадающих, которые не относятся к определенному целевому классу. Этот тип SVM является одним классом, так как обучающий набор содержит только примеры из целевого класса. Он определяет, какие свойства являются нормальными для объектов в целевом классе и из этих свойств предсказывает, какие примеры не являются обычными примерами. Это полезно для обнаружения аномалий, так как нехватка примеров обучения является определяющим характером аномалий: как правило, существует очень мало примеров сетевого вторжения, мошенничества или других типов аномального поведения.

Arguments

формула

Формула, как описано в revoscalepy.rx_formula. Термины взаимодействия и F() в настоящее время не поддерживаются в microsoftml.

данные

Объект источника данных или символьная строка, указывающая XDF-файл или объект кадра данных.

cache_size

Максимальный размер в МБ кэша, в который хранятся данные обучения. Увеличьте это для больших наборов обучения. Значение по умолчанию — 100 МБ.

ядро

Символьная строка, представляющая ядро, используемое для вычислений внутренних продуктов. Дополнительные сведения см. в разделе ma_kernel(). Доступны следующие варианты:

  • rbf_kernel: радиальное ядро функции. Его параметр представляетсяgamma в термине exp(-gamma|x-y|^2. Если он не указан, по умолчанию он делится 1 на количество используемых функций. Например: rbf_kernel(gamma = .1). Это значение по умолчанию.

  • linear_kernel: линейное ядро.

  • polynomial_kernel: многономиальное ядро с именами aпараметров, biasа также deg в термине (a*<x,y> + bias)^deg. Значение biasпо умолчанию 0. Степень, degзначение по умолчанию 3. Если a значение не указано, оно делится 1 на количество функций.

  • sigmoid_kernel: Сигмоидное ядро с именами gamma параметров и coef0 в термине tanh(gamma*<x,y> + coef0). gammaзначение по умолчанию, разделенное 1 на количество функций. coef0 Параметр по умолчанию0. Например: sigmoid_kernel(gamma = .1, coef0 = 0).

Эпсилон

Пороговое значение для конвергенции оптимизатора. Если улучшение между итерациями меньше порога, алгоритм останавливается и возвращает текущую модель. Значение должно быть больше или равно numpy.finfo(double).eps. Значение по умолчанию — 0.001.

Nu

Компромисс между долями выскользов и числом векторов поддержки (представлено греческой буквой nu). Должно быть от 0 до 1, обычно от 0,1 до 0,5. Значение по умолчанию — 0.1.

shrink

Использует эвристические методы сжатия, если True. В этом случае некоторые примеры будут "сократиться" во время процедуры обучения, что может ускорить обучение. Значение по умолчанию — True.

Нормализации

Указывает тип используемой автоматической нормализации:

  • "Auto": если требуется нормализация, она выполняется автоматически. Это выбор по умолчанию.

  • "No": нормализация не выполняется.

  • "Yes": выполняется нормализация.

  • "Warn": если требуется нормализация, отображается предупреждение, но нормализация не выполняется.

Нормализация перемасштабирует разнородные диапазоны данных до стандартного масштаба. Масштабирование функций обеспечивает пропорциональность расстояний между точками данных и позволяет различным методам оптимизации, таким как градиентный спуск, быстрее сходиться. Если нормализация выполняется, MaxMin используется нормализатор. Он нормализует значения в интервале [a, b] где -1 <= a <= 0 и b - a = 10 <= b <= 1 . Этот нормализатор сохраняет разреженность, сопоставляя ноль с нулем.

ml_transforms

Указывает список преобразований MicrosoftML для выполнения данных перед обучением или Нет , если преобразования не выполняются. См featurize_text. раздел , categoricalа также categorical_hashсведения о поддерживаемых преобразованиях. Эти преобразования выполняются после любых указанных преобразований Python. Значение по умолчанию — None.

ml_transform_vars

Указывает вектор символов имен переменных, используемых или ml_transformsнет , если они не используются. Значение по умолчанию — None.

row_selection

НЕ ПОДДЕРЖИВАЕТСЯ. Указывает строки (наблюдения) из набора данных, которые должны использоваться моделью с именем логической переменной из набора данных (в кавычках) или логическим выражением с помощью переменных в наборе данных. Рассмотрим пример.

  • row_selection = "old" используются только наблюдения, в которых значение переменной old равно True.

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) Использует только наблюдения, в которых значение age переменной составляет от 20 до 65, а значение log переменной income больше 10.

Выбор строки выполняется после обработки любых преобразований данных (см. аргументы transforms или transform_function). Как и во всех выражениях, row_selection можно определить вне вызова функции с помощью expression функции.

Преобразует

НЕ ПОДДЕРЖИВАЕТСЯ. Выражение формы, представляющей первый раунд преобразований переменных. Как и во всех выражениях, transforms (или row_selection) можно определить вне вызова функции с помощью expression функции.

transform_objects

НЕ ПОДДЕРЖИВАЕТСЯ. Именованный список, содержащий объекты, на которые можно ссылаться, transformstransform_functionи row_selection.

transform_function

Функция преобразования переменной.

transform_variables

Символьный вектор входных переменных набора данных, необходимых для функции преобразования.

transform_packages

НЕ ПОДДЕРЖИВАЕТСЯ. Вектор символов, указывающий дополнительные пакеты Python (за пределами указанных в RxOptions.get_option("transform_packages")) для обеспечения доступности и предварительной загрузки для использования в функциях преобразования переменных. Например, те, которые явно определены в функциях revoscalepy через их transforms аргументы или transform_function те, которые определены неявно через их formula или row_selection аргументы. Аргумент transform_packages также может быть None, указывающий, что пакеты за пределами RxOptions.get_option("transform_packages") предварительно загружены.

transform_environment

НЕ ПОДДЕРЖИВАЕТСЯ. Определяемая пользователем среда, которая служит родительской средой для всех сред, разработанных внутренне и используется для преобразования данных переменных. Если transform_environment = Noneвместо этого используется новая среда hash с родительским revoscalepy.baseenv.

blocks_per_read

Указывает количество блоков для чтения для каждого блока данных, считываемого из источника данных.

report_progress

Целочисленное значение, указывающее уровень отчетов о ходе обработки строк:

  • 0: не сообщается о ходе выполнения.

  • 1: количество обработанных строк печатается и обновляется.

  • 2: отображаются строки, обрабатываемые и сроки.

  • 3: обрабатываются строки и сообщаются все сроки.

verbose

Целочисленное значение, указывающее количество нужных выходных данных. Если 0подробные выходные данные не печатаются во время вычислений. Целые значения от 1 того, чтобы 4 обеспечить увеличение объема информации.

compute_context

Задает контекст, в котором выполняются вычисления, указанные с допустимым revoscalepy. RxComputeContext. В настоящее время локальная и revoscalepy. Поддерживаются контексты вычислений RxInSqlServer.

Ансамбль

Управление параметрами для ensembling.

Возвраты

OneClassSvm Объект с обученной моделью.

Замечание

Этот алгоритм является однопоточным и всегда пытается загрузить весь набор данных в память.

См. также

linear_kernel, , polynomial_kernelrbf_kernelsigmoid_kernel, . rx_predict

Ссылки

Википедия: обнаружение аномалий

Студия машинного обучения Microsoft Azure (классическая модель): One-Class поддерживает векторный компьютер

Оценка поддержки распространения High-Dimensional

Новые алгоритмы векторов поддержки

LIBSVM: библиотека для векторных компьютеров поддержки

Example

'''
Anomaly Detection.
'''
import numpy
import pandas
from microsoftml import rx_oneclass_svm, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset

iris = get_dataset("iris")

import sklearn
if sklearn.__version__ < "0.18":
    from sklearn.cross_validation import train_test_split
else:
    from sklearn.model_selection import train_test_split

irisdf = iris.as_df()
data_train, data_test = train_test_split(irisdf)

# Estimate a One-Class SVM model
model = rx_oneclass_svm(
            formula= "~ Sepal_Length + Sepal_Width + Petal_Length + Petal_Width",
            data=data_train)

# Add additional non-iris data to the test data set
data_test["isIris"] = 1.0
not_iris = pandas.DataFrame(data=dict(Sepal_Length=[2.5, 2.6], 
        Sepal_Width=[.75, .9], Petal_Length=[2.5, 2.5], 
        Petal_Width=[.8, .7], Species=["not iris", "not iris"], 
        isIris=[0., 0.]))

merged_test = pandas.concat([data_test, not_iris])

scoresdf = rx_predict(model, data=merged_test, extra_vars_to_write=["isIris"])

# Look at the last few observations
print(scoresdf.tail())

Выходные данные:

Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Using these libsvm parameters: svm_type=2, nu=0.1, cache_size=100, eps=0.001, shrinking=1, kernel_type=2, gamma=0.25, degree=0, coef0=0
Reconstructed gradient.
optimization finished, #iter = 15
obj = 52.905421, rho = 9.506052
nSV = 12, nBSV = 9
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0555122
Elapsed time: 00:00:00.0212389
Beginning processing data.
Rows Read: 40, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0349974
Finished writing 40 rows.
Writing completed.
    isIris     Score
35     1.0 -0.142141
36     1.0 -0.531449
37     1.0 -0.189874
38     0.0  0.635845
39     0.0  0.555602