microsoftml.rx_logistic_regression:羅吉斯回歸

使用量

microsoftml.rx_logistic_regression(formula: str,
    data: [revoscalepy.datasource.RxDataSource.RxDataSource,
    pandas.core.frame.DataFrame], method: ['binary',
    'multiClass'] = 'binary', l2_weight: float = 1,
    l1_weight: float = 1, opt_tol: float = 1e-07,
    memory_size: int = 20, init_wts_diameter: float = 0,
    max_iterations: int = 2147483647,
    show_training_stats: bool = False, sgd_init_tol: float = 0,
    train_threads: int = None, dense_optimizer: bool = False,
    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)

描述

機器學習羅吉斯回歸

詳細資料

羅吉斯回歸是一種分類方法,用來預測類別相依變數與一或多個獨立變數(假設有羅吉斯散發)的關聯性。 如果相依變數只有兩個可能的值 (成功/失敗) ,則羅吉斯回歸為二進位。 如果相依變數有兩個以上的可能值 (血糖類型指定診斷測試結果) ,則羅吉斯回歸為多維度。

使用的優化技術 rx_logistic_regression 是有限的記憶體 Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) 。 BFGS 和一般 BFGS 演算法都會使用有關 < 牛頓方法,在由牛頓的方法所使用的方程式中估計計算步驟的大量運算 Hessian 矩陣。 但是 BFGS 近似值只會使用有限的記憶體數量來計算下一個步驟的方向,因此它特別適用于大量變數的問題。 memory_size參數會指定要儲存的過去位置和漸層數目,以用於下一個步驟的計算。

此學習模組可以使用彈性網路正規化: L1 (套索) 和 L2 (凸緣) regularizations 的線性組合。 正規化是一種方法,會藉由提供可提供資訊來補充資料的條件約束,以及防止具有極端係數值的 penalizing 模型的條件約束,來呈現不良問題的方便追蹤。 這可以藉由在偏差變異數的取捨中選取最佳複雜性,來改善模型的一般化。 正規化的運作方式是將與係數值相關聯的損失新增至假設的錯誤。 具有極端係數值的精確模型會懲罰更多,但具有更保守值的較不精確模型會懲罰較少。 L1 和 L2 正規化有不同的效果,而且在某些方面有互補的用途。

  • l1_weight:當使用高維度資料時,可以套用至稀疏模型。 它會提取與0相對不重要的小型加權相關功能。

  • l2_weight:適用于不是稀疏的資料。 它會將大量加權拉到零。

將凸的負面影響新增至正規化,可克服一些套索的限制。 它可以改善其預測精確度,例如,當預測指標數目大於樣本大小時。 如果 x = l1_weighty = l2_weight ,則 ax + by = c 定義正規化詞彙的線性範圍。 X 和 y 的預設值都是 1 。 積極的正規化可能會從模型中排除重要的變數,以損害預測性的容量。 因此,針對羅吉斯回歸模型的效能,選擇正規化參數的最佳值是很重要的。

引數

公式

F() Microsoftml中目前不支援 revoscalepy.rx_formula 互動詞彙和中所述的公式。

data

指定 xdf 檔案或資料框架物件的資料來源物件或字元字串。

method

指定羅吉斯回歸類型的字元字串: "binary" 適用于預設的二元分類羅吉斯回歸或 "multiClass" 多維度羅吉斯回歸。

l2_weight

L2 正規化權數。 其值必須大於或等於 0 ,而且預設值會設定為 1

l1_weight

L1 正規化權數。 其值必須大於或等於 0 ,而且預設值會設定為 1

opt_tol

優化工具聚合的臨界值。 換句話說,如果反覆運算之間的改進少於臨界值,此演算法會停止,並傳回目前的模型。 較小的值較慢,但是更準確。 預設值是 1e-07

memory_size

BFGS 的記憶體大小,指定要為下一個步驟計算所儲存的過去位置和漸層數目。 此優化參數會限制用來計算下一個步驟之大小和方向的記憶體數量。 當您指定較少的記憶體時,訓練是更快,但較不精確。 必須大於或等於 1 ,而且預設值為 20

max_iterations

設定反覆運算次數上限。 在這幾個步驟之後,即使它不符合聚合準則,也會停止演算法。

show_training_stats

指定 True 以顯示定型資料和定型模型的統計資料,否則為 False 。 預設值是 False。 如需模型統計資料的詳細資訊,請參閱 summary.ml_model()

sgd_init_tol

設定為大於0的數位,以使用隨機梯度下降 (SGD) 來尋找初始參數。 非零的值集指定 SGD 用來判斷聚合的容錯。 預設值是 0 指定不使用 SGD。

init_wts_diameter

設定初始加權直徑,以指定要針對初始權數繪製值的範圍。 這些權數會在此範圍內隨機初始化。 例如,如果指定了直徑,則權數 d 會在和之間統一分配 -d/2 d/2 。 預設值為 0 ,指定所有加權都會初始化為 0

train_threads

定型模型時使用的執行緒數目。 這應該設定為電腦上的核心數目。 請注意,L BFGS 多執行緒處理會嘗試將資料集載入記憶體中。 如果發生記憶體不足的問題,請將設定 train_threads1 以關閉多執行緒處理。 如果 在內部決定要使用的執行緒數目。 預設值為 None

dense_optimizer

如果為,則會 True 強制 densification 內部優化向量。 如果 False 為,則羅吉斯回歸優化工具會在找到適當的情況下,使用稀疏或密集的內部狀態。 將設定 denseOptimizer 為時 True ,內部優化程式必須使用密集的內部狀態,這樣可能有助於減輕垃圾收集行程的負載,以因應一些較大的問題。

規範

指定使用的自動正規化類型:

  • "Auto":如果需要正規化,則會自動執行。 這是預設選項。

  • "No":不執行正規化。

  • "Yes":執行正規化。

  • "Warn":如果需要正規化,則會顯示警告訊息,但不會執行正規化。

正規化會將不同的資料範圍方式將至標準規模。 特性調整可確保資料點之間的距離為比例,並且可讓各種優化方法(例如梯度下降)更快收斂。 如果執行正規化, MaxMin 則會使用正規化程式。 它會標準化間隔 [a,b] 中的 -1 <= a <= 0 和和的值 0 <= b <= 1 b - a = 1 。 這個正規化程式會藉由將零對應到零來保留稀疏值。

ml_transforms

指定在定型之前要對資料執行的 MicrosoftML 轉換清單,或不執行任何轉換時,則為 。 如需支援的轉換,請參閱 featurize_textcategoricalcategorical_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。

資料列選取是在處理任何資料轉換之後執行, (查看引數 transformstransform_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 函式中明確定義的函式會透過其 transformstransform_function 引數,或透過其 formula 或引數隱含定義的函式 row_selectiontransform_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 為,則計算期間不會列印任何詳細資訊輸出。 的整數值 14 提供增加的資訊量。

compute_coNtext

設定執行計算的內容,並以有效的 revoscalepy 指定。RxComputeCoNtext. 目前為本機和 revoscalepy。支援 >rxinsqlserver 計算內容。

集成

集體的控制項參數。

傳回

LogisticRegression具有定型模型的物件。

注意

當 (多執行緒) 時,此演算法會嘗試將整個資料集載入記憶體中 train_threads > 1

另請參閱

rx_predict

參考資料

維琪百科: L-BFGS

維琪百科:羅吉斯回歸

可調整的 L1-Regularized Log-Linear 模型定型

機器學習的測試回合-L1 和 L2 正規化

二元分類範例

'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset

infert = get_dataset("infert")


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

infertdf = infert.as_df()
infertdf["isCase"] = infertdf.case == 1
data_train, data_test, y_train, y_test = train_test_split(infertdf, infertdf.isCase)

model = rx_logistic_regression(
    formula=" isCase ~ age + parity + education + spontaneous + induced ",
    data=data_train)

print(model.coef_)
    
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
                     extra_vars_to_write=["isCase", "Score"])
                     
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))

輸出:

Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 6
improvement criterion: Mean Improvement
L1 regularization selected 5 of 6 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0646405
Elapsed time: 00:00:00.0083991
OrderedDict([('(Bias)', -1.2366217374801636), ('spontaneous', 1.9391206502914429), ('induced', 0.7497404217720032), ('parity', -0.31517016887664795), ('age', -3.162723260174971e-06)])
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0287290
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds 
  isCase PredictedLabel     Score  Probability
0  False          False -1.341681     0.207234
1   True           True  0.597440     0.645070
2  False           True  0.544912     0.632954
3  False          False -1.289152     0.215996
4  False          False -1.019339     0.265156

多元分類範例

'''
MultiClass Classification
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, 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()
irisdf["Species"] = irisdf["Species"].astype("category")
data_train, data_test, y_train, y_test = train_test_split(irisdf, irisdf.Species)

model = rx_logistic_regression(
    formula="  Species ~ Sepal_Length + Sepal_Width + Petal_Length + Petal_Width ",
    method="multiClass",
    data=data_train)

print(model.coef_)
    
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
                     extra_vars_to_write=["Species", "Score"])
                     
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))

輸出:

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.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 15
improvement criterion: Mean Improvement
L1 regularization selected 9 of 15 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0493224
Elapsed time: 00:00:00.0080558
OrderedDict([('setosa+(Bias)', 2.074636697769165), ('versicolor+(Bias)', 0.4899507164955139), ('virginica+(Bias)', -2.564580202102661), ('setosa+Petal_Width', -2.8389241695404053), ('setosa+Petal_Length', -2.4824044704437256), ('setosa+Sepal_Width', 0.274869441986084), ('versicolor+Sepal_Width', -0.2645561397075653), ('virginica+Petal_Width', 2.6924400329589844), ('virginica+Petal_Length', 1.5976412296295166)])
Beginning processing data.
Rows Read: 38, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0331861
Finished writing 38 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds 
      Species   Score.0   Score.1   Score.2
0   virginica  0.044230  0.364927  0.590843
1      setosa  0.767412  0.210586  0.022002
2      setosa  0.756523  0.221933  0.021543
3      setosa  0.767652  0.211191  0.021157
4  versicolor  0.116369  0.498615  0.385016