時間的特徴量

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

John Hogue

Lead Data Scientist, General Mills

時間の循環的な性質

時間のイメージ

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

適切な粒度の選択

日次売上

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

適切な粒度の選択

月次売上

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

日付フィールドを日付型として扱う

from pyspark.sql.functions import to_date

# Cast the data type to Date
df = df.withColumn('LISTDATE', to_date('LISTDATE'))
# Inspect the field
df[['LISTDATE']].show(2)
+----------+
|  LISTDATE|
+----------+
|2017-07-14|
|2017-10-08|
+----------+
only showing top 2 rows
PySparkで学ぶ特徴量エンジニアリング

時間コンポーネント

from pyspark.sql.functions import year, month

# Create a new column of year number
df = df.withColumn('LIST_YEAR', year('LISTDATE'))
# Create a new column of month number
df = df.withColumn('LIST_MONTH', month('LISTDATE'))
from pyspark.sql.functions import dayofmonth, weekofyear

# Create new columns of the day number within the month
df = df.withColumn('LIST_DAYOFMONTH', dayofmonth('LISTDATE'))
# Create new columns of the week number within the year
df = df.withColumn('LIST_WEEKOFYEAR', weekofyear('LISTDATE'))
PySparkで学ぶ特徴量エンジニアリング

基本的な時間ベースの指標

Days on Market Image

from pyspark.sql.functions import datediff

# Calculate difference between two date fields
df.withColumn('DAYSONMARKET', datediff('OFFMARKETDATE', 'LISTDATE'))
PySparkで学ぶ特徴量エンジニアリング

ラグ特徴量

カップに落ちるコーヒーの雫

window()

複数レコードをグループ化してレコードを返す

lag(col, count=1)

現在行より前の行の値を返す

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

PySpark でのラグ特徴量

from pyspark.sql.functions import lag
from pyspark.sql.window import Window

# Create Window w = Window().orderBy(m_df['DATE'])
# Create lagged column m_df = m_df.withColumn('MORTGAGE-1wk', lag('MORTGAGE', count=1).over(w))
# Inspect results m_df.show(3)
+----------+------------+----------------+
|      DATE|    MORTGAGE|    MORTGAGE-1wk|
+----------+------------+----------------+
|2013-10-10|        4.23|            null|
|2013-10-17|        4.28|            4.23|
|2013-10-24|        4.13|            4.28|
+----------+------------+----------------+
only showing top 3 rows
PySparkで学ぶ特徴量エンジニアリング

時間の練習をしましょう!

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

Preparing Video For Download...