Swingはアイテムのリコールアルゴリズムです。 Platform for AI (PAI) のSwing Trainコンポーネントを使用して、ユーザー-アイテム-ユーザーの原則に基づいてアイテムの類似性を測定できます。 このトピックでは、Swing Trainコンポーネントを設定する方法について説明します。
制限事項
Swing Trainコンポーネントは、MaxComputeおよびRealtime Compute for Apache Flinkのコンピューティングリソースに基づいて使用できます。
コンポーネントの設定
次のいずれかの方法を使用してコンポーネントを設定できます。
方法1: PAIコンソールでコンポーネントを設定する
Machine Learning DesignerのパイプラインページでSwing Trainコンポーネントを設定します。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | itemCol | アイテム列の名前。 |
userCol | ユーザー列の名前。 | |
パラメーター設定 | アルファ | alphaパラメーター。 デフォルト値 : 1.0 |
maxItemNumber | 計算にアイテムを使用するユーザーの最大数。 デフォルト値は 1000 です。 説明 アイテムの発生数がこの値より大きい場合、アルゴリズムはユーザーの総数に基づいて最大ユーザー数をランダムに選択します。 | |
maxUserItems | ユーザーが計算に使用するアイテムの最大数。 デフォルト値は 1000 です。 説明 ユーザーが計算に使用した項目の数がこの値より大きい場合、そのユーザーは計算に含まれません。 | |
minUserItems | ユーザーが計算に使用するアイテムの最小数。 デフォルト値は 10 です。 説明 ユーザーが計算に使用した項目の数がこの値未満の場合、そのユーザーは計算に含まれません。 | |
resultNormalize | 結果を正規化するかどうかを指定します。 | |
userAlpha | ユーザーのalphaパラメーター。 デフォルト値: 5.0 | |
userBeta | ユーザーのベータパラメーター。 デフォルト値: -0.35 | |
チューニングの実行 | 数の労働者 | ワーカーノードの数。 値は正の整数でなければなりません。 このパラメーターは、Memory per worker, unit MBパラメーターと一緒に使用する必要があります。 有効な値: 1 ~ 9999 |
workerあたりのメモリ | 各ワーカーノードのメモリサイズ。 単位:MB。 値は正の整数でなければなりません。 有効な値: 1024〜65536。 |
方法2: Pythonコードを使用してコンポーネントを構成する
PyAlinkスクリプトコンポーネントを使用してPythonコードを呼び出すことで、Swing Trainコンポーネントを設定できます。 詳細については、PyAlinkスクリプトのドキュメントを参照してください。
パラメーター | 必須 | 説明 | デフォルト値 |
itemCol | 可 | アイテム列の名前。 | 非該当 |
userCol | 可 | ユーザー列の名前。 | 非該当 |
アルファ | 不可 | 平滑化係数であるアルファパラメータ。 | 1.0 |
userAlpha | 不可 | ユーザーのalphaパラメーター。 説明 このパラメーターは、次の式を使用してユーザーの重みを計算するために使用されます。ユーザー重み=1.0/(userAlpha + userClickCount)^ userBeta。 | 5.0 |
userBeta | 不可 | ユーザーのベータパラメーター。 説明 このパラメーターは、次の式を使用してユーザーの重みを計算するために使用されます。ユーザー重み=1.0/(userAlpha + userClickCount)^ userBeta。 | -0.35 |
resultNormalize | 不可 | 値を正規化するかどうかを指定します。 | false |
maxItemNumber | 不可 | 計算にアイテムを使用するユーザーの最大数。 説明 アイテムの発生数がこの値より大きい場合、アルゴリズムはユーザーの総数に基づいて最大ユーザー数をランダムに選択します。 | 1000 |
minUserItems | 不可 | ユーザーが計算に使用するアイテムの最小数。 説明 ユーザーが計算に使用した項目の数がこの値未満の場合、そのユーザーは計算に含まれません。 | 10 |
maxUserItems | 不可 | ユーザーが計算に使用するアイテムの最大数。 説明 ユーザーが計算に使用した項目の数がこの値より大きい場合、そのユーザーは計算に含まれません。 | 1000 |
サンプルPythonコード:
df_data = pd.DataFrame([
["a1", "11L", 2.2],
["a1", "12L", 2.0],
["a2", "11L", 2.0],
["a2", "12L", 2.0],
["a3", "12L", 2.0],
["a3", "13L", 2.0],
["a4", "13L", 2.0],
["a4", "14L", 2.0],
["a5", "14L", 2.0],
["a5", "15L", 2.0],
["a6", "15L", 2.0],
["a6", "16L", 2.0],
])
data = BatchOperator.fromDataframe(df_data, schemaStr='user string, item string, rating double')
model = SwingTrainBatchOp()\
.setUserCol("user")\
.setItemCol("item")\
.setMinUserItems(1)\
.linkFrom(data)
model.print()
predictor = SwingRecommBatchOp()\
.setItemCol("item")\
.setRecommCol("prediction_result")
predictor.linkFrom(model, data).print()
例
次の図は、Swing Trainコンポーネントが使用されるサンプルパイプラインを示しています。 この例では、次の手順を実行して、前の図のコンポーネントを構成します。
トレーニングデータセットとテストデータセットを準備します。
表1と表2という名前の2つのMaxComputeテーブルを作成します。 表1はuseridおよびitemidフィールドを含み、表2はitemidフィールドを含む。 フィールドはSTRING型です。 MaxComputeクライアントでtunnelコマンドを実行し、トレーニングデータセットを表1に、テストデータセットを表2にアップロードします。 次に、Read Table-1コンポーネントのTable NameパラメーターをTable 1に設定し、Read Table-2コンポーネントのTable NameパラメーターをTable 2に設定します。 MaxComputeクライアントのインストール方法と設定方法については、「MaxComputeクライアント (odpscmd) 」をご参照ください。 Tunnelコマンドの詳細については、「Tunnelコマンド」をご参照ください。
トレーニングデータセットをSwing Trainコンポーネントにインポートし、コンポーネントパラメーターを設定します。 詳細については、このトピックの「方法1: PAIコンソールでコンポーネントを構成する」をご参照ください。
テストデータセットとトレーニング済みモデルをSwing Recommendationコンポーネントへの入力として使用して、予測を実行します。