Featuretoolsによる自動特徴量エンジニアリング
EntitySet、DFS(Deep Feature Synthesis)、特徴量プリミティブ、スタッキング集約について学習します。
「Featuretoolsによる自動特徴量エンジニアリング」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
特徴量作成の自動化
手作業による特徴量エンジニアリングは時間がかかり、組み合わせを見落としやすいものです。Featuretoolsは、Deep Feature Synthesisと呼ばれる手法を使い、リレーショナルデータから多数の候補特徴量を自動的に作成します。
リレーショナルデータとエンティティ
実際のデータは、顧客、注文、商品など、複数の関連するテーブルにまたがっていることがよくあります。Featuretoolsはこれらの関係をモデル化し、関連付けをまたいで集計する特徴量を自動的に生成します。
EntitySetの作成
EntitySetは、データフレームとそれらの関係を保持するコンテナです。まず空のEntitySetを作成します。
import featuretools as ft
es = ft.EntitySet(id="customers_data")データフレームの追加
es.add_dataframeはテーブルを登録します。index(一意なキー)を指定し、時系列データの場合は必要に応じてtime_indexも指定します。
import featuretools as ft
es = es.add_dataframe(
dataframe_name="customers",
dataframe=customers_df,
index="customer_id",
)
es = es.add_dataframe(
dataframe_name="orders",
dataframe=orders_df,
index="order_id",
time_index="order_date",
)リレーションシップの定義
add_relationshipを使って、テーブル同士のつながりをFeaturetoolsに伝えます。親のキーが子の外部キーに対応します(1人の顧客が複数の注文を持つ場合など)。
es = es.add_relationship(
"customers", "customer_id",
"orders", "customer_id",
)Deep Feature Synthesis
DFS(ft.dfs)がその処理を担います。リレーションシップをまたいで演算を積み重ね、「顧客ごとの平均注文額」のような特徴量を、1つずつコードを書くことなく作成します。
import featuretools as ft
feature_matrix, feature_defs = ft.dfs(
entityset=es,
target_dataframe_name="customers",
)集約プリミティブ
集約プリミティブは、子テーブルの行を親テーブルに集約します。SUM、MEAN、COUNT、MAX、STDなどがあり、多数の注文を顧客ごとの統計量に変換します。
feature_matrix, defs = ft.dfs(
entityset=es,
target_dataframe_name="customers",
agg_primitives=["mean", "sum", "count", "max"],
)変換プリミティブ
変換プリミティブは、1つの行またはテーブル内で処理を行います。たとえば、日付から月を取り出したり、経過時間を計算したり、絶対値を求めたりします。
feature_matrix, defs = ft.dfs(
entityset=es,
target_dataframe_name="customers",
trans_primitives=["month", "weekday", "time_since_previous"],
)max_depthによる深さの制御
max_depthは、いくつのプリミティブを積み重ねるかを制限します。深さ1は直接的な集約、深さ2は変換してから集約する処理です(注文の曜日の平均など)。深さを大きくすると特徴量は増えますが、リスクも高くなります。
feature_matrix, defs = ft.dfs(
entityset=es,
target_dataframe_name="customers",
max_depth=2,
)特徴量行列の利用
生成されたfeature_matrixは、対象エンティティをインデックスとする整形済みのデータフレームで、そのままモデルに入力できます。feature_defsには、生成された各特徴量の定義が記録されます。
print(feature_matrix.shape)
print(feature_matrix.head())
X = feature_matrix.fillna(0)
# now train any sklearn model on X利点と注意点
Featuretoolsを使うと、多数の特徴量をすばやく作成し、リレーショナルデータに含まれる有用なシグナルを見つけられます。一方で、数百列が生成されることもあるため、特徴量選択と組み合わせて使ってください。時系列データでは適切なcutoff_timeを設定し、データリークにも注意しましょう。
理解度チェック
Featuretoolsに関する知識を確認しましょう。
まとめ
まとめ: Featuretoolsは特徴量エンジニアリングを自動化します。EntitySetを作成し、es.add_dataframeでテーブルを登録してリレーションシップを定義したら、max_depthを指定してft.dfsを実行します。集約プリミティブは子の行を親に集約し、変換プリミティブは行の内部で処理します。feature_matrixはモデルに入力できる状態になっているため、特徴量選択と組み合わせて使いましょう。
よくある質問
「Featuretoolsによる自動特徴量エンジニアリング」レッスンは無料ですか?
はい。「Featuretoolsによる自動特徴量エンジニアリング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「Featuretoolsによる自動特徴量エンジニアリング」で何を学びますか?
EntitySet、DFS(Deep Feature Synthesis)、特徴量プリミティブ、スタッキング集約について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Featuretoolsによる自動特徴量エンジニアリング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 特徴量選択の手法
- 交互作用特徴量と多項式特徴量の作成
- ターゲットエンコーディングと高度なカテゴリ処理
- Featuretoolsによる自動特徴量エンジニアリング