Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Использование
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)
Описание
Одноклассовый метод опорных векторов в Машинном обучении
Сведения
Одноклассовый метод опорных векторов — это алгоритм для обнаружения аномалий. Цель обнаружения аномалий заключается в выявлении выбросов, не относящихся к какому-либо целевому классу. Такой тип метода опорных векторов использует только один класс, так как набор обучения содержит только примеры из целевого класса. Он выводит, какие свойства являются нормальными для объекта в целевом классе, а затем на основе таких свойств прогнозирует, какие примеры отличаются от нормальных примеров. Это полезно для обнаружения аномалий, так как нехватка примеров для обучения является неотъемлемым свойством аномалий — обычно доступно очень мало примеров вторжений в сеть, мошенничества и других типов аномального поведения.
Аргументы
formula
Формула, описанная в 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).
epsilon
Пороговое значение для схождения оптимизатора. Если улучшение между итерациями меньше, чем пороговое значение, алгоритм прекращает работу и возвращает текущую модель. Это значение должно быть больше или равно numpy.finfo(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. Этот нормализатор сохраняет степень незаполненности, сопоставляя ноль с нолем.
ml_transforms
Указывает список преобразований Машинного обучения Майкрософт, которые необходимо выполнить с данными до обучения, или значение None, если преобразования не нужно выполнять. Сведения о поддерживаемых трансформациях см. в разделах featurize_text, categorical и categorical_hash.
Эти преобразования выполняются после любых заданных преобразований Python.
Значение по умолчанию — None.
ml_transform_vars
Указывает символьный вектор имен переменных, используемых в ml_transforms, или значение None, если их не нужно использовать.
Значение по умолчанию — 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
НЕ ПОДДЕРЖИВАЕТСЯ. Именованный список с объектами, на которые можно ссылаться с помощью transforms, transform_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значении используется новая "хэш-среда" с родительским revoscalepy.baseenv.
blocks_per_read
Указывает количество считываемых блоков для каждого фрагмента данных, считываемого из источника данных.
report_progress
Целочисленное значение, указывающее уровень информирования по ходу обработки строки:
0— информирование не осуществляется.1— выводится и обновляется число обработанных записей.2— выводятся данные об обработанных записях и времени обработки.3— выводятся данные об обработанных записях и все данные о времени обработки.
verbose
Целочисленное значение, указывающее требуемый объем выходных данных.
Если задано значение 0, при вычислениях подробные выходные данные не выводятся. Целочисленные значения из диапазона от 1 до 4 позволяют увеличить объем информации.
compute_context
Задает контекст, в котором выполняются вычисления, указанные с помощью допустимого значения revoscalepy.RxComputeContext. Сейчас поддерживаются локальные контексты и контексты вычислений revoscalepy.RxInSqlServer.
ensemble
Параметры управления для сборки.
Возвращаемое значение
Объект OneClassSvm с обученной моделью.
Примечание
Этот алгоритм является однопоточным и всегда будет пытаться загрузить весь набор данных в память.
См. также
linear_kernel, polynomial_kernel, rbf_kernel, sigmoid_kernel, rx_predict.
Ссылки
Википедия: обнаружение аномалий (статья на английском языке)
New Support Vector Algorithms (Новые алгоритмы для работы с опорными векторами)
LIBSVM: A Library for Support Vector Machines (LIBSVM — библиотека для метода опорных векторов)
Пример
'''
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