SAP HANA PAL による回帰モデルのトレーニング

Objective

After completing this lesson, you will be able to 回帰のハイブリッド勾配ブースティングツリー (HGBT) アルゴリズムの機能を確認します。

社内価格の PAL 回帰モデルのトレーニング

Python machine learning client for SAP HANA (hana-ml) では、以下にアクセスすることができます。

  • Predictive Analysis Library (PAL) のすべての機能
  • Python の Automated Predictive Library (APL) 関数

これらの関数は、SAP HANA DataFrame で入力データとして使用できます。

入力データセットの準備

このアルゴリズムでは、入力データセットが 3 つの分離サブセット (トレーニングテストチェック) にランダムに分割されます。これらのサブセットは、機械学習ワークフローの実行に不可欠です。

これらのパーティションを作成するには、パーティショニングアルゴリズム [1] で必要なように、入力データセットに 'ID' 列が含まれている必要があります。'ID' 列が明示的に指定されていない場合、アルゴリズムでは、DataFrame の最初の列に 'ID' が含まれていると見なされます。詳細については、[1] を参照してください。

'ID' 列をデータセットに挿入する方法は次のとおりです。

Python
1
hdf_input = hdf.add_id(id_col='ID')
Python
1
hdf_input.head(5).collect()
出力:
 IDMedInc世帯年齢AveRoomsAveBedrms人口AveOccup緯度経度ターゲット
011.2452.02.920.91396.04.6537.80-122.275.00
121.1652.02.430.941349.05.3937.87-122.255.00
237.8552.07.791.05517.02.4137.86-122.245.00
349.3952.07.510.951366.02.7537.85-122.245.00
457.8752.08.281.04947.02.6237.83-122.235.00

入力データセットのパーティショニング

上記のサブセットごとに最適なパーティション率はありません。予測プロジェクトの目標を満たすパーティション率を選択する必要があります。

たとえば、一般的なパーティションの割合には以下が含まれます。

  • トレーニング: 80%/テスト: 20%
  • トレーニング: 70%/テスト:30%
  • トレーニング:60%/テスト:40%

この特定のケースでは、モデルをトレーニングするためのデータ量を最大化し、堅牢なモデル評価のために十分なデータポイントを残す必要があります。そのため、提案されるデータ分割は以下のとおりです。

トレーニング: 70%/テスト:30%

パーティショニングアルゴリズムの入力パラメータは、以下のとおりです。

Python
12345678
# Partitioning the input data into train, test, validation sub-sets from hana_ml.algorithms.pal.partition import train_test_val_split regressdata_hdf=hdf_input.select('ID', 'MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude', 'Target') train_hdf, test_hdf, val_hdf = train_test_val_split(data=regressdata_hdf, id_column='ID', random_seed=2, partition_method='random', training_percentage = 0.7, testing_percentage = 0.3, validation_percentage = 0.0) print(regressdata_hdf.select_statement)

出力:

SELECT "ID", "MedInc", "HouseAge", "AveRooms", "AveBedrms", "Population", "AveOccup", "Latitude", "Longitude", "Target" FROM (SELECT CAST(ROW_NUMBER() OVER() AS INTEGER) + 0 AS "ID", * FROM (SELECT * FROM "ML_DEMO".)california_housing")) AS "DT_269"

ハイブリッド勾配ブースティングツリー (HGBT) モデルのトレーニング

PAL ハイブリッド勾配ブースティングツリー (HGBT) アルゴリズム [1] は、混合機能タイプ (連続およびカテゴリ) を入力としてサポートする HANA 最適化勾配ブースティングツリー実装です。回帰および分類シナリオがサポートされます。

回帰のハイブリッド勾配ブースティングモデルは、以下に示すトレーニングサブセットに基づいてトレーニングされます。

Code Snippet
123456789101112
HybridGradientBoostingRegressor %%time hgr = HybridGradientBoostingRegressor( n_estimators = 20, split_threshold=0.75, split_method = 'exact', learning_rate=0.3, max_depth=2, resampling_method = 'cv', fold_num=5, evaluation_metric = 'rmse', ref_metric=['mae'] ) hgr.fit(train_hdf, features=['ID', 'MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude'], label='Target')

CPU 時間: user 4.81 ms、sys: 408 μs、合計: 5.22 ms

ウォール時間: 633 ms

出力:

<hana_ml.algorithms.pal.trees.HybridGradientBoostingRegressor at 0x7fe3333e9510>

参照

[1] SAP アルゴリズム hana_ml.algorithms.pal パッケージ: HybridGradientBoostingRegressor

機能の重要度

機能重要度では、応答または従属変数 [1] の予測時の貢献度に基づいて、入力機能にスコアが割り当てられます。

機能のスコアが高いほど、ターゲット変数を予測するモデルへの影響が大きくなります。重要度スコアは [0, 1] の範囲内です。

モデルの機能の重要度をチェックする方法は以下のとおりです。

最も影響力のある機能は 'MedInc' であり、重要値は '0.51' であることが観測されます。この機能は、ブロックグループ内の収益の中央値を表します。"ブロックグループは、米国が属する最小の地域ブロックです。Census Bureau はサンプルデータを公開します。" [2].

さらに、3 桁目と 5 桁目には、それぞれ 'Latitude' と 'Longitude' という機能があります。それぞれの重要度の値は '0.09' および '0.05' です。

Python
1
hgr.feature_importances_.sort('IMPORTANCE', desc='TRUE').collect()
 VARIABLE_NAMEIMPORTANCE
0MedInc0.513025
1ID0.230721
2緯度0.097631
3AveOccup0.085743
4経度0.057718
5AveRooms0.011069
6世帯年齢0.004093
7AveBedrms0.000000
8人口0.000000

参照

[1] SAP アルゴリズム hana_ml.algorithms.pal パッケージ: HybridGradientBoostingRegressor

[2] カリフォルニア住宅データセットの説明