すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:特徴量エンジニアリング

最終更新日:Mar 12, 2026

特徴量エンジニアリングは、推薦アルゴリズムにおいて、ユーザー、アイテム、動作などの生データセットを処理し、新たな特徴量テーブルを生成するプロセスです。これらのテーブルは、その後の取得およびソートに使用されます。

前提条件

データセット

特徴量エンジニアリングの手順を説明するため、本トピックではスクリプトを用いてユーザー、アイテム、動作の各テーブルをシミュレート・生成します。これらのテーブルはサンプルであり、実際のデータは含みません。

ユーザー テーブル:pai_online_project.rec_sln_demo_user_table

フィールド

説明

user_id

bigint

ユーザー タグ。

gender

string

性別。

age

bigint

年齢。

city

string

市。

item_cnt

bigint

フォローしているユーザー数。

follow_cnt

bigint

フォロー中のユーザー数。

follower_cnt

bigint

フォロワー数。

register_time

bigint

登録時刻。

tags

string

ユーザーのタグ。

ds

string

公開時間。

アイテム テーブル:pai_online_project.rec_sln_demo_item_table

フィールド

説明

item_id

bigint

アイテム ID。

duration

double

動画の持続時間。

title

string

総クリック数。

category

string

レベル 1 カテゴリ。

author

bigint

作成者。

click_count

bigint

クリック総数。

praise_count

bigint

いいね総数。

pub_time

bigint

公開時刻。

ds

string

テーブルのパーティションキー列。

動作 テーブル:pai_online_project.rec_sln_demo_behavior_table

フィールド

説明

request_id

bigint

イベントトラッキング ID またはリクエスト ID。

user_id

bigint

ユーザーの一意な ID。

exp_id

string

動作のイベントタイプ。

page

string

ページ名。

net_type

string

ネットワークタイプ。

event_time

bigint

動作イベントが発生した時刻。

item_id

bigint

アイテム ID。

event

string

動作のイベントタイプ。

playtime

double

再生または読み取りの持続時間。

ds

string

テーブルのパーティションキー列。

特徴量エンジニアリング

手順 1: [Designer] ページへ移動

  1. PAI コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、ワークスペース管理 をクリックします。ワークスペース管理ページで、管理対象のワークスペース名をクリックします。

  3. ワークスペース ページの左側にあるナビゲーションウィンドウで、[モデル開発とトレーニング > ビジュアルモデリング] を選択して、ビジュアルモデリング ページを開きます。

ステップ 2: ワークフローの構築

  1. [デザイナー] ページで、[プリセットテンプレート] タブをクリックします。

  2. 推薦ソリューション - 特徴量エンジニアリング セクションで、作成 をクリックします。

  3. ワークフローの作成 ダイアログボックスでパラメーターを設定します。デフォルト値を使用します。

    ワークフローのデータ保存先 を OSS バケットのパスに設定します。このパスは、ワークフロー実行中に生成される一時データおよびモデルの保存先として使用されます。

  4. OK をクリックします。

    ワークフローの作成完了まで、約 10 秒待ちます。

  5. ワークフローリストで、推薦ソリューション - 特徴量エンジニアリング ワークフローをダブルクリックして開きます。

  6. システムがプリセットテンプレートに基づいてワークフローを自動構築します(下図参照)。image.png

    ノード

    説明

    1

    アイテムテーブルの前処理:

    • 後続の特徴量生成 (FG) ステップで使用するために、タグ特徴の区切り文字を chr(29) に置換します。

    • 出力が新規登録アイテムの特徴量であるかどうかを示します。

    2

    動作テーブルの前処理:day_h や week_day など、時間ベースの派生特徴量を生成します。

    3

    ユーザー テーブルの前処理:

    • output は、ユーザーが新規登録されたかどうかを示す特徴量です。

    • 後続の FG ステップで使用するために、タグ特徴の区切り文字を chr(29) に置換します。

    4

    動作、ユーザー、アイテムの各テーブルを関連付けて、統計的特性を備えたワイド動作ログテーブルを作成します。

    5

    一定期間におけるアイテムの統計的特徴量を含むアイテム特徴量テーブルを生成します。

    • item__{event}_cnt_{N}d:N 日間における特定イベントのアイテムへの発生回数(アイテムの人気度を示す)。

    • item__{event}_{itemid}_dcnt_{N}d:N 日間における特定イベントを該当アイテムに対して実行したユニークユーザー数(アイテムの人気度を示す)。

    • item__{min|max|avg|sum}_{field}_{N}d:N 日間における、該当アイテムに対するポジティブイベントにおけるユーザーの数値プロパティの統計的ディストリビューション(特定の数値プロパティを持つユーザーのプリファレンスを示す)。

    • item__kv_{cate}_{event}_{N}d:N 日間における、該当アイテムに対する特定イベントにおけるユーザーのカテゴリプロパティの統計情報(特定のカテゴリプロパティを持つユーザーのプリファレンスを示す)。

    6

    一定期間におけるユーザーの統計的特徴量を含むユーザー特徴量テーブルを生成します。

ステップ 3: 関数の追加

  1. ビジネスフローを作成します。詳細については、「ビジネスフローの作成」をご参照ください。

  2. 新しいビジネスフロー内の MaxCompute を右クリックし、新規リソース > Python を選択して、count_cates_kvs.py という名前の Python スクリプトリソースを作成します。詳細については、「MaxCompute リソースの作成および使用」をご参照ください。

  3. 新しいビジネスフロー内の MaxCompute を右クリックし、新規関数 を選択します。MaxCompute 関数 COUNT_CATES_KVS を作成します。クラス名 には count_cates_kvs.CountCatesKVS を、リソースリスト には count_cates_kvs.py を指定します。詳細については、「ユーザー定義関数の作成および使用」をご参照ください。

ステップ 4: ワークフローの実行と出力の確認

説明

デフォルトでは、このデータセットは過去 45 日分のデータを使用するため、実行に長時間を要する場合があります。実行を高速化するには、以下の操作を行ってください。

  • 実行タイムウィンドウのパラメーターを更新し、より短い期間のデータを使用します。

    • 以下の各ノードをクリックします。右側の パラメーター設定 タブで、実行タイムウィンドウ パラメーターをデフォルトの (-45,0] から (-9,0] に変更します。

      • 1_rec_sln_demo_item_table_preprocess_v2

      • 2_rec_sln_demo_behavior_table_preprocess_ v2

      • 3_rec_sln_demo_user_table_preprocess_v2

      • 4_rec_sln_demo_behavior_table_preprocess_wide_v2

    • 以下の各ノードをクリックします。右側の パラメーター設定 タブで、実行タイムウィンドウ パラメーターをデフォルトの (-31,0] から (-8,0] に変更します。

      • 5_rec_sln_demo_item_table_preprocess_all_feature_v2

      • 6_rec_sln_demo_user_table_preprocess_all_feature_v2

  • SQL スクリプトを変更して、ユーザーのサブセットを選択します。

    • 2_rec_sln_demo_behavior_table_preprocess_ v2 ノードをクリックします。右側の パラメーター設定 タブで、SQL スクリプト パラメーターの 32 行目を WHERE ds = '${pai.system.cycledate}' から WHERE ds = '${pai.system.cycledate}' and user_id %10=1 に変更します。

    • 3_rec_sln_demo_user_table_preprocess_v2 ノードをクリックします。右側の パラメーター設定 タブで、SQL スクリプト パラメーターの 38 行目を WHERE ds = '${pai.system.cycledate}' から WHERE ds = '${pai.system.cycledate}' and user_id %10=1 に変更します。

  1. ビジュアルモデリングキャンバス上部のツールバーにある実行ボタン image.png をクリックします。

  2. ワークフローの実行が完了したら、以下の MaxCompute テーブルに過去 30 日分のデータが格納されていることを確認します。

    • アイテム特徴量テーブル:rec_sln_demo_item_table_preprocess_all_feature_v2

    • ワイド動作ログテーブル:rec_sln_demo_behavior_table_preprocess_v2

    • ユーザー特徴量テーブル:rec_sln_demo_user_table_preprocess_all_feature_v2

    前述のテーブルのデータは、SQL クエリページで照会できます。詳細については、「DataWorks を使用した接続」をご参照ください。

    説明

    プロジェクトでは、パーティションテーブルに対する全表スキャンが禁止されています。クエリには必ずパーティション条件を指定してください。やむを得ず全表スキャンが必要な場合は、SQL ステートメントの前に set odps.sql.allow.fullscan=true; を追加し、両方を同時に実行してください。全表スキャンでは多くのデータが読み込まれるため、コストが高くなる可能性があります。