レコメンダー分割を使用したデータの分割

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

この記事では Machine Learning Studio (クラシック) のデータの分割モジュールでレコメンダー splitオプションを使用する方法について説明します。 このオプションは、推奨モデルで使用するためにトレーニングデータセットとテストデータセットを準備する必要がある場合に便利です。 これらのモデルでは特定の形式が必要になるだけでなく、特別なツールを使用せずに、評価、ユーザー、および項目を均衡の取れた方法で分割することは非常に困難です。

注意

適用対象: Machine Learning Studio (クラシック)のみ

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

レコメンダー splitオプションを使用すると、使用している推奨設定モデルの種類を要求することにより、このプロセスを簡単に行うことができます。たとえば、項目を提案したり、評価を提示したり、関連するユーザーを検索したりすることができます。 次に、指定した条件でデータセットを分割します。たとえば、コールドユーザーやコールド項目を処理する方法などです。

データセットを分割すると、モジュールは2つのデータセットを返します。1つはトレーニング用で、もう1つはテストまたはモデル評価のためのものです。 インスタンスごとの追加データ (評価など) が入力データセットに含まれる場合、それは出力でも保持されます。

機械学習実験のデータのパーティション分割に関する一般的な情報については、「」を参照してください。

データの分割モジュールの他のオプションでは、さまざまな方法でデータを分割できます。

推奨モデルで使用されるデータセットを分割する

レコメンダー Splitオプションは、推奨システムのトレーニングに使用されるデータに対して特別に提供されます。

このオプションを使用する前に、データが互換性のある形式であることを確認してください。 レコメンダースプリッターは、データセットが ユーザーと 項目のペアまたは ユーザー項目の評価 3 要素だけで構成されていることを前提として動作します。 詳細については、この記事の「 入力データの要件 」を参照してください。

  1. ご利用の実験に Split Data (データの分割) モジュールを追加し、それを入力として分割するデータセットに接続します。

  2. 分割モードでは、[レコメンダー split] を選択します。

  3. 値の分割方法を制御するには、次のオプションを設定します。 0から1までの数値で表されるパーセンテージを指定します。

    • トレーニングのみのユーザーの割合: トレーニングデータセットのみに割り当てる必要があるユーザーの割合を指定します。 つまり、行がモデルのテストに使用されることはありません。

    • トレーニングのテストユーザー評価の割合: 収集したユーザー評価の一部をトレーニングに使用できることを指定します。

    • コールドユーザーの割合: コールドユーザーとは、システムによって以前に検出されていないユーザーのことです。 通常、システムにはこれらのユーザーに関する情報がないため、トレーニングには役立ちますが、予測が正確さに欠ける可能性があります。

    • コールド項目の割合: コールド項目とは、システムによって以前に検出されていない項目のことです。 システムにはこれらの項目に関する情報がないため、トレーニングには役立ちますが、予測が正確さに欠ける可能性があります。

    • 無視したユーザーの割合: このオプションを使用すると、レコメンダーは一部のユーザーを無視できます。これにより、データのサブセットでモデルをトレーニングできます。 これは、パフォーマンス上の理由で役立つ場合があります。 無視するユーザーの割合を指定します。

    • 無視される項目の割合: レコメンダースプリッターは一部の項目を無視し、データのサブセットでモデルをトレーニングできます。 これは、パフォーマンス上の理由で役立つ場合があります。 無視する項目の割合を指定します。

  4. 頻繁に生成されるコールド項目を削除する: このオプションは、通常、テストセット内のすべてのエンティティがトレーニングセットに含まれるように、ゼロに設定されます。

    項目がテスト セットでのみカバーされ、コールドとして明示的に選択されていない場合、その項目は "場合によって生成されるコールド項目" と呼ばれます。 このような項目は、「レコメンダー データを分割する方法」セクションで説明されているアルゴリズムの手順 (4) と手順 (6) で生成できます。

  5. レコメンダーのランダムシード: 毎回データを同じ方法で分割する場合は、シード値を指定します。 それ以外の場合、既定では、シードとしてシステムクロック値を使用して、入力データがランダムに分割されます。

  6. 実験を実行します。

推奨モデルのトレーニングまたはテストに使用される一連の評価と特徴を分割する方法の例については、「 Azure AI Gallery:ムービーの推奨事項」のサンプル実験で提供されているチュートリアルを確認することをお勧めします。

テクニカル ノート

このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。

入力データの要件

レコメンダースプリッターは、データセットがユーザーと項目のペアまたはユーザー項目の評価3要素だけで構成されていることを前提として動作します。 したがって、 データの分割 モジュールは、特徴の型のデータと混同しないように、3つ以上の列を含むデータセットでは機能しません。

データセットに含まれる列の数が多すぎると、次のエラーが発生する可能性があります。

エラー 0022: 入力データセットで選択された列の数が x と等しくありません

回避策として、 データセット内の列の選択 を使用していくつかの列を削除できます。 列を後で追加するには、[列の 追加 ] モジュールを使用します。

または、モデルで使用する多くの機能がデータセットに含まれている場合は、別のオプションを使用してデータセットを分割し、マッチボックスレコメンダーをトレーニングするのではなく、トレーニングモデルを使用してモデルをトレーニングします。

サポートされているデータ形式の詳細については、「 マッチボックスレコメンダーのトレーニング」を参照してください。

使用上のヒント

  • データセットに少なくとも2つの行が含まれていない場合、エラーが発生します。

  • 数をパーセンテージとして指定する場合 (つまり、"%" 文字を含む文字列を使用する場合)、値はパーセンテージとして解釈されます。

    パーセンテージ値はすべて、0 ~ 100 の範囲内 (0 と 100 は含まない) とする必要があります。

  • 指定する数またはパーセンテージが 1 未満の浮動小数点数であり、パーセント記号 "%" を使用しない場合、数は比例値として解釈されます。

実装の詳細

データを、推奨モデルで使用するためにトレーニング セットとテスト セットに分割する場合は、次のアルゴリズムが使用されます。

  1. 要求した割合の無視項目と、関連するすべての観測値が削除されます。

  2. 要求した割合のコールド項目と、関連するすべての観測値がテスト セットに移動されます。

  3. 最初の 2 つの手順の後に残った無視ユーザーのうち要求した割合のものと、関連するすべての観測値が削除されます。

  4. 最初の 2 つの手順の後に残ったコールド ユーザーのうち要求した割合のものと、関連するすべての観測値がテスト セットに移動されます。

  5. 最初の 2 つの手順の後に残ったトレーニング限定ユーザーのうち要求した割合のものと、関連するすべての観測値がトレーニング セットに移動されます。

  6. 前のすべての手順の後に残ったユーザーごとに、トレーニングのテスト ユーザー評価のうち要求した割合のものがトレーニング セットに移動され、残りはテスト セットに移動されます。

    ユーザーごとに少なくとも 1 つの観測値が常にトレーニング セットに移動されます。

  7. 要求された場合、場合によって生成されるコールド項目に関連付けられたインスタンスをテスト セットから削除できます。

    項目がテスト セットでのみカバーされ、コールドとして明示的に選択されていない場合、その項目は "場合によって生成されるコールド項目" と呼ばれます。 このような項目は、手順 (4) と (6) によって生成されます。

    このオプションの使用が予想されるのは、コールド ユーザーとコールド項目の必要な数が 0 に設定される場合です。 これにより、テスト セット内のすべてのエンティティがトレーニング セットに含まれることになります。

こちらもご覧ください

データパーティションの分割と分割