Training step#

以下の fit() 関数がトレーニングを実行する部分である。

%%time
%%memit

from autogluon.tabular import TabularPredictor as task

predictor = task(label=label, problem_type=problem_type, eval_metric=eval_metric, path=save_path).fit(
    train_data, 
    time_limit=time_limit, 
    presets=presets,
    refit_full=refit_full,
    excluded_model_types=excluded_model_types,
    hyperparameters=hyperparameters,
    hyperparameter_tune_kwargs=hyperparameter_tune_kwargs,
    num_stack_levels=num_stack_levels, # auto_stack=True,
    num_bag_folds=num_bag_folds,
    num_bag_sets=num_bag_sets,
    _feature_generator_kwargs=feature_generator_kwargs,
    verbosity=2 # 0~4 (default: 2) Higher levels correspond to more detailed print statements
)

fit() の引数に presets があるが、ここは本来、精度優先度を以下の5段階から選んで指定するものである(上から順に精度を優先)。

  1. best_quality

  2. best_quality_with_high_quality_refit

  3. high_quality_fast_inference_only_refit

  4. medium_quality_faster_train

  5. optimize_for_deployment

しかし、本 Notebook はこの preset は固定値となっていることに注意しよう。

Note

本 Notebook では presetsgood_quality_faster_inference_only_refit で固定となっている。(ユーザー側で変更できない)

特徴量エンジニアリング#

INFO: Using Feature Generators to preprocess the data ...
INFO: Fitting AutoMLPipelineFeatureGenerator...
INFO: 	Available Memory:                    516064.56 MB
INFO: 	Train Data (Original)  Memory Usage: 5.43 MB (0.0% of available memory)
INFO: 	Inferring data type of each feature based on column values. Set feature_metadata_in to manually specify special dtypes of the features.
INFO: 	Stage 1 Generators:
INFO: 		Fitting AsTypeFeatureGenerator...
INFO: 			Note: Converting 6 features to boolean dtype as they only contain 2 unique values.
INFO: 	Stage 2 Generators:
INFO: 		Fitting FillNaFeatureGenerator...
INFO: 	Stage 3 Generators:
INFO: 		Fitting IdentityFeatureGenerator...
INFO: 		Fitting CategoryFeatureGenerator...
INFO: 			Fitting CategoryMemoryMinimizeFeatureGenerator...
INFO: 	Stage 4 Generators:
INFO: 		Fitting DropUniqueFeatureGenerator...

AsTypeFeatureGenerator#

学習に適した型への変換を行う。特に初期に object 型とみなされているカラムに categorical などの明確な型に変換される。

FillNaFeatureGenerator#

データ内の欠損値を NaN や np.nan で埋める。

IdentityFeatureGenerator#

データを変更せずに単に次(CategoryMemoryMinimizeFeatureGenerator)に渡すだけのもの。

CategoryMemoryMinimizeFeatureGenerator#

categorical の値を単調に増加する int 値に変換することで、categorical の特徴量のメモリ使用量を最小限に抑える。

DropUniqueFeatureGenerator#

一意な値が1つしかないか、繰り返しの値がほとんどない(max_unique_ratio に基づく)、categorical または object タイプの特徴量をドロップする。

排除された特徴量の情報#

INFO: 	Unused Original Features (Count: 1): ['customerid']
INFO: 		These features were not used to generate any of the output features. Add a feature generator compatible with these features to utilize them.
INFO: 		Features can also be unused if they carry very little information, such as being categorical but having almost entirely unique values or being duplicates of other features.
INFO: 		These features do not need to be present at inference time.
INFO: 		('object', []) : 1 | ['customerid']

元の型と、特徴量エンジニアリングによって特定した型の情報を表示#

INFO: 	Types of features in original data (raw dtype, special dtypes):
INFO: 		('float', [])  :  1 | ['monthlycharges']
INFO: 		('int', [])    :  2 | ['seniorcitizen', 'tenure']
INFO: 		('object', []) : 16 | ['gender', 'partner', 'dependents', 'phoneservice', 'multiplelines', ...]
INFO: 	Types of features in processed data (raw dtype, special dtypes):
INFO: 		('category', [])  : 11 | ['multiplelines', 'internetservice', 'onlinesecurity', 'onlinebackup', 'deviceprotection', ...]
INFO: 		('float', [])     :  1 | ['monthlycharges']
INFO: 		('int', [])       :  1 | ['tenure']
INFO: 		('int', ['bool']) :  6 | ['gender', 'seniorcitizen', 'partner', 'dependents', 'phoneservice', ...]
INFO: 	0.2s = Fit runtime
INFO: 	19 features in original data used to generate 19 features in processed data.
INFO: 	Train Data (Processed) Memory Usage: 0.17 MB (0.0% of available memory)
INFO: Data preprocessing and feature engineering runtime = 0.28s ...

Loading data from TD で類推された型(Types of features in original data)に対して、今回の処理で特定された型 (Types of features in processed data) の情報を表示。object 型となっていたものが適切な型に変換されていることがわかる。