Extreme Gradient Boosting (XGBoost) は、効率的な勾配ブースティングツリーアルゴリズムであり、分類と回帰に広く使用されています。XGBoost gbtree モデルは、決定木をベース学習器として使用します。このトピックでは、不動産データセットを使用して XGBoost gbtree モデルをトレーニングし、トレーニング済みの XGBoost gbtree モデルを使用して住宅価格を予測する方法について説明します。
データの準備
たとえば、Boston データセットがトレーニングデータセットとして使用されます。次の表に、データセットのデータ構造を示します。
列名 | 説明 | データ型 |
crim | 一人当たりの都市犯罪率。 | FLOAT |
zn | 25,000 平方フィートを超える住宅地の割合。 | FLOAT |
indus | 町あたりの非小売商業施設の割合。 | FLOAT |
chas | 近くに川のチャンネルがあるかどうかを指定します。 | INT |
nox | 窒素酸化物濃度 (1,000 万分の 1)。 | FLOAT |
rm | 住宅あたりの平均部屋数。 | FLOAT |
age | 1940 年より前に建てられた主要な住居の割合。 | FLOAT |
dis | 5 つの雇用センターまでの平均距離。 | FLOAT |
rad | 高速道路までの距離。 | INT |
tax | 10,000 米ドルあたりの総固定資産税率。 | INT |
ptratio | 町あたりの教師と生徒の割合。 | FLOAT |
b | アフリカ系アメリカ人の都市住民の割合。 | FLOAT |
lstat | 低所得の住民の割合。 | FLOAT |
medv | 主要な住居の平均価格。 | FLOAT |
モデルのトレーニング
boston.train テーブルを使用してモデルをトレーニングし、boston.test テーブルを使用してデータを予測します。モデルのトレーニング中に、RDS SQLFlow はトレーニングデータセットを自動的に分類して、トレーニングデータセットと検証データセットを生成します。
RDS SQLFlow クライアントの RDS SQLFlow コマンドラインインターフェイスで、次の SQL 文を実行してモデルをトレーニングします:
SELECT * FROM boston.train TO TRAIN xgboost.gbtree WITH objective="reg:squarederror", train.num_boost_round = 30 COLUMN crim, zn, indus, chas, nox, rm, age, dis, rad, tax, ptratio, b, lstat LABEL medv INTO sqlflow_models.my_xgb_regression_model;SELECT文は、boston.train テーブルからトレーニングデータを抽出します。TO TRAIN文は、使用するモデル (この場合は xgboost.gbtree) を指定します。WITH文は、トレーニングパラメーターを設定します。COLUMN文は、特徴量列を指定します。LABEL文は、ターゲット列を指定します。最後に、INTO文は、トレーニング済みモデルのストレージ場所を定義します。詳細については、「トレーニング構文」をご参照ください。
モデルを使用したデータ予測
xgboost.gbtree モデルのトレーニングが完了したら、そのモデルを使用して次の SQL 文を実行し、住宅価格を予測します:
SELECT * FROM boston.test TO PREDICT boston.predict.medv USING sqlflow_models.my_xgb_regression_model;SELECT文は、予測に必要なデータセットを指定します。TO PREDICT文は、予測結果を格納するテーブルを指定します。USING文は、使用するモデルを指定します。詳細については、「予測構文」をご参照ください。予測が完了したら、次の SQL 文を実行して予測結果を表示します:
SELECT * FROM boston.predict;