このトピックでは、広告クリックスルー率 (CTR) を予測するときに、Platform for AI (PAI) のデータマイニングコンポーネントを使用してオフラインスケジューリングを実行する方法について説明します。
背景情報
このトピックで使用されるパイプラインには、次の手順が含まれます。
過去のデータに基づいてPAIでモデルをトレーニングします。
DataWorksでモデルをスケジュールします。
毎日の早朝に、広告のCTRが予測され、予測されたCTRに基づいて広告が配信される。
このパイプラインで使用されるデータセットは、乱数ジェネレータを使用して生成されます。 したがって、パイプラインの結果は評価されません。 このトピックでは、DataWorksでパイプラインを作成し、オフラインスケジューリングを実行する方法についてのみ説明します。
ステップ1: データセットの準備
このパイプラインで使用されるトレーニングデータセットには、2016年9月19日および2016年9月20日に配信された広告の履歴データが含まれます。 パイプラインは、2016年9月21日に配信された広告のCTRを予測します。 データセットは、MaxComputeパーティションテーブルに保存されます。 次の表に、データセットのフィールドを示します。
項目 | データ型 | 説明 |
id | STRING | 広告の一意のID。 |
age | DOUBLE | 広告が配信される人の年齢。 |
性別 | DOUBLE | 広告が配信される相手の性別。 有効な値: 1 (男性) と0 (女性) 。 |
期間 | DOUBLE | 広告の表示期間。 単位は秒です。 |
場所 | DOUBLE | 広告が表示される位置。 有効な値: 0〜4。 より高い値は、より低い位置を示す。 |
ctr | DOUBLE | 広告のCTR。 クリック数をビュー数で割った値が広告の0.03を超える場合、このフィールドの値は1になります。 それ以外の場合、このフィールドの値は0です。 |
dt | STRING | 広告が配信された日付。 形式: YYYYMMDD |
MaxComputeクライアントを使用して、次のコマンドを実行し、adという名前のパーティションテーブルを作成できます。詳細については、「テーブルの作成」をご参照ください。
create table if not exists ad (id STRING,age DOUBLE,sex DOUBLE,duration DOUBLE,place DOUBLE,ctr DOUBLE ) partitioned by (dt STRING) ;
alter table ad add if not exists partition (dt='20160919') partition (dt='20160920');
次の表は、パイプラインで使用される広告テーブルを示しています。 Tunnelコマンドを実行して、パーティション分割テーブルデータをインポートできます。 詳細については、「テーブルへのデータのインポート」をご参照ください。
id | 年齢 | セックス | 期間 | 場所 | ctr | dt |
0 | 49 | 1 | 9 | 0 | 0 | 20160919 |
1 | 17 | 1 | 3 | 1 | 1 | 20160919 |
2 | 44 | 0 | 4 | 0 | 0 | 20160919 |
3 | 14 | 1 | 9 | 1 | 0 | 20160919 |
4 | 44 | 1 | 5 | 4 | 0 | 20160919 |
5 | 10 | 1 | 9 | 3 | 1 | 20160919 |
6 | 42 | 1 | 7 | 3 | 0 | 20160919 |
7 | 51 | 1 | 3 | 1 | 1 | 20160919 |
8 | 18 | 0 | 3 | 3 | 0 | 20160919 |
9 | 39 | 0 | 8 | 4 | 1 | 20160919 |
10 | 45 | 1 | 3 | 2 | 0 | 20160919 |
11 | 57 | 0 | 8 | 2 | 0 | 20160919 |
12 | 14 | 0 | 7 | 2 | 1 | 20160919 |
ステップ2: パイプラインの作成
カスタムパイプラインを作成し、パイプラインを開きます。 詳細については、「データの準備」をご参照ください。
パイプラインを構築します。
左側のコンポーネントリストで、[データソース /ターゲット] フォルダーの [テーブルの読み取り] コンポーネントをキャンバスに2回ドラッグし、2つの [テーブルの読み取り] コンポーネントの名前をad-1とad-2に変更します。
左側のコンポーネントリストで、正規化のコンポーネントデータ前処理フォルダーをキャンバスに2回移動します。
左側のコンポーネントリストで、 をドラッグし、バイナリ分類のロジスティック回帰コンポーネントをキャンバスに追加します。
左側のコンポーネントリストで、予測のコンポーネント機械学習フォルダーをキャンバスに移動します。
左側のコンポーネントリストで、[データソース /ターゲット] フォルダーの [テーブルの書き込み] コンポーネントをキャンバスにドラッグします。 Write Tableコンポーネントの名前をad_result-1に変更します。
次の図に示すように、上記のコンポーネントを接続します。
セクション
説明
①
このセクションのコンポーネントは、ソースデータセットからデータをインポートします。
②
このセクションのコンポーネントは、ソースデータを前処理します。
③
このセクションのコンポーネントはモデルをトレーニングします。
④
このセクションのコンポーネントでは、モデルを使用して予測を行います。
コンポーネントの設定
キャンバス上のad-2およびad-1コンポーネントをクリックし、右側のパネルでパラメーターを設定します。 ad-2コンポーネントはトレーニングデータソースとして機能し、ad-1コンポーネントは予測データソースとして機能します。
タブ
パラメーター
説明
テーブルの選択
テーブル名
インポートするMaxComputeテーブルの名前。 広告を入力します。
パーティション
MaxComputeテーブルがパーティションテーブルかどうかを指定します。 MaxComputeテーブルがパーティションテーブルの場合、システムは自動的にPartitionを選択します。
パラメーター
インポートするデータ。 このパラメーターをdt=@ @{yyyyMMdd} 形式の値に設定します。 このパラメータにより、毎日の増分データが予測データとしてインポートされます。
フィールド情報
ソーステーブル列
インポートするMaxComputeテーブルの列。 [テーブルの選択] タブでパラメーターを設定すると、MaxComputeテーブルの列が自動的に表示されます。
キャンバスで [Normalization -1] コンポーネントをクリックします。 右側のパネルの [フィールド設定] タブで、[フィールドの選択] をクリックし、ダブルタイプまたはINTタイプのフィールドを選択します。 Normalization -2コンポーネントに対しても同じ操作を実行します。
キャンバスで [バイナリ分類のロジスティック回帰] コンポーネントをクリックし、右側のパネルでパラメーターを設定します。 次の表に記載されているパラメーターのみを設定し、他のパラメーターのデフォルト値を使用します。
タブ
パラメーター
説明
フィールド設定
トレーニング機能列
トレーニングに使用する列。 年齢、性別、期間、および場所を選択します。
ターゲット列
CTRデータを格納する列。 ctrを選択します。
キャンバスで [予測] コンポーネントをクリックし、右側のパネルでパラメーターを設定します。 次の表に記載されているパラメーターのみを設定し、他のパラメーターのデフォルト値を使用します。
タブ
パラメーター
説明
フィールド設定
フィーチャー列
トレーニングに使用する列。 年齢、性別、期間、および場所を選択します。
予約済み列
CTRデータを格納する列。 ctrを選択します。
キャンバスでad_result-1コンポーネントをクリックします。 [テーブルの選択] タブで、[新しいテーブル名] フィールドをad_resultに設定します。
キャンバスの上部ツールバーにあるキアイコンをクリックし、パイプラインを実行します。
パイプラインを実行したら、右クリックします。ad_result-1キャンバス上で選択します 予測結果に基づいて生成されたテーブルを表示します。
表の中:
prediction_result: 広告がクリックされたかどうかを示します。 有効な値: 1と0。 1は、広告がクリックされたことを示し、0は、広告がクリックされなかったことを示す。
prediction_score: 広告がクリックされる確率を示します。
ステップ3: DataWorksでオフラインスケジューリングを実行する
DataWorksでPAIノードを作成します。 詳細については、「Machine Learning DesignerでのDataWorksタスクの使用によるパイプラインのスケジュール」をご参照ください。
毎日00:00にPAIノードをスケジュールするようにDataWorksを設定します。 詳細については、「時間プロパティの設定」をご参照ください。
ノードをコミットし、オペレーションセンターに移動してノードのログを表示します。 詳細については、「自動トリガーノードの表示と管理」をご参照ください。
関連ドキュメント
DataWorksタスクを使用して、Machine Learning Designerでパイプラインを定期的にスケジュールできます。 詳細については、「Machine Learning DesignerでのDataWorksタスクの使用によるパイプラインのスケジュール」をご参照ください。
正規化コンポーネントの詳細については、「正規化」をご参照ください。
バイナリ分類のロジスティック回帰の詳細については、「バイナリ分類のロジスティック回帰」をご参照ください。