Usage
microsoftml.rx_fast_forest(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], method: ['binary',
'regression'] = 'binary', num_trees: int = 100,
num_leaves: int = 20, min_split: int = 10,
example_fraction: float = 0.7, feature_fraction: float = 1,
split_fraction: float = 1, num_bins: int = 255,
first_use_penalty: float = 0, gain_conf_level: float = 0,
train_threads: int = 8, random_seed: int = None,
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
機器學習快速森林
詳細資訊
決策樹是非參數模型,對輸入進行一連串簡單測試。 此決策程序將這些資料映射到訓練資料集中的輸出,而這些輸出的輸入與被處理的實例相似。 在二元樹資料結構的每個節點,根據相似度度量做出決策,該指標會將每個實例遞迴地映射到樹的分支之間,直到到達適當的葉節點並返回輸出決策。
決策樹有多項優點:
它們在訓練與預測期間,無論是計算還是記憶體使用都非常高效。
它們可以代表非線性的決策邊界。
它們執行整合的特徵選擇與分類。
它們在有噪音特徵時仍能保持韌性。
快速森林迴歸是一種利用迴歸樹學習器在 中 rx_fast_trees實現的隨機森林與分位數回歸森林。
該模型由一系列決策樹組成。 決策森林中的每棵樹都會透過預測輸出一個高斯分布。 在整個樹群上進行聚合,以尋找模型中所有樹最接近合併分布的高斯分布。
此決策森林分類器由一系列決策樹組成。 一般而言,集合模型比單一決策樹提供更好的覆蓋與準確度。 決策森林中的每棵樹都會輸出一個高斯分布。
Arguments
公式
revoscalepy.rx_formula 中描述的公式。
互動術語 和 F() 目前在 microsoftml 中不支援。
資料
一個資料來源物件或指定 .xdf 檔案或資料框架物件的字串。
方法
一個表示快速樹類型的字串:
"binary"預設的快速樹二元分類或"regression"用於快速樹迴歸。
num_trees
指定在集合中要建立的決策樹總數。透過建立更多決策樹,你有可能獲得更好的覆蓋,但訓練時間會增加。 預設值是 100。
num_leaves
在任何樹中可建立的最大葉節點數(終端節點)。 較高的值可能增加樹的大小並獲得更好的精度,但有過度擬合並需要更長時間訓練的風險。 預設值為 20。
min_split
形成葉片所需的最低訓練次數。 也就是說,從子抽樣資料中,迴歸樹葉節點中允許的最少文件數量。 「分割」意指樹(節點)每一層的特徵被隨機分割。 預設值為 10。
example_fraction
每棵樹隨機選擇的實例比例。 預設值為 0.7。
feature_fraction
每棵樹隨機選擇特徵的比例。 預設值為 0.7。
split_fraction
每次分割時隨機選擇的特徵比例。 預設值為 0.7。
num_bins
每個特徵最大可識別不同值(bin)數量。 預設值為 255。
first_use_penalty
該特徵首先使用懲罰係數。 預設值為 0。
gain_conf_level
樹擬合獲得信心要求(應該在範圍內 [0,1])。 預設值為 0。
train_threads
訓練中使用的線程數量。 若指定 為 None ,則執行緒數量由內部決定。 預設值是 None。
random_seed
指定隨機種子。 預設值是 None。
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
設定計算執行的上下文,並以有效 RxComputeContext指定 。
目前支援本地與 RxInSqlServer 運算上下文。
合奏團
集合的控制參數。
退貨
一個 FastForest 帶有訓練模型的物件。
備註
此演算法為多執行緒,且會嘗試將整個資料集載入記憶體。
另請參閱
參考資料
二元分類範例
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_fast_forest, 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)
forest_model = rx_fast_forest(
formula=" isCase ~ age + parity + education + spontaneous + induced ",
data=data_train)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(forest_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))
輸出:
Not adding a normalizer.
Making per-feature arrays
Changing data from row-wise to column-wise
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Processed 186 instances
Binning and forming Feature objects
Reserved memory for tree learner: 7176 bytes
Starting to train ...
Not training a calibrator because a valid calibrator trainer was not provided.
Elapsed time: 00:00:00.2704185
Elapsed time: 00:00:00.0443884
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0253862
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: Less than .001 seconds
isCase PredictedLabel Score
0 False False -36.205067
1 True False -40.396084
2 False False -33.242531
3 False False -87.212494
4 True False -13.100666
迴歸範例
'''
Regression.
'''
import numpy
import pandas
from microsoftml import rx_fast_forest, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
airquality = get_dataset("airquality")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
airquality = airquality.as_df()
######################################################################
# Estimate a regression fast forest
# Use the built-in data set 'airquality' to create test and train data
df = airquality[airquality.Ozone.notnull()]
df["Ozone"] = df.Ozone.astype(float)
data_train, data_test, y_train, y_test = train_test_split(df, df.Ozone)
airFormula = " Ozone ~ Solar_R + Wind + Temp "
# Regression Fast Forest for train data
ff_reg = rx_fast_forest(airFormula, method="regression", data=data_train)
# Put score and model variables in data frame
score_df = rx_predict(ff_reg, data=data_test, write_model_vars=True)
print(score_df.head())
# Plot actual versus predicted values with smoothed line
# Supported in the next version.
# rx_line_plot(" Score ~ Ozone ", type=["p", "smooth"], data=score_df)
輸出:
Not adding a normalizer.
Making per-feature arrays
Changing data from row-wise to column-wise
Beginning processing data.
Rows Read: 87, Read Time: 0, Transform Time: 0
Beginning processing data.
Warning: Skipped 4 instances with missing features during training
Processed 83 instances
Binning and forming Feature objects
Reserved memory for tree learner: 21372 bytes
Starting to train ...
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0644269
Elapsed time: 00:00:00.0109290
Beginning processing data.
Rows Read: 29, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0314390
Finished writing 29 rows.
Writing completed.
Solar_R Wind Temp Score
0 190.0 7.4 67.0 26.296144
1 20.0 16.6 63.0 14.274153
2 320.0 16.6 73.0 23.421144
3 187.0 5.1 87.0 80.662109
4 175.0 7.4 89.0 67.570549