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
儲存訓練資料的快取最大大小(MB)。 對於大型訓練組,請增加這個比例。 預設值是 100 MB。
核心
一個代表用於計算內積的核心的字串。 如需詳細資訊,請參閱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:S形核,參數名稱gammacoef0為 ,項為tanh(gamma*<x,y> + coef0)。gamma預設為除1以特徵數。 參數coef0預設為0。 例如:sigmoid_kernel(gamma = .1, coef0 = 0)。
伊普西龍
優化器收斂的門檻。 若迭代間的改進低於閾值,演算法會停止並回傳當前模型。 該值必須大於或等於 numpy.finfo(double).eps。 預設值為 0.001。
努
離群值比例與支撐向量數量(以希臘字母 nu 表示)之間的權衡。 必須介於0到1之間,通常介於0.1到0.5之間。 預設值為 0.1。
shrink
若 True,則使用收縮啟發式 在這種情況下,部分樣本會在訓練過程中被「縮小」,這可能會加速訓練。 預設值是 True。
正常化
指定所使用的自動正規化類型:
"Auto":若需要正規化,則會自動執行。 這是預設的選擇。"No":不進行正規化。"Yes":進行正規化。"Warn":若需要正規化,會顯示警告訊息,但不會執行正規化。
正規化將不同資料範圍重新縮放到標準尺度。 特徵縮放確保資料點間距離成比例,並使梯度下降等各種優化方法能更快收斂。 若進行 MaxMin 正規化,則使用正規化器。 它在區間 [a, b] 內正規化,其中 -1 <= a <= 0 和 0 <= b <= 1b - a = 1。 此正規化器透過將零映射到零來保持稀疏性。
ml_transforms
指定一份在訓練前要對資料執行的 MicrosoftML 轉換清單,或是「若不執行轉換則 無 」。 參見 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之間且變數值logincome大於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 參數明確定義的函數,或是透過 their 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:列數已處理,所有時間點都會被報告。
詳細資訊
一個整數值,用來指定想要輸出的量。
若 0,則計算過程中不會印出冗長輸出。 整數值 來自 1 , 4 提供越來越多的資訊。
compute_context
設定計算執行的上下文,並以有效的 revoscalepy 指定。RxComputeContext。 目前是局部且 revoscalepy。支援 RxInSqlServer 的運算上下文。
合奏團
集合的控制參數。
退貨
一個 OneClassSvm 帶有訓練模型的物件。
備註
此演算法為單執行緒,且始終嘗試將整個資料集載入記憶體。
另請參閱
linear_kernel,polynomial_kernel,rbf_kernel,sigmoid_kernel,rx_predict。
參考資料
Microsoft Azure Machine Learning Studio (classic):One-Class Support Vector Machine
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