ランダムフォレスト回帰の準備

PySparkで学ぶ特徴量エンジニアリング

John Hogue

Lead Data Scientist, General Mills

特徴に必要な前提

ランダムフォレスト回帰

  • 歪み/非正規分布 OK
  • 非スケーリング OK
  • 欠損値 OK
  • カテゴリ変数 OK

前提条件

PySparkで学ぶ特徴量エンジニアリング

追加入力特徴

経済

  • 30年固定住宅ローン金利

行政

  • 都市の中央値住宅価格
  • 都市の住宅築年数の割合
  • 都市の住宅サイズの割合

社会

  • Walk Score
  • Bike Score

季節

  • 銀行の祝日
PySparkで学ぶ特徴量エンジニアリング

特徴量エンジニアリング

時系列特徴

  • 1年分のデータでは効果は限定的
  • 祝日を含む週

率・比率・合計

  • ビジネス文脈
  • 個人文脈

拡張特徴

  • 定型テキスト列
  • 観測が少ない値は除去
# データの形状は?
print((df.count(), len(df.columns)))
(5000, 126)
PySparkで学ぶ特徴量エンジニアリング

データフレーム列を特徴ベクトルへ

from pyspark.ml.feature import VectorAssembler
# 欠損値を置換
df = df.fillna(-1)
# ベクトル化する列を定義
features_cols = list(df.columns)
# 目的変数を一覧から除外
features_cols.remove('SALESCLOSEPRICE')
PySparkで学ぶ特徴量エンジニアリング

データフレーム列を特徴ベクトルへ

# ベクトルアセンブラーを作成
vec = VectorAssembler(inputCols=features_cols, outputCol='features')

# データに適用 df = vec.transform(df)
# 特徴ベクトルと目的変数のみ選択 ml_ready_df = df.select(['SALESCLOSEPRICE', 'features'])
# 結果を確認 ml_ready_df.show(5)
+----------------+--------------------+
| SALESCLOSEPRICE|            features|
+----------------+--------------------+
|143000          |(125,[0,1,2,3,5,6...|
|190000          |(125,[0,1,2,3,5,6...|
|225000          |(125,[0,1,2,3,5,6...|
|265000          |(125,[0,1,2,3,4,5...|
|249900          |(125,[0,1,2,3,4,5...|
+----------------+--------------------+
only showing top 5 rows
PySparkで学ぶ特徴量エンジニアリング

機械学習の準備完了!

PySparkで学ぶ特徴量エンジニアリング

Preparing Video For Download...