AWS Glue での機械学変換の調整 - AWS Glue

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

AWS Glue での機械学変換の調整

AWS Glue で機械学習変換を調整することで、目的に応じてデータクレンジングジョブの結果を改善できます。変換を改善するには、変換をトレーニングします。そのためには、ラベリングセットを生成し、ラベルを追加します。これらのステップを、目的の結果が得られるまで何回も繰り返します。いくつかの機械学習パラメータを変更することで調整することもできます。

機械学習変換の詳細については、「AWS Lake Formation の FindMatches によるレコードのマッチング」を参照してください。

機械学習の測定

機械学習変換の調整に使用する測定を理解するには、以下の用語を理解しておく必要があります。

真陽性 (TP)

変換が正しく検出したデータ内の一致。ヒットとも呼ばれます。

真陰性 (TN)

変換が正しく拒否したデータ内の不一致。

偽陽性 (FP)

変換が誤って一致として分類したデータ内の不一致。誤警告とも呼ばれます。

偽陰性 (FN)

変換が検出しなかったデータ内の一致。 ミスとも呼ばれます。

機械学習で使用される用語の詳細については、Wikipedia の「混同行列」を参照してください。

機械学習変換を調整するには、変換の [詳細プロパティ] で以下の測定値を変更できます。

  • 適合率は、変換が真陽性候補の総数から真陽性を実際に見つける割合を測定します。詳細については、Wikipedia の「適合率と再現率」を参照してください。

  • 再現率は、変換がソースデータのレコード総数から真陽性を見つける割合を測定します。詳細については、Wikipedia の「適合率と再現率」を参照してください。

  • 精度は、変換が真陽性と真陰性を見つける割合を測定します。精度を高めるには、マシンリソースとコストを増やす必要があります。ただし、再現率も高くなります。詳細については、Wikipedia の「適合率と再現率」を参照してください。

  • コストは、変換を実行するために消費されるコンピューティングリソースの数およびそれに伴う金額を測定します。

適合率と再現率のトレードオフ

FindMatches 変換には、precision-recall パラメータが含まれています。このパラメータを使用して、次のいずれかを指定します。

  • 変換の結果で、2 つのレコードが誤って一致すると報告され、実際には一致していない場合は、適合率を高めます。

  • 変換の結果で、2 つのレコードが実際には一致しているにもかかわらず、一致として検出されない場合は、再現率を高めます。

このトレードオフを行うには、AWS Glue コンソールまたは AWS Glue 機械学習 API オペレーションを使用できます。

適合率を優先する場合

FindMatches で実際には一致しないレコードのペアが一致と見なされるリスクに対処するには、適合率を優先します。適合率を優先するには、適合率-再現率トレードオフのより高い値を選択します。値を高くするほど、FindMatches 変換でレコードのペアを一致と見なす根拠がさらに必要となります。変換は調整されて、レコードのペアが一致しないと判断する傾向が強化されます。

たとえば、FindMatches を使用してビデオカタログ内の重複する商品を検出する際に、適合率-再現率のより高い値を変換に指定したとします。変換で「スターウォーズ: 新たなる希望」と「スターウォーズ: 帝国の逆襲」が誤って同じものとして検出された場合、「新たなる希望」を欲しい利用者に「帝国の逆襲」が提供される可能性があります。これは、カスタマーエクスペリエンスを悪化させることになります。

一方、変換で「スターウォーズ: 新たなる希望」と「スターウォーズ エピソード 4/新たなる希望」が同じ商品として検出されない場合、利用者は最初は混乱するとしても、最終的には同じものとして認識する可能性があります。これは誤検出ではあっても、前の例ほど深刻ではありません。

再現率を優先する場合

FindMatches 変換の結果で、実際には一致するレコードのペアが一致として検出されないリスクに対処するには、再現率を優先します。再現率を優先するには、適合率-再現率トレードオフのより低い値を選択します。値を低くするほど、FindMatches 変換でレコードのペアを一致と見なす根拠が少なくて済みます。変換は調整されて、レコードのペアが一致すると判断する傾向が強化されます。

たとえば、これはセキュリティを重視する組織で優先される場合があります。利用者を詐欺行為者のリストと照合する場合、利用者が詐欺行為者であるかどうかを判断することが重要です。FindMatches を使用して利用者リストと詐欺行為者リストを照合するとします。FindMatches において 2 つのリスト間で一致が検出されるたびに、該当する利用者が実際に詐欺行為者であるかどうかを人間の監査担当者が確認します。このような組織では、適合率よりも再現率を優先できます。つまり、利用者が実際に詐欺行為者リストに該当することを見逃すよりは、利用者が詐欺行為者ではないことを監査担当者が手動で確認して除外することを優先します。

適合率と再現率の両方を優先する方法

適合率と再現率の両方を改善する最適な方法は、ラベル付けするデータを増やすことです。より多くのデータをラベル付けすると、FindMatches 変換全体の精度が向上するため、適合率と再現率の両方が向上します。ただし、最も正確な変換であっても、適合率の優先、再現率の優先、または中間値の選択を試す必要があるグレー領域が常に存在します。

精度とコストのトレードオフ

FindMatches 変換には、accuracy-cost パラメータが含まれています。このパラメータを使用して、次のいずれかを指定できます。

  • 変換で 2 つのレコードの一致が正確に報告されることをより重視する場合は、精度を強調します。

  • 変換を実行するコストまたはスピードをより重視する場合は、より低いコストを強調します。

このトレードオフを行うには、AWS Glue コンソールまたは AWS Glue 機械学習 API オペレーションを使用できます。

精度を優先する場合

find matches の結果に一致が含まれないリスクに対処するには、精度を優先します。精度を優先するには、精度-コストトレードオフのより高い値を選択します。値が高いほど、FindMatches 変換でレコードを正しく一致させるために、より詳細な検索を行う時間を増やす必要があります。このパラメータは、一致しないレコードのペアを誤って一致と判断する可能性を減らすものではありません。変換は調整されて、一致の検索に費やす時間が増加されます。

コストを優先する場合

一致の検索数よりも find matches 変換を実行するコストをより重視する場合は、コストを優先します。コストを優先するには、精度-コストトレードオフのより低い値を選択します。値を低くするほど、 FindMatches 変換で実行する必要があるリソース数が減ります。一致の検索数を減らすように、変換が調整されます。より低いコストを優先したときの結果が許容できるものであれば、この設定を使用します。

精度とより低いコストの両方を優先する方法

レコードが一致するかどうかを判断するためにより多くのレコードのペアを調査するには、より多くのマシン時間が必要になります。品質を下げずにコストを削減するには、以下を実行できます。

  • 一致の対象としないレコードをデータソースから除外します。

  • 一致/不一致の判断に役立たないことが確実な列をデータソースから除外します。これを決める適切な方法としては、一連のレコードが「同じ」であるかどうかの判断に影響しないと思われる列を除外します。

「一致の検索」変換のトレーニング

一致と不一致を見分けられるように各 FindMatches 変換をトレーニングする必要があります。変換をトレーニングするには、ファイルにラベルを追加して選択結果を AWS Glue にアップロードします。

このラベル付けは、AWS Glue コンソールまたは AWS Glue 機械学習 API オペレーションを使用して調整できます。

ラベルを追加する回数は? 必要なラベルの数は?

これらの質問に対する回答は、主にユーザーが決定します。FindMatches で必要な精度レベルを達成できるかどうか、さらにラベル付けの作業を追加するメリットがあるかどうかは、ユーザーが評価する必要があります。これを決定する最善の方法としては、AWS Glue コンソールで [Estimate quality (品質の推定)] を選択して生成できる「適合率」、「再現率」、「適合率/再現率曲線の下の面積」の各メトリクスを確認します。さらに多くのタスクセットにラベル付けをしたら、これらのメトリクスを再実行して結果が改善されたかどうかを確認します。いくつかのタスクセットをラベル付けをした後で、注目しているメトリクスに改善が見られなかった場合、変換の品質はそれ以上向上しない状態に達している可能性があります。

真陽性と真陰性の両方のラベルが必要な理由は?

FindMatches 変換は、ユーザーが何を一致と見なしているかを学習するために真陽性と真陰性の両方のサンプルを必要とします。FindMatches で生成されるトレーニングデータ ([I do not have labels (ラベルがありません)] オプションなどを使用した場合) にラベル付けを行う場合、FindMatches はユーザーに代わって「ラベルセット ID」を生成しようとします。各タスク内で、一部のレコードに同じ「ラベル」を付け、他のレコードに異なる「ラベル」を付けます。つまり、通常、タスクがすべて同じものであったり、すべて異なるものであったりすることはありません (ただし、特定のタスク内のレコードがすべて「同じ」ものであったり、すべて「異なる」ものであったりすることは問題ありません)。

[Upload labels from S3 (S3 からラベルをアップロード)] オプションを使用して FindMatches 変換をトレーニングする場合は、一致するレコードと一致しないレコードの両方のサンプルを含めるようにします。1 つのタイプのみを使用することもできます。これらのラベルはより正確な FindMatches 変換の構築に役立ちますが、[Generate labeling file (ラベリングファイルの生成)] オプションを使用して生成する一部のレコードには依然としてラベル付けを行う必要があります。

どうしたら、ユーザーがトレーニングしたとおりのマッチングを変換に実行させることができるか?

FindMatches 変換は、ユーザーが指定したラベルから学習するため、指定したラベルを優先しないレコードのペアが生成される場合があります。ユーザーのラベルを優先するように FindMatches 変換を強制するには、 [FindMatchesParameter] の [EnforceProvidedLabels] を選択します。

ML 変換が真の一致ではない項目を一致として識別した場合の対策は?

以下の対策を実行できます。

  • precisionRecallTradeoff の値をより高くします。これにより、検出される一致の数が減りますが、十分に高い値に達すると、大きなクラスターの分割も行われます。

  • 不正確な結果に対応する出力行を取得し、これらの行をラベリングセットとして再フォーマットします (match_id 列を削除し、labeling_set_id 列および label 列を追加します)。必要に応じて、複数のラベリングセットに分割 (再分割) し、ラベラーが各ラベリングセットに留意しながらラベルの割り当てができるようにします。次に、一致するセットに正しくラベル付けを行い、ラベルファイルをアップロードして既存のラベルに付加します。これにより、パターンを理解するためにどのようなデータが必要であるかについてトランスフォーマーが十分にトレーニングされます。

  • (高度) 最後に、そのデータを確認し、システムが気付いていないパターンを検出できるかどうかを判断します。標準の AWS Glue 関数を使用してそのデータを事前処理し、データを正規化します。データの種類が十分に異なることが判明している場合は、データを種類別に分離し、アルゴリズムに学習させるデータを明確にします。または、複数の列のデータが関連していることが判明している場合は、これらの列を結合します。