microsoftml.rx_fast_forest: ランダム フォレスト
使用法
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)
説明
Machine Learning 高速フォレスト
説明
デシジョン ツリーは、入力に対して一連の単純なテストを実行するノンパラメトリック モデルです。 この決定手順では、入力が処理されているインスタンスに似ているトレーニング データセット内の出力にマップされます。 適切なリーフ ノードに到達して出力決定が返されるまで、各インスタンスをツリーの分岐を通じて再帰的にマップする類似性の尺度に基づいて、バイナリ ツリー データ構造の各ノードで決定が行われます。
デシジョン ツリーには、次のようないくつかの利点があります。
トレーニング時と予測時における計算とメモリ使用量の両方の点で効率に優れている。
非線形の決定境界を表すことができる。
統合された特徴選択と分類が行われる。
ノイズの多い特徴が存在する状況での回復性がある。
高速フォレスト回帰は、rx_fast_trees
の回帰ツリー学習器を使用したランダム フォレストおよび分位点回帰フォレストの実装です。
このモデルは、複数のデシジョン ツリーの集団から成ります。 デシジョン フォレストに含まれる各ツリーからは、予測の手段としてガウス分布が出力されます。 ツリーの集団に対して集計 (アグリゲーション) を行うことによって、モデルに含まれる全ツリーの分布の組み合わせに最も近いガウス分布を見つけ出します。
このデシジョン フォレスト分類器は、デシジョン ツリーのアンサンブルで構成されます。 一般に、アンサンブル モデルは、単一のデシジョン ツリーと比べ、カバレッジと正確性が優れています。 デシジョン フォレストに含まれる各ツリーからは、ガウス分布が出力されます。
引数
formula
formula は revoscalepy.rx_formula で記述されます。
相互作用項と F()
は、現在、microsoftml ではサポートされていません。
data
.xdf ファイルまたはデータ フレーム オブジェクトを指定するデータ ソース オブジェクトまたは文字列。
method
高速ツリーの種類を示す文字列。
既定の高速ツリー二項分類の場合は
"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
特徴ごとの個別の値 (ビン) の最大数。 既定値は 255 です。
first_use_penalty
特徴の初回使用ペナルティ係数。 既定値は 0 です。
gain_conf_level
ツリー フィット ゲイン信頼度要件 ([0,1]
の範囲内である必要があります)。 既定値は 0 です。
train_threads
トレーニングで使用するスレッドの数。 None が指定された場合、使用するスレッドの数は内部的に決定されます。 既定値は None です。
random_seed
ランダム シードを指定します。 既定値は None です。
ml_transforms
トレーニング前にデータに対して実行される MicrosoftML 変換の一覧を指定します。変換を実行しない場合は 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 の間で、変数income
のlog
の値が 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")
で指定されているもの以外) を指定する文字ベクトル。
たとえば、transforms
および transform_function
引数を使用して revoscalepy 関数で明示的に定義されているものや、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
有効な RxComputeContext
で指定された、計算が実行されるコンテキストを設定します。
現在はローカルと RxInSqlServer
コンピューティング コンテキストがサポートされています。
ensemble
アンサンブルの制御パラメーター。
戻り値
トレーニング済みモデルを持つ FastForest
オブジェクト。
Note
このアルゴリズムはマルチスレッドであり、常にデータ セット全体をメモリに読み込もうとします。
関連項目
リファレンス
二項分類の例
'''
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))
Output:
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)
Output:
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