機械学習のアプローチ
機械学習アプローチは、膨大なデータをマッチングさせたい場合に便利です。
モデルに学習させてマッチングを予測させれば、データマッチングのプロセスを自動化できます。
データマッチングのプロセス
古典的アプローチと比較すると、機械学習アプローチには次のような利点があります。
- 異なるブロッキングメカニズムにより、より高速でスケーラブルな計算が可能になります。機械学習アプローチの場合、ブロッキングは分割ではありません。1つのレコードがさまざまなブロックに属することもあり、ブロックのサイズも明確に区切られています。ただし、tGenKeyコンポーネントではそうではありません。
- 機械学習モデルによって学ばれ、保存されるルールは、人間が設計したマッチングルールよりもはるかに複雑でありながら恣意性は抑えられます。
- コンポーネントの設定はさらにシンプルです。機械学習モデルは特にマッチング距離や類似度のしきい値などを自動的に学習します。

- 最初のステップでは、tMatchPairingコンポーネントを使ってデータセットを事前分析します。このtMatchPairing コンポーネントによって、一意レコード、完全マッチングレコード、疑わしいマッチペア、疑わしいマッチペアのサンプルが出力されます。
その他の例は、疑わしいペアを作成してTalend Data Stewardshipにサンプルを書き込むと ソースデータの疑わしいペアと疑わしいサンプルを計算をご覧ください。
- 2番目のステップは、サンプルからの疑わしいマッチペアを "match" または "no-match" として手動でラベル付けすることです。ラベル付けの作業ではTalend Data Stewardshipを活用できます。
たとえば"match"、"possible match"、"different"など、2つ以上のクラスを使用できます。
Talend Data Stewardshipでレコードのペア間のリレーションシップを決定するグルーピングタスクの処理については、Talend Data Stewardshipの例をご覧ください。
- 3番目のステップは、ラベル付けした疑わしいマッチペアをtMatchModelコンポーネントに送信して分類子モデルを学習、および出力することです。
マッチングするモデルを生成するサンプルは、このシナリオをご覧ください。
- 4 番目のステップは、tMatchModelで計算されたモデルをtMatchPredictコンポーネントで使用し、大規模なデータセットの疑わしいペアを自動的にラベル付けすることです。
サスペクトペアに割り当て済みのラベルを付けるサンプルは、このシナリオをご覧ください。
よいサンプルとは
サンプルはバランスが取れていることが必要です。つまり、各クラス("match" と "no match")のレコード数がほぼ同じであることが必要です。データサンプルのバランスが悪いと、生成されるモデルが不完全なものになります。
また、サンプルが多様であることも大切です。サンプルの例が多様であればあるほど、モデルが学習したルールもより効果的になります。
そして、サンプルが適切なサイズであることです。数百万件のレコードが含まれる大規模なデータセットの場合は、数百から数千件のサンプルで十分かもしれません。データセットのレコード数が10,000レコード未満であれば、サンプルサイズはフルデータセットの1~10%であることが必要です。
tMatchModelがモデルを生成するしくみ
定義されたカラムについて可能な限り多くの情報が得られるよう、機械学習アルゴリズムでは特徴量と呼ばれるさまざまなメジャーが計算されます。
モデルを生成するため、tMatchModelはランダムフォレストアルゴリズムを使ってデータを解析します。ランダムフォレストとは、分類問題解決のために使用されるデシジョンツリーのコレクションのことです。デシジョンツリーの各ノードは、入力データに関連付けられた特徴量に関する質問に対応しています。ランダムフォレストは、デシジョンツリーを成長させることによって分類の精度を向上させてモデルを生成します。
Apache Sparkでのデータマッチングの詳細は、tMatchModelのプロパティをご参照ください。