0Pricing
Learn AI with Python · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 特徴量選択の手法
  2. 交互作用特徴量と多項式特徴量の作成
  3. ターゲットエンコーディングと高度なカテゴリ処理
  4. Featuretoolsによる自動特徴量エンジニアリング
← Learn AI with Pythonに戻る